From 2f591f89d2b9c194cbcd18af3e5304fffee8d51b Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Sat, 1 Dec 2012 14:43:04 +0100 Subject: [PATCH 001/310] First Implementation of SongType support in Playlists (needs libechonest from https://github.com/Horrendus/libechonest) --- .../dynamic/echonest/EchonestControl.cpp | 39 +++++++++++++++++++ .../dynamic/echonest/EchonestGenerator.cpp | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index d9983b8465..e199c6cc9d 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -441,6 +441,28 @@ Tomahawk::EchonestControl::updateWidgets() m_input = QWeakPointer< QWidget >( combo ); insertMoodsAndStyles(); + } else if( selectedType() == "Song Type" ) { + m_currentType = Echonest::DynamicPlaylist::SongType; + + QComboBox* match = new QComboBox(); + match->addItem( tr( "is" ), 1 ); + match->addItem( tr( "is not" ), 0 ); + + QComboBox* combo = new QComboBox(); + combo->addItem( tr( "Christmas" ), "christmas" ); + combo->addItem( tr( "Studio" ), "studio" ); + combo->addItem( tr( "Live" ), "live" ); + + connect( match, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); + connect( match, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); + connect( combo, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); + connect( combo, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); + + m_matchString = match->currentText(); + m_matchData = match->currentText(); + + m_match = QWeakPointer< QWidget >( match ); + m_input = QWeakPointer< QWidget >( combo ); } else { m_match = QWeakPointer( new QWidget ); m_input = QWeakPointer( new QWidget ); @@ -522,6 +544,23 @@ Tomahawk::EchonestControl::updateData() m_data.second = enumVal; // qDebug() << "SAVING" << input->currentIndex() << "AS" << enumVal << "(" << input->itemData( input->currentIndex() ).toInt() << "+" << m_matchData.toInt() << ")"; } + } else if( selectedType() == "Song Type" ) { + QComboBox* match = qobject_cast( m_match.data() ); + QComboBox* input = qobject_cast< QComboBox* >( m_input.data() ); + if ( match && input ) { + m_matchString = match->currentText(); + m_matchData = match->itemData( match->currentIndex() ).toString(); + + QString songType = input->currentText().toLower(); + if ( match->currentText() == "is not" ) + songType.append(":false"); + + qDebug() << "ST: " << songType; + + m_data.first = Echonest::DynamicPlaylist::SongType; + m_data.second = songType; + } + } calculateSummary(); diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp index e581d7aff8..61e648188b 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp @@ -65,7 +65,7 @@ EchonestFactory::typeSelectors() const { QStringList types = QStringList() << "Artist" << "Artist Description" << "User Radio" << "Song" << "Mood" << "Style" << "Adventurousness" << "Variety" << "Tempo" << "Duration" << "Loudness" << "Danceability" << "Energy" << "Artist Familiarity" << "Artist Hotttnesss" << "Song Hotttnesss" - << "Longitude" << "Latitude" << "Mode" << "Key" << "Sorting"; + << "Longitude" << "Latitude" << "Mode" << "Key" << "Sorting" << "Song Type"; return types; } From f43fd2b3835662f6376b4b6eda7882845face051 Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Sun, 2 Dec 2012 22:53:13 +0100 Subject: [PATCH 002/310] Added correct Widget Update after Startup & Summary Text for Song Type Support --- .../dynamic/echonest/EchonestControl.cpp | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index e199c6cc9d..f40327ffbb 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -449,17 +449,17 @@ Tomahawk::EchonestControl::updateWidgets() match->addItem( tr( "is not" ), 0 ); QComboBox* combo = new QComboBox(); - combo->addItem( tr( "Christmas" ), "christmas" ); combo->addItem( tr( "Studio" ), "studio" ); combo->addItem( tr( "Live" ), "live" ); + combo->addItem( tr( "Christmas" ), "christmas" ); connect( match, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( match, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); connect( combo, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( combo, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); - m_matchString = match->currentText(); - m_matchData = match->currentText(); + m_matchString = "is"; + m_matchData = 1; m_match = QWeakPointer< QWidget >( match ); m_input = QWeakPointer< QWidget >( combo ); @@ -546,17 +546,15 @@ Tomahawk::EchonestControl::updateData() } } else if( selectedType() == "Song Type" ) { QComboBox* match = qobject_cast( m_match.data() ); - QComboBox* input = qobject_cast< QComboBox* >( m_input.data() ); - if ( match && input ) { + QComboBox* combo = qobject_cast< QComboBox* >( m_input.data() ); + if ( match && combo ) { m_matchString = match->currentText(); m_matchData = match->itemData( match->currentIndex() ).toString(); - QString songType = input->currentText().toLower(); + QString songType = combo->currentText().toLower(); if ( match->currentText() == "is not" ) songType.append(":false"); - qDebug() << "ST: " << songType; - m_data.first = Echonest::DynamicPlaylist::SongType; m_data.second = songType; } @@ -650,6 +648,15 @@ Tomahawk::EchonestControl::updateWidgetsFromData() input->setCurrentIndex( val ); // qDebug() << "LOADING" << m_data.second.toInt() << "AS" << val; } + } else if( selectedType() == "Song Type" ) { + QComboBox* match = qobject_cast( m_match.data() ); + QComboBox* combo = qobject_cast< QComboBox* >( m_input.data() ); + if ( match && combo ) { + match->setCurrentIndex( match->findData( m_matchData )); + + QString songType = m_data.second.toString().split(":").at(0); + combo->setCurrentIndex( combo->findData( songType ) ); + } } calculateSummary(); } @@ -862,6 +869,19 @@ Tomahawk::EchonestControl::calculateSummary() Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString text = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); summary = tr( "in a %1 style" ).arg( text ); + } else if( selectedType() == "Song Type" ) { + Q_ASSERT( !m_input.isNull() ); + Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); + QString text = qobject_cast< QComboBox* >( m_input.data() )->currentText(); + + + Q_ASSERT( !m_match.isNull() ); + Q_ASSERT( qobject_cast< QComboBox* >( m_match.data() ) ); + QString isOrIsNot = qobject_cast< QComboBox* >( m_match.data() )->currentText().toLower(); + if ( isOrIsNot == "is" ) + summary = tr( "where Song Type is %1" ).arg( text ); + else + summary = tr( "where Song Type is not %1" ).arg( text ); } m_summary = summary; } From b81e4410eaf429d1b33ee0c6ccdf7c9ab5fe5fc7 Mon Sep 17 00:00:00 2001 From: Lasse Liehu Date: Fri, 21 Dec 2012 03:47:50 +0200 Subject: [PATCH 003/310] 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 9f0283ebff..a254e8fd29 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 d8f9e03b11..2889ce63c8 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 bcf50b32a2..28c1486029 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 d4e09ac614..5eb342d294 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 291557c295..439f19b9f9 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 9a3db47017..6b58515e3c 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 77a0ccb825..5864ebe722 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 8a40e3cacf..8da42e4b55 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 ec85e91825b2acf4c891bde916678fd781b3d23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Lindstr=C3=B6m?= Date: Fri, 21 Dec 2012 11:22:13 +0100 Subject: [PATCH 004/310] Spotify: Sync Starred tracks to Loved tracks --- .../accounts/spotify/SpotifyAccount.cpp | 32 ++++++++++++++++++- .../accounts/spotify/SpotifyAccount.h | 10 +++--- .../accounts/spotify/SpotifyAccountConfig.cpp | 13 ++++++++ .../accounts/spotify/SpotifyAccountConfig.h | 1 + .../accounts/spotify/SpotifyAccountConfig.ui | 13 ++++++++ 5 files changed, 63 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index f7b11d8c51..4c955efb7f 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -902,6 +902,19 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg updater->spotifyTracksMoved( tracksList, newStartPos, newRev, oldRev ); } + else if ( msgType == "starredChanged" ) + { + if( loveSync() ) + { + const QVariantList tracksList = msg.value( "tracks" ).toList(); + const bool love = msg.value( "starred" ).toBool(); + QList qs = SpotifyPlaylistUpdater::variantToQueries( tracksList ); + foreach( const query_ptr& query, qs ) + { + query->setLoved( love ); + } + } + } else if ( msgType == "playlistMetadataChanged" ) { const QString plid = msg.value( "id" ).toString(); @@ -1114,6 +1127,7 @@ SpotifyAccount::saveConfig() QVariantHash config = configuration(); config[ "deleteOnUnsync" ] = m_configWidget.data()->deleteOnUnsync(); + config[ "loveSync" ] = m_configWidget.data()->loveSync(); setConfiguration( config ); m_configWidget.data()->saveSettings(); @@ -1123,7 +1137,15 @@ SpotifyAccount::saveConfig() if ( pl->changed ) { pl->changed = false; - if ( pl->sync ) + if( !pl->sync && pl->loveSync ) + { + QVariantMap msg; + msg[ "_msgtype" ] = "setSync"; + msg[ "playlistid" ] = pl->plid; + msg[ "sync" ] = pl->loveSync; + sendMessage( msg ); + } + else if ( pl->sync ) { // Fetch full playlist contents, then begin the sync startPlaylistSync( pl ); @@ -1355,6 +1377,14 @@ SpotifyAccount::deleteOnUnsync() const return configuration().value( "deleteOnUnsync", false ).toBool(); } + +bool +SpotifyAccount::loveSync() const +{ + return configuration().value( "loveSync", false ).toBool(); +} + + void SpotifyAccount::stopPlaylistSync( SpotifyPlaylistInfo* playlist, bool forceDontDelete ) { diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.h b/src/libtomahawk/accounts/spotify/SpotifyAccount.h index afc4ee3cc9..e3bf35965d 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.h @@ -51,13 +51,13 @@ class SpotifyAccountConfig; // metadata for a playlist struct SpotifyPlaylistInfo { QString name, plid, revid; - bool sync, subscribed, changed, isOwner; + bool sync, subscribed, changed, isOwner, loveSync; - SpotifyPlaylistInfo( const QString& nname, const QString& pid, const QString& rrevid, bool ssync, bool ssubscribed, bool isowner = false ) - : name( nname ), plid( pid ), revid( rrevid ), sync( ssync ), subscribed( ssubscribed ), changed( false ), isOwner( isowner ) {} + SpotifyPlaylistInfo( const QString& nname, const QString& pid, const QString& rrevid, bool ssync, bool ssubscribed, bool isowner = false, bool lovesync = false ) + : name( nname ), plid( pid ), revid( rrevid ), sync( ssync ), subscribed( ssubscribed ), changed( false ), isOwner( isowner ), loveSync( lovesync ) {} - SpotifyPlaylistInfo() : sync( false ), changed( false ) {} + SpotifyPlaylistInfo() : sync( false ), changed( false ), loveSync( false ) {} }; @@ -109,7 +109,7 @@ class DLLEXPORT SpotifyAccount : public CustomAtticaAccount void unregisterUpdater( const QString& plid ); bool deleteOnUnsync() const; - + bool loveSync() const; void setManualResolverPath( const QString& resolverPath ); bool loggedIn() const; diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp index 09ce54add8..5ff1ea2789 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp @@ -77,6 +77,7 @@ SpotifyAccountConfig::loadFromConfig() m_ui->passwordEdit->setText( m_account->credentials().value( "password" ).toString() ); m_ui->streamingCheckbox->setChecked( m_account->credentials().value( "highQuality" ).toBool() ); m_ui->deleteOnUnsync->setChecked( m_account->deleteOnUnsync() ); + m_ui->loveSync->setChecked( m_account->loveSync() ); if ( m_account->loggedIn() ) { @@ -103,6 +104,11 @@ SpotifyAccountConfig::saveSettings() pl->changed = true; pl->sync = toSync; } + if ( pl->name == "Starred Tracks" && pl->loveSync != loveSync() ) + { + pl->loveSync = loveSync(); + pl->changed = true; + } } } @@ -133,6 +139,13 @@ SpotifyAccountConfig::deleteOnUnsync() const } +bool +SpotifyAccountConfig::loveSync() const +{ + return m_ui->loveSync->isChecked(); +} + + void SpotifyAccountConfig::setPlaylists( const QList& playlists ) { diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h index 1080d2a707..c3eeb2267c 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h @@ -50,6 +50,7 @@ class SpotifyAccountConfig : public QWidget QString password() const; bool highQuality() const; bool deleteOnUnsync() const; + bool loveSync() const; void setPlaylists( const QList< SpotifyPlaylistInfo* >& playlists ); diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui index 129d8a1299..8eb3e55f5b 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui @@ -145,6 +145,19 @@ + + + + Qt::LeftToRight + + + Sync Starred tracks to Loved tracks + + + false + + + From e3f5d1ade6d3fb5bc6530bac7169de4bd1126162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Lindstr=C3=B6m?= Date: Fri, 21 Dec 2012 11:24:54 +0100 Subject: [PATCH 005/310] style fix --- src/libtomahawk/accounts/spotify/SpotifyAccount.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index 4c955efb7f..9818e398d2 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -904,12 +904,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg } else if ( msgType == "starredChanged" ) { - if( loveSync() ) + if ( loveSync() ) { const QVariantList tracksList = msg.value( "tracks" ).toList(); const bool love = msg.value( "starred" ).toBool(); QList qs = SpotifyPlaylistUpdater::variantToQueries( tracksList ); - foreach( const query_ptr& query, qs ) + foreach ( const query_ptr& query, qs ) { query->setLoved( love ); } @@ -1137,7 +1137,7 @@ SpotifyAccount::saveConfig() if ( pl->changed ) { pl->changed = false; - if( !pl->sync && pl->loveSync ) + if ( !pl->sync && pl->loveSync ) { QVariantMap msg; msg[ "_msgtype" ] = "setSync"; From c8808012f1d3512d990ae857415e8e9cff66c50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Lindstr=C3=B6m?= Date: Fri, 21 Dec 2012 16:34:00 +0100 Subject: [PATCH 006/310] On Un/Love, star in spotify --- .../accounts/spotify/SpotifyAccount.cpp | 12 ++++ .../accounts/spotify/SpotifyAccount.h | 3 +- .../accounts/spotify/SpotifyInfoPlugin.cpp | 65 +++++++++++++++++-- .../accounts/spotify/SpotifyInfoPlugin.h | 4 +- 4 files changed, 73 insertions(+), 11 deletions(-) diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index 9818e398d2..5cf9ee94e1 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -414,6 +414,18 @@ SpotifyAccount::setManualResolverPath( const QString &resolverPath ) } } +void +SpotifyAccount::starTrack(const QString &artist, const QString &title, const bool starred) +{ + qDebug() << Q_FUNC_INFO << artist << title << starred; + QVariantMap msg; + msg[ "_msgtype" ] = "setStarred"; + msg[ "starred" ] = starred; + msg[ "artist" ] = artist; + msg[ "title" ] = title; + sendMessage( msg ); +} + bool SpotifyAccount::loggedIn() const diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.h b/src/libtomahawk/accounts/spotify/SpotifyAccount.h index e3bf35965d..4e252f3c76 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.h @@ -110,6 +110,7 @@ class DLLEXPORT SpotifyAccount : public CustomAtticaAccount bool deleteOnUnsync() const; bool loveSync() const; + void starTrack(const QString& artist, const QString&title, const bool starred); void setManualResolverPath( const QString& resolverPath ); bool loggedIn() const; @@ -139,13 +140,11 @@ private slots: void playlistCopyCreated( const QString& msgType, const QVariantMap& msg, const QVariant& extraData ); void delayedInit(); void hookupAfterDeletion( bool autoEnable ); - private: void init(); bool checkForResolver(); void hookupResolver(); void killExistingResolvers(); - void loadPlaylists(); void clearUser( bool permanentlyDelete = false ); diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp index 87697c02fb..60872a9cc4 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp @@ -20,6 +20,7 @@ #include "SpotifyAccount.h" #include "utils/Closure.h" +#include "utils/Logger.h" using namespace Tomahawk; using namespace Tomahawk::InfoSystem; @@ -30,7 +31,10 @@ SpotifyInfoPlugin::SpotifyInfoPlugin( Accounts::SpotifyAccount* account ) , m_account( QWeakPointer< Accounts::SpotifyAccount >( account ) ) { if ( !m_account.isNull() ) + { m_supportedGetTypes << InfoAlbumSongs; + m_supportedPushTypes << InfoLove << InfoUnLove; + } } @@ -39,6 +43,53 @@ SpotifyInfoPlugin::~SpotifyInfoPlugin() } +void +SpotifyInfoPlugin::pushInfo( Tomahawk::InfoSystem::InfoPushData pushData ) +{ + if ( m_account.isNull() || !m_account.data()->loggedIn() ) + return; + + switch ( pushData.type ) + { + case InfoLove: + case InfoUnLove: + sendLoveSong(pushData.type, pushData.infoPair.second); + break; + + default: + return; + } +} + +void +SpotifyInfoPlugin::sendLoveSong( const InfoType type, QVariant input ) +{ + + if ( m_account.isNull() || !m_account.data()->loggedIn() ) + return; + + if( !m_account.data()->loveSync() ) + return; + + if ( !input.toMap().contains( "trackinfo" ) || !input.toMap()[ "trackinfo" ].canConvert< Tomahawk::InfoSystem::InfoStringHash >() ) + { + tLog( LOGVERBOSE ) << "SpotifyInfoPlugin::sendLoveSong cannot convert input!"; + return; + } + + InfoStringHash hash = input.toMap()[ "trackinfo" ].value< Tomahawk::InfoSystem::InfoStringHash >(); + if ( !hash.contains( "title" ) || !hash.contains( "artist" ) || !hash.contains( "album" ) ) + return; + + if ( type == Tomahawk::InfoSystem::InfoLove ) + { + m_account.data()->starTrack( hash["artist"], hash["title"], true ); + } + else if ( type == Tomahawk::InfoSystem::InfoUnLove ) + { + m_account.data()->starTrack( hash["artist"], hash["title"], false ); + } +} void SpotifyInfoPlugin::getInfo( InfoRequestData requestData ) @@ -97,7 +148,7 @@ SpotifyInfoPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ else { // Running resolver, so do the lookup through that - qDebug() << Q_FUNC_INFO << "Doing album lookup through spotify:" << album << artist; + tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Doing album lookup through spotify:" << album << artist; QVariantMap message; message[ "_msgtype" ] = "albumListing"; message[ "artist" ] = artist; @@ -138,7 +189,7 @@ SpotifyInfoPlugin::albumListingResult( const QString& msgType, const QVariantMap trackNameList << trackData[ "track" ].toString(); } - qDebug() << Q_FUNC_INFO << "Successfully got album listing from spotify resolver"; + tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Successfully got album listing from spotify resolver"; trackListResult( trackNameList, requestData ); } @@ -171,12 +222,12 @@ SpotifyInfoPlugin::albumIdLookupFinished( QNetworkReply* reply, const InfoReques const QString id = album.value( "href" ).toString(); if ( id.isEmpty() || !id.contains( "spotify:album" ) ) { - qDebug() << "Empty or malformed spotify album ID from json:" << id << response; + tLog( LOGVERBOSE ) << "Empty or malformed spotify album ID from json:" << id << response; dataError( requestData ); return; } - qDebug() << "Doing spotify album lookup via webservice with ID:" << id; + tLog( LOGVERBOSE ) << "Doing spotify album lookup via webservice with ID:" << id; QUrl lookupUrl( QString( "http://spotikea.tomahawk-player.org/browse/%1" ).arg( id ) ); @@ -186,7 +237,7 @@ SpotifyInfoPlugin::albumIdLookupFinished( QNetworkReply* reply, const InfoReques } else { - qDebug() << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); + tLog( LOGVERBOSE ) << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); } } @@ -226,7 +277,7 @@ SpotifyInfoPlugin::albumContentsLookupFinished( QNetworkReply* reply, const Info trackNameList << trackMap.value( "title" ).toString(); } - qDebug() << Q_FUNC_INFO << "Successfully got album listing from spotikea service!"; + tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Successfully got album listing from spotikea service!"; if ( trackNameList.isEmpty() ) dataError( requestData ); @@ -235,7 +286,7 @@ SpotifyInfoPlugin::albumContentsLookupFinished( QNetworkReply* reply, const Info } else { - qDebug() << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); + tLog( LOGVERBOSE ) << "Network Error retrieving ID from spotify metadata service:" << reply->error() << reply->errorString() << reply->url(); } } diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h index 97c0b96ad4..26757cac24 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h @@ -52,7 +52,7 @@ protected slots: virtual void init() {} virtual void getInfo( Tomahawk::InfoSystem::InfoRequestData requestData ); virtual void notInCacheSlot( Tomahawk::InfoSystem::InfoStringHash criteria, Tomahawk::InfoSystem::InfoRequestData requestData ); - virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData ) {} + virtual void pushInfo( Tomahawk::InfoSystem::InfoPushData ); private slots: void albumIdLookupFinished( QNetworkReply* reply, const Tomahawk::InfoSystem::InfoRequestData& requestData ); @@ -61,7 +61,7 @@ private slots: private: void dataError( InfoRequestData ); void trackListResult( const QStringList& trackNameList, const Tomahawk::InfoSystem::InfoRequestData& requestData ); - + void sendLoveSong( const InfoType type, QVariant input ); QWeakPointer< Tomahawk::Accounts::SpotifyAccount > m_account; }; From af8627b2100f097faa249569d4a2d2f33446a5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Lindstr=C3=B6m?= Date: Fri, 21 Dec 2012 21:08:32 +0100 Subject: [PATCH 007/310] Prevent Assert --- src/libtomahawk/accounts/spotify/SpotifyAccount.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index 5cf9ee94e1..b648fd4dc1 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -863,6 +863,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg return; SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; + + // We have previously sycned starred container, but not anymore. + // If we added loveSync, its synced in the background + if( !updater->sync() && m_configWidget.data()->loveSync() ) + return; + Q_ASSERT( updater->sync() ); const QString startPos = msg.value( "startPosition" ).toString(); @@ -1149,6 +1155,7 @@ SpotifyAccount::saveConfig() if ( pl->changed ) { pl->changed = false; + if ( !pl->sync && pl->loveSync ) { QVariantMap msg; @@ -1156,8 +1163,10 @@ SpotifyAccount::saveConfig() msg[ "playlistid" ] = pl->plid; msg[ "sync" ] = pl->loveSync; sendMessage( msg ); + } - else if ( pl->sync ) + + if ( pl->sync ) { // Fetch full playlist contents, then begin the sync startPlaylistSync( pl ); From fdd4bc8f3f662aafbbec3355e16b9a81df700151 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sat, 22 Dec 2012 01:17:15 +0100 Subject: [PATCH 008/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 45 +++++++++++++------- lang/tomahawk_bg.ts | 89 +++++++++++++++++++++----------------- lang/tomahawk_bn_IN.ts | 45 +++++++++++++------- lang/tomahawk_ca.ts | 45 +++++++++++++------- lang/tomahawk_de.ts | 45 +++++++++++++------- lang/tomahawk_el.ts | 45 +++++++++++++------- lang/tomahawk_en.ts | 45 +++++++++++++------- lang/tomahawk_es.ts | 45 +++++++++++++------- lang/tomahawk_fi.ts | 47 ++++++++++++-------- lang/tomahawk_fr.ts | 45 +++++++++++++------- lang/tomahawk_gl.ts | 45 +++++++++++++------- lang/tomahawk_hi_IN.ts | 45 +++++++++++++------- lang/tomahawk_hu.ts | 45 +++++++++++++------- lang/tomahawk_it.ts | 45 +++++++++++++------- lang/tomahawk_ja.ts | 67 +++++++++++++++++------------ lang/tomahawk_lt.ts | 45 +++++++++++++------- lang/tomahawk_pl.ts | 97 ++++++++++++++++++++++++------------------ lang/tomahawk_pt_BR.ts | 45 +++++++++++++------- lang/tomahawk_ru.ts | 45 +++++++++++++------- lang/tomahawk_sv.ts | 45 +++++++++++++------- lang/tomahawk_tr.ts | 45 +++++++++++++------- lang/tomahawk_zh_CN.ts | 45 +++++++++++++------- lang/tomahawk_zh_TW.ts | 45 +++++++++++++------- 23 files changed, 727 insertions(+), 428 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index ef58431a62..007675a6ae 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -1929,6 +1929,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams جودة عالية في الأغاني المحملة @@ -1938,7 +1943,7 @@ connect and stream from you? قوائم أغاني سبوتيفي (Spotify) التي يجب إبقائها بتزامن: - + Delete Tomahawk playlist when removing synchronization حذف قوائم أغاني توماهوك عند إزالة التزام @@ -2146,47 +2151,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify مزامنة مع سبوتيفي (Spotify) - + Re-enable syncing with Spotify إعادة تمكين المزامنة مع سبوتيفي (Spotify) - + Create local copy إنشاء نسخة محلية - + Subscribe to playlist changes الاشتراك في تغييرات قائمة الأغاني - + Re-enable playlist subscription إعادة تمكين الإشتراك في تغييرات قائمة الأغاني - + Stop subscribing to changes توقيف الإشتراك في التغييرات - + Enable Spotify collaborations تمكين التعاون الخاص بسبوتيفي (Collaborations Spotify) - + Disable Spotify collaborations تعطيل التعاون الخاص بسبوتيفي (Collaborations Spotify) - + Stop syncing with Spotify أوقف المزامنة مع سبوتيفي (Spotify) @@ -2194,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 تسجيل الدخول @@ -3131,6 +3136,14 @@ Try tweaking the filters for a new set of songs to play. خطأ شبكة في تحليل تقصير الرابط! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 18c9d9a4cf..2afd7c3c2a 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -1048,31 +1048,31 @@ Tomahaw създаде доклад относно това и изпращай 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> @@ -1299,13 +1299,13 @@ Tomahaw създаде доклад относно това и изпращай %1 Config - + %1 Настрой %1 Configuration - + %1 Настройки @@ -1727,7 +1727,7 @@ Tomahaw създаде доклад относно това и изпращай SuperCollection - Супер колекция + Обща колекция /Сборен излед от локалните и наличните в колекциите на приятелите ти/ @@ -1937,6 +1937,11 @@ Tomahaw създаде доклад относно това и изпращай + Sync Starred tracks to Loved tracks + Синхронизирай Песни означени със Звезда, като Харесани песни + + + High Quality Streams Високо качество @@ -1946,7 +1951,7 @@ Tomahaw създаде доклад относно това и изпращай Spotify списъци, които да бъдат поддържани обновени: - + Delete Tomahawk playlist when removing synchronization Изтрий запазените списъци, когато бъде премахната синхронизацията @@ -2157,47 +2162,47 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Синхронизирай със Spotify - + Re-enable syncing with Spotify Включи отново синхронизирането със Spotify - + Create local copy Създай локално копие - + Subscribe to playlist changes Получавай актуализации за промяната на списъкът - + Re-enable playlist subscription Поднови получаването на промените на списъкът - + Stop subscribing to changes Спри да получаването на на промени в списъкът - + Enable Spotify collaborations Активирай връзката с Spotify - + Disable Spotify collaborations Деактивирай връзката с Spotify - + Stop syncing with Spotify Спри синхронизацията със Spotify @@ -2205,28 +2210,28 @@ Tomahaw създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... Влизам... - + Failed: %1 Неуспех: %1 - + Logged in as %1 Регистриран като %1 - + Log Out Изход - - + + Log In Влез @@ -2391,7 +2396,7 @@ You may wish to try re-authenticating. Local Network - + Локална мрежа @@ -2399,7 +2404,7 @@ You may wish to try re-authenticating. Local Network - + Локална мрежа @@ -2844,7 +2849,7 @@ Try tweaking the filters for a new set of songs to play. from my radio - + От Моето радио @@ -2854,37 +2859,37 @@ Try tweaking the filters for a new set of songs to play. Variety - + Разнообразие Adventurousness - + Откривателност very low - + Много малко low - + Малко moderate - + Средно high - + Голямо very high - + Много голямо @@ -3119,7 +3124,7 @@ Try tweaking the filters for a new set of songs to play. %n people - + %n човек%n човека @@ -3143,6 +3148,14 @@ Try tweaking the filters for a new set of songs to play. Мрежова грешка при извличане на съкратеният адрес. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Песен '%1' от %2 не може да бъде възпроизведена от отдалечен източник + + Tomahawk::Source @@ -3231,7 +3244,7 @@ enter the displayed PIN number here: Local Network - + Локална мрежа @@ -3455,7 +3468,7 @@ enter the displayed PIN number here: Search for any artist, album or song... - + Търси за всеки Артист, Албум или Песен... @@ -3807,7 +3820,7 @@ You can re-send a sync message at any time simply by sending another tweet using SuperCollection - Супер колекция + Обща колекция /Сборен излед от локалните и наличните в колекциите на приятелите ти/ diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 20421958dc..f7bb61a9dd 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -1935,7 +1940,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2191,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 7086cb098d..81deee2816 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -1927,6 +1927,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Fluxos d'Alta Qualitat @@ -1936,7 +1941,7 @@ connect and stream from you? Llistes de reproducció de Spotify per mantenir sincronitzades: - + Delete Tomahawk playlist when removing synchronization Esborra les llistes de Tomahawk quan es tregui la sincronització @@ -2144,47 +2149,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronitza amb Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Atura la sincronització amb Spotify @@ -2192,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ó @@ -3129,6 +3134,14 @@ Intenteu ajustar els filtres per reproduir noves cançons. Error de la xarxa en analitzar l'enllaç escurçat! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index b128acde37..435fbbcaa9 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -1928,6 +1928,11 @@ erlauben sich mit dir zu verbinden? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Hohe Stream Qualität @@ -1937,7 +1942,7 @@ erlauben sich mit dir zu verbinden? Spotify Listen die du synchronisieren willst: - + Delete Tomahawk playlist when removing synchronization Playlist in Tomahawk löschen wenn Synchronisierung entfernt wird @@ -2145,47 +2150,47 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Mit Spotify synchronisieren - + Re-enable syncing with Spotify Synchronisierung mit Spotify re-aktivieren - + Create local copy Lokale Kopie erstellen - + Subscribe to playlist changes Playlist Änderungen abonnieren - + Re-enable playlist subscription Playlist Abonnement re-aktivieren - + Stop subscribing to changes Abonnement stoppen - + Enable Spotify collaborations Spotify Kollaboration aktivieren - + Disable Spotify collaborations Spotify Kollaboration deaktivieren - + Stop syncing with Spotify Synchronisation beenden @@ -2193,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 @@ -3128,6 +3133,14 @@ Versuch die Filter anzupassen für neue Lieder. Konnte den Kurzlink nicht auflösen! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index d05815e357..4225329019 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -1927,6 +1927,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -1936,7 +1941,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2144,47 +2149,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Συγχρονισμός με Spotify - + Re-enable syncing with Spotify - + Create local copy Δημιουργία τοπικού αντιγράφου - + Subscribe to playlist changes Εγγραφή σε μεταβολές λίστας αναπαραγωγής - + Re-enable playlist subscription Επανενεργοποίηση εγγραφής στην λίστα αναπαραγωγής - + Stop subscribing to changes Διακοπή εγγραφής σε μεταβολές - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Διακοπή συγχρονισμού με Spotify @@ -2192,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 Σύνδεση @@ -3129,6 +3134,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 9356aaecca..4dbe40d7cd 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -1931,6 +1931,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + Sync Starred tracks to Loved tracks + + + High Quality Streams High Quality Streams @@ -1940,7 +1945,7 @@ connect and stream from you? Spotify playlists to keep in sync: - + Delete Tomahawk playlist when removing synchronization Delete Tomahawk playlist when removing synchronization @@ -2148,47 +2153,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sync with Spotify - + Re-enable syncing with Spotify Re-enable syncing with Spotify - + Create local copy Create local copy - + Subscribe to playlist changes Subscribe to playlist changes - + Re-enable playlist subscription Re-enable playlist subscription - + Stop subscribing to changes Stop subscribing to changes - + Enable Spotify collaborations Enable Spotify collaborations - + Disable Spotify collaborations Disable Spotify collaborations - + Stop syncing with Spotify Stop syncing with Spotify @@ -2196,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 @@ -3133,6 +3138,14 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Track '%1' by %2 is not streamable. + + Tomahawk::Source diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 8a5fc8d8b6..dbf4288fc0 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -1931,6 +1931,11 @@ y estaciones basadas en sus gustos personales. + Sync Starred tracks to Loved tracks + + + + High Quality Streams Streams de alta calidad @@ -1940,7 +1945,7 @@ y estaciones basadas en sus gustos personales. Listas de Spotify sincronizadas: - + Delete Tomahawk playlist when removing synchronization Borrar la lista de reproducción de Tomahawk cuando se elimine la sincronización @@ -2148,47 +2153,47 @@ y estaciones basadas en sus gustos personales. Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizar con Spotify - + Re-enable syncing with Spotify Volver a activar la sincronización con Spotify - + Create local copy Crear copia local - + Subscribe to playlist changes Suscribirse a la lista de reproducción - + Re-enable playlist subscription Activar suscripción a la lista de reproducción - + Stop subscribing to changes Dejar de suscribirse - + Enable Spotify collaborations Activar colaboraciones de Spotify - + Disable Spotify collaborations Desactivar colaboraciones de Spotify - + Stop syncing with Spotify Detener la sincronización con Spotify @@ -2196,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 @@ -3133,6 +3138,14 @@ Intente ajustar los filtros para reproducir nuevas canciones. Error en la red al analizar el enlace acortado + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 7a0e69a42d..6df145c1f1 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -1934,6 +1934,11 @@ napsauttamalla hiiren oikealla. + Sync Starred tracks to Loved tracks + Synkronoi tähdellä merkityt kappaleet tykättyihin kappaleisiin + + + High Quality Streams Laadukkaat virrat @@ -1943,7 +1948,7 @@ napsauttamalla hiiren oikealla. Synkronoitavat Spotify-soittolistat: - + Delete Tomahawk playlist when removing synchronization Poista Tomahawkin soittolista, kun synkronointi lopetetaan @@ -2151,47 +2156,47 @@ napsauttamalla hiiren oikealla. Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synkronoi Spotifyn kanssa - + Re-enable syncing with Spotify Ota Spotifyn kanssa synkronointi käyttöön - + Create local copy Luo paikallinen kopio - + Subscribe to playlist changes Tilaa soittolistojen muutokset - + Re-enable playlist subscription Tilaa soittolistojen muutokset uudelleen - + Stop subscribing to changes Lopeta muutosten tilaus - + Enable Spotify collaborations Käytä Spotify-yhteistöitä - + Disable Spotify collaborations Poista Spotify-yhteistyöt käytöstä - + Stop syncing with Spotify Lopeta Spotifyn kanssa synkronointi @@ -2199,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 @@ -2567,7 +2572,7 @@ Muuta suodattimia tai yritä uudelleen. Add some filters above, and press Generate to get started! - Lisää yllä hieman suodattimia, ja sitten aloita painamalla Muodosta! + Lisää yllä hieman suodattimia, ja aloita sitten painamalla Muodosta! @@ -3136,6 +3141,14 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Verkkovirhe jäsennettäessä lyhennettyä linkkiä! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + Kappale ”%1” artistilta %2 ei voida toistaa virtana. + + Tomahawk::Source diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 10f08c89c1..d019035d54 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -1928,6 +1928,11 @@ de se connecter et streamer de vous? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Streaming haute qualité @@ -1937,7 +1942,7 @@ de se connecter et streamer de vous? Liste de lecture Spotify à synchroniser : - + Delete Tomahawk playlist when removing synchronization Supprimer la liste de lecture de Tomahawk à la suppression de la synchronisation @@ -2145,47 +2150,47 @@ de se connecter et streamer de vous? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synchroniser avec Spotify - + Re-enable syncing with Spotify Réactiver la synchronisation avec Spotify - + Create local copy Créer une copie localement - + Subscribe to playlist changes S'abonner aux modifications de la liste de lecture - + Re-enable playlist subscription Réactiver l'abonnement à la liste de lecture - + Stop subscribing to changes Stopper l'abonnement aux modifications - + Enable Spotify collaborations Activer les collaborations Spotify - + Disable Spotify collaborations Désactiver les collaborations Spotify - + Stop syncing with Spotify Stopper la synchronisation avec Spotify @@ -2193,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 @@ -3130,6 +3135,14 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.Erreur réseau lors du décodage de l'URL courte! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 1ed7ed6cfa..464fd2a051 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -1929,6 +1929,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Transmisión de alta calidade @@ -1938,7 +1943,7 @@ connect and stream from you? Listas de reprodución de Spotify para manter en sincronización: - + Delete Tomahawk playlist when removing synchronization Eliminar a lista de reprodución cando se elimine a sincronización @@ -2146,47 +2151,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronización con Spotify - + Re-enable syncing with Spotify Reactivar a sincronización con Spotify - + Create local copy Crear unha copia local - + Subscribe to playlist changes Subscribirse a cambios la lista de reprodución - + Re-enable playlist subscription Reactivar subscrición á lista de reprodución - + Stop subscribing to changes Parar de subscribirse a cambios - + Enable Spotify collaborations Activar as colaboracións con Spotify - + Disable Spotify collaborations Descativar as colaboracións con Spotify - + Stop syncing with Spotify Deter a sincronización con Spotify @@ -2194,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 @@ -3131,6 +3136,14 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Erro de rede no acurtamento de ligazóns! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index df837801a7..25291cefb6 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -1935,7 +1940,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2191,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 69b4b86025..ebdbc56f2b 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Magas minőségű streamek @@ -1935,7 +1940,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Szinkronizálás a Spotify-val - + Re-enable syncing with Spotify - + Create local copy Helyi másolat létrehozása - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2191,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 @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 51c1fcca91..950c9e7849 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Stream di alta qualità @@ -1935,7 +1940,7 @@ connect and stream from you? Playlist di Spotify da tenere sincronizzate: - + Delete Tomahawk playlist when removing synchronization Cancella la playlist su Tomahawk quando viene rimossa la sincronizzazione @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizzati con Spotify - + Re-enable syncing with Spotify Riabilita sincronizzazione con Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Ferma la sincronizzazione con Spotify @@ -2191,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 @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. Errore di rete nell'analizzare il link accorciato! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 2ef3f66170..659404f250 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -1045,31 +1045,31 @@ connect and stream from you? 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> @@ -1293,13 +1293,13 @@ connect and stream from you? %1 Config - + %1設定 %1 Configuration - + %1設定 @@ -1931,6 +1931,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams 高音質ストリーム @@ -1940,7 +1945,7 @@ connect and stream from you? 同期するSpotifyのプレイリスト: - + Delete Tomahawk playlist when removing synchronization 同期を無効すれば、Tomahawkのプレイリストを削除 @@ -2148,47 +2153,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Spotifyと同期する - + Re-enable syncing with Spotify Spotifyとの同期を再び有効にする - + Create local copy ローカルのコピーを作成 - + Subscribe to playlist changes プレイリストの変更フィードに登録する - + Re-enable playlist subscription 再びプレイリストのフィードに登録する - + Stop subscribing to changes 変更フィードの登録を解除 - + Enable Spotify collaborations Spotifyのコラボレーションを有効にする - + Disable Spotify collaborations Spotifyのコラボレーションを無効にする - + Stop syncing with Spotify Spotifyとの同期を解除 @@ -2196,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 ログイン @@ -2381,7 +2386,7 @@ You may wish to try re-authenticating. Local Network - + ローカルネットワーク @@ -2389,7 +2394,7 @@ You may wish to try re-authenticating. Local Network - + ローカルネットワーク @@ -3109,7 +3114,7 @@ Try tweaking the filters for a new set of songs to play. %n people - + %n人 @@ -3133,6 +3138,14 @@ Try tweaking the filters for a new set of songs to play. 短縮リンクの解析中にネットワークエラーが発生しました! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + '%1'の'%2'が配信できません。 + + Tomahawk::Source @@ -3221,7 +3234,7 @@ enter the displayed PIN number here: Local Network - + ローカルネットワーク diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 5fd4941fe1..80b2f24a30 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Aukštos kokybės srautai @@ -1935,7 +1940,7 @@ connect and stream from you? Sinchronizuojami Spotify grojaraščiai: - + Delete Tomahawk playlist when removing synchronization Ištrinti Tomahawk grojaraštį kai panaikinamas sinchronizavimas @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sinchronizuoti su Spotify - + Re-enable syncing with Spotify Iš naujo įjungti sinchronizavimą su Spotify - + Create local copy Sukurti vietinę kopiją - + Subscribe to playlist changes Sekti grojaraščio pokyčius - + Re-enable playlist subscription Sekti grojarašio atnaujinimus iš naujo - + Stop subscribing to changes Nebesekti grojaraščio pokyčių - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Stabdyti sinchronizavimą su Spotify @@ -2191,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 @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index d0f165c9e9..3e2e5c67e3 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -363,7 +363,7 @@ połączyć się i strumieniować od ciebie? Love - + Lubię @@ -454,7 +454,7 @@ połączyć się i strumieniować od ciebie? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style="font-weigth:600;">Przepraszamy!</span>Tomahawk przestał odpowiadać. Poinformuj nas o tym! Tomahawk utworzył raport o błędzie, który może poprawić stabilność w przyszłości. Możesz teraz wysłać ten raport bezpośrednio do programistów Tomahawka.</p></body></html> @@ -707,7 +707,7 @@ połączyć się i strumieniować od ciebie? Synchronize Loved Tracks - + Synchronizuj lubiane utwory @@ -785,32 +785,32 @@ połączyć się i strumieniować od ciebie? Top Loved Tracks - + Najczęściej lubiane utwory Sorry, we could not find any loved tracks! - + Przepraszamy, nie mogliśmy znaleźć żadnych lubianych utworów! The most loved tracks from all your friends - + Najczęściej lubiane utwory wszystkich twoich znajomych All of your loved tracks - + Wszystkie twoje lubiane utwory All of %1's loved tracks - + Wszystkie utwory lubiane przez %1 Loved Tracks - + Lubiane @@ -1772,17 +1772,17 @@ połączyć się i strumieniować od ciebie? Add to my Playlists - + Dodaj do moich List odtwarzania Add to my Automatic Playlists - + Dodaj do moich Automatycznych list odtwarzania Add to my Stations - + Dodaj do moich Stacji @@ -1792,17 +1792,17 @@ połączyć się i strumieniować od ciebie? playlist - + lista odtwarzania automatic playlist - + automatyczna lista odtwarzania station - + stacja @@ -1928,6 +1928,11 @@ połączyć się i strumieniować od ciebie? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Strumieniowanie w wysokiej jakości @@ -1937,7 +1942,7 @@ połączyć się i strumieniować od ciebie? Listy Spotify do synchronizacji: - + Delete Tomahawk playlist when removing synchronization Usuń listy Tomahawka podczas usuwania synchronizacji @@ -2021,7 +2026,7 @@ połączyć się i strumieniować od ciebie? Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - + Niestety, automatyczna instalacja tej usługi jest niedostępna lub wyłączona na twojej platformie.<br /><br />Użyj instalacji z pliku, ściągając usługę lub kompilując ją samodzielnie. Więcej informacji można znaleźć na:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2145,47 +2150,47 @@ połączyć się i strumieniować od ciebie? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synchronizuj ze Spotify - + Re-enable syncing with Spotify - + Włącz ponownie synchronizację ze Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Przestań synchronizować ze Spotify @@ -2193,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ę @@ -2422,7 +2427,7 @@ Możesz spróbować ponowić uwierzytelnienie. &Love - &Uwielbiam + &Lubię @@ -2479,22 +2484,22 @@ Możesz spróbować ponowić uwierzytelnienie. playlist - + lista odtwarzania artist - + wykonawca track - + utwór album - + album @@ -3130,6 +3135,14 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia.Błąd sieciowy podczas rozpoznawania krótkiego linku! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source @@ -3257,12 +3270,12 @@ wprowadź pokazany numer PIN tutaj: &Love - + &Lubię Un-&Love - + Przestań &lubić @@ -3571,12 +3584,12 @@ wprowadź pokazany numer PIN tutaj: Copyright 2010 - 2012 - + Copyright 2010 - 2012 Thanks to: - + Podziękowania dla: diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index d82d833c7e..d35e760739 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -1928,6 +1928,11 @@ se conecte e faça o stream de você? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Streams de Alta Qualidade @@ -1937,7 +1942,7 @@ se conecte e faça o stream de você? Playlists do Spotify para sincronizar: - + Delete Tomahawk playlist when removing synchronization Deletar a playlist do Tomahawk quando remover a sincronização @@ -2145,47 +2150,47 @@ se conecte e faça o stream de você? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizar com o Spotify - + Re-enable syncing with Spotify Reativar sincronização com Spotify - + Create local copy Criar cópia local - + Subscribe to playlist changes Assinar para alterações na lista de reprodução - + Re-enable playlist subscription Re-habilitar assinatura da lista de reprodução - + Stop subscribing to changes Parar a assinatura de alterações - + Enable Spotify collaborations Habilitar colaborações Spotify - + Disable Spotify collaborations Desabilitar colaborações Spotify - + Stop syncing with Spotify Parar a sincronização com o Spotify @@ -2193,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 @@ -3130,6 +3135,14 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Erro de rede ao analisar o encurtador de link! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index c889c9da2e..21845add02 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -1928,6 +1928,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams Поток высокого качества @@ -1937,7 +1942,7 @@ connect and stream from you? Синхронизировать плейлисты Spotify: - + Delete Tomahawk playlist when removing synchronization Удалить плейлист Tomahawk, при удалении синхронизации. @@ -2145,47 +2150,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Синхронизировать с Spotify - + Re-enable syncing with Spotify Повторно включить синхронизацию с Spotify - + Create local copy Создать локальную копию - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Прекратить синхронизацию с Spotify @@ -2193,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 Войти @@ -3128,6 +3133,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 5e3e529c9f..c6acfb0c3a 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -1927,6 +1927,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -1936,7 +1941,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2144,47 +2149,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2192,28 +2197,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -3126,6 +3131,14 @@ Försök att ändra i filtrerna för att få en ny låtlista + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 38a8e091a7..f5e1a23fd1 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams @@ -1935,7 +1940,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2191,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... - + Failed: %1 - + Logged in as %1 - + Log Out - - + + Log In @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index cc4dcfa70d..dc6ff0a1f1 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -1929,6 +1929,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams 高质量音频流 @@ -1938,7 +1943,7 @@ connect and stream from you? 保持同步的 Spotify 播放列表: - + Delete Tomahawk playlist when removing synchronization 移除同步时删除 Tomahawk 播放列表: @@ -2146,47 +2151,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify 与 Spotify 同步 - + Re-enable syncing with Spotify 重新启用 Spotify 同步 - + Create local copy 创建本地拷贝 - + Subscribe to playlist changes 订阅播放列表改动 - + Re-enable playlist subscription 重新启用播放列表订阅 - + Stop subscribing to changes 停止订阅改动 - + Enable Spotify collaborations 启用 Spotify 碰撞 - + Disable Spotify collaborations 禁用 Spotify 碰撞 - + Stop syncing with Spotify 停止与 Spotify 同步 @@ -2194,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 登录 @@ -3131,6 +3136,14 @@ Try tweaking the filters for a new set of songs to play. 解析短链接时出错! + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 67a934f21d..a60281ce2a 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -1926,6 +1926,11 @@ connect and stream from you? + Sync Starred tracks to Loved tracks + + + + High Quality Streams 高品質的串流 @@ -1935,7 +1940,7 @@ connect and stream from you? - + Delete Tomahawk playlist when removing synchronization 刪除同步時,刪除 Tomahawk 播放清單 @@ -2143,47 +2148,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2191,28 +2196,28 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccountConfig - + Logging in... 登錄中... - + Failed: %1 失敗:%1 - + Logged in as %1 - + Log Out - - + + Log In 登錄 @@ -3121,6 +3126,14 @@ Try tweaking the filters for a new set of songs to play. + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + Tomahawk::Source From fdb94bec520155a26860ad605e86927bb5a6e682 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 22 Dec 2012 14:21:02 +0100 Subject: [PATCH 009/310] * Various style fixes. --- src/libtomahawk/accounts/lastfm/LastFmConfig.cpp | 2 -- src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp | 2 +- src/libtomahawk/playlist/TrackView.cpp | 2 +- src/libtomahawk/utils/StyleHelper.cpp | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp b/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp index ff137a9c5b..1f3c008878 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmConfig.cpp @@ -268,7 +268,6 @@ LastFmConfig::syncLovedTracks( uint page ) connect( cmd, SIGNAL( done( DatabaseCommand_LoadSocialActions::TrackActions ) ), this, SLOT( localLovedLoaded( DatabaseCommand_LoadSocialActions::TrackActions ) ) ); Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( cmd ) ); - } @@ -305,7 +304,6 @@ LastFmConfig::onLovedFinished( QNetworkReply* reply ) m_lastfmLoved.insert( query ); } - if ( thisPage == m_totalLovedPages ) { m_doneFetchingLoved = true; diff --git a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp index 86fb827a0e..0431b0319f 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp @@ -623,7 +623,7 @@ LastFmInfoPlugin::similarTracksReturned() returnedData["artists"] = sortedArtists; returnedData["score"] = sortedScores; - qDebug() << "Returning data, tracks:" << sortedTracks << "artists:" << sortedArtists << "scors:" << sortedScores; + tDebug( LOGVERBOSE ) << "Returning data, tracks:" << sortedTracks << "artists:" << sortedArtists << "scores:" << sortedScores; Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >(); diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index 09a0e90406..2a82c8d85a 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -191,7 +191,7 @@ TrackView::setPlaylistItemDelegate( PlaylistItemDelegate* delegate ) void TrackView::setPlayableModel( PlayableModel* model ) { - m_model = model; + m_model = model; if ( m_proxyModel ) { diff --git a/src/libtomahawk/utils/StyleHelper.cpp b/src/libtomahawk/utils/StyleHelper.cpp index cb5ba6fe32..cde83bb2f7 100644 --- a/src/libtomahawk/utils/StyleHelper.cpp +++ b/src/libtomahawk/utils/StyleHelper.cpp @@ -181,4 +181,4 @@ void StyleHelper::drawArrow( QStyle::PrimitiveElement element, QPainter* p, cons int xOffset = r.x() + ( r.width() - size ) / 2; int yOffset = r.y() + ( r.height() - size ) / 2; p->drawPixmap( xOffset, yOffset, pixmap ); -} \ No newline at end of file +} From 982791f574e4cf5057442dad0d26a90bb6c8a7d9 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 22 Dec 2012 14:21:31 +0100 Subject: [PATCH 010/310] * maxVisibleItems of 0 isn't valid. --- 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 1778b4c729..5752886ab0 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -131,7 +131,7 @@ PlayableProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourcePa if ( !pi ) return false; - if ( m_maxVisibleItems >= 0 && sourceRow > m_maxVisibleItems - 1 ) + if ( m_maxVisibleItems > 0 && sourceRow > m_maxVisibleItems - 1 ) return false; if ( m_hideDupeItems ) From 63fc41d23d0a136c9c0421f7fa31bcd6834fca97 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 22 Dec 2012 14:23:27 +0100 Subject: [PATCH 011/310] * Fixed GridView's auto-size mode not working correctly. --- src/libtomahawk/playlist/GridView.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index 7bbaf8350c..d23a137a60 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -81,8 +81,6 @@ GridView::GridView( QWidget* parent ) connect( this, SIGNAL( doubleClicked( QModelIndex ) ), SLOT( onItemActivated( QModelIndex ) ) ); connect( this, SIGNAL( customContextMenuRequested( QPoint ) ), SLOT( onCustomContextMenu( QPoint ) ) ); - - connect( proxyModel(), SIGNAL( modelReset() ), SLOT( layoutItems() ) ); } @@ -100,13 +98,15 @@ GridView::setProxyModel( PlayableProxyModel* model ) disconnect( m_proxyModel, SIGNAL( filterChanged( QString ) ), this, SLOT( onFilterChanged( QString ) ) ); disconnect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); disconnect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), this, SLOT( verifySize() ) ); + disconnect( proxyModel(), SIGNAL( modelReset() ), this, SLOT( layoutItems() ) ); } m_proxyModel = model; connect( m_proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onFilterChanged( QString ) ) ); connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( verifySize() ) ); connect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) ); - + connect( proxyModel(), SIGNAL( modelReset() ), SLOT( layoutItems() ) ); + if ( m_delegate ) delete m_delegate; @@ -133,8 +133,7 @@ void GridView::setPlayableModel( PlayableModel* model ) { if ( m_model ) - { - } + delete m_model; m_inited = false; m_model = model; @@ -142,7 +141,7 @@ GridView::setPlayableModel( PlayableModel* model ) if ( m_proxyModel ) { m_proxyModel->setSourcePlayableModel( m_model ); - m_proxyModel->sort( 0 ); + m_proxyModel->sort( -1 ); } emit modelChanged(); @@ -237,10 +236,10 @@ GridView::verifySize() const int rows = floor( (double)m_model->rowCount( QModelIndex() ) / (double)itemsPerRow ); const int newHeight = rows * m_delegate->itemSize().height(); + m_proxyModel->setMaxVisibleItems( m_model->rowCount( QModelIndex() ) - overlapRows ); + if ( newHeight > 0 ) setFixedHeight( newHeight ); - - m_proxyModel->setMaxVisibleItems( m_model->rowCount( QModelIndex() ) - overlapRows ); } From c51ca312db4c993a5aecbe50dec85fdd61ac38f7 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 22 Dec 2012 14:37:47 +0100 Subject: [PATCH 012/310] * Properly implemented SingleTrackPlaylistInterface. --- src/libtomahawk/CMakeLists.txt | 2 +- .../playlist/SingleTrackPlaylistInterface.cpp | 95 +++++++++++++++++++ .../playlist/SingleTrackPlaylistInterface.h | 18 ++-- 3 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 6c01095183..4322ea769e 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -81,7 +81,7 @@ set( libGuiSources playlist/PlaylistLargeItemDelegate.cpp playlist/PlaylistChartItemDelegate.cpp playlist/PlayableItem.cpp - playlist/SingleTrackPlaylistInterface.h + playlist/SingleTrackPlaylistInterface.cpp playlist/dynamic/DynamicPlaylist.cpp playlist/dynamic/DynamicView.cpp diff --git a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp new file mode 100644 index 0000000000..54e9bf8212 --- /dev/null +++ b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp @@ -0,0 +1,95 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2012 Leo Franchi + * Copyright 2012, Christian Muehlhaeuser + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + + +#include "SingleTrackPlaylistInterface.h" + +namespace Tomahawk +{ + +SingleTrackPlaylistInterface::SingleTrackPlaylistInterface( const Tomahawk::query_ptr& query ) + : PlaylistInterface() + , m_track( query ) +{ +} + + +Tomahawk::result_ptr +SingleTrackPlaylistInterface::currentItem() const +{ + if ( m_track && m_track->numResults() ) + return m_track->results().first(); + + return result_ptr(); +} + + +Tomahawk::result_ptr +SingleTrackPlaylistInterface::resultAt( qint64 index ) const +{ + if ( index == 0 && m_track && m_track->numResults() ) + return m_track->results().first(); + + return result_ptr(); +} + + +Tomahawk::query_ptr +SingleTrackPlaylistInterface::queryAt( qint64 index ) const +{ + if ( index == 0 ) + return m_track; + + return query_ptr(); +} + + +qint64 +SingleTrackPlaylistInterface::indexOfResult( const Tomahawk::result_ptr& result ) const +{ + if ( m_track && m_track->results().contains( result ) ) + return 0; + + return -1; +} + + +qint64 +SingleTrackPlaylistInterface::indexOfQuery( const Tomahawk::query_ptr& query ) const +{ + if ( m_track == query ) + return 0; + + return -1; +} + + +QList< Tomahawk::query_ptr > +SingleTrackPlaylistInterface::tracks() const +{ + QList< query_ptr > ql; + + if ( m_track ) + ql << m_track; + + return ql; +} + +} + diff --git a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h index f692e74572..494714b437 100644 --- a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h +++ b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h @@ -32,22 +32,18 @@ class DLLEXPORT SingleTrackPlaylistInterface : public PlaylistInterface { Q_OBJECT public: - explicit SingleTrackPlaylistInterface( const query_ptr& query ) - : PlaylistInterface() - , m_track( query ) - { - } + explicit SingleTrackPlaylistInterface( const query_ptr& query ); query_ptr track() const { return m_track; } void setQuery( const query_ptr& track ) { m_track = track; } virtual void setCurrentIndex( qint64 index ) { Q_UNUSED( index ); } - virtual result_ptr currentItem() const { return result_ptr(); } + virtual result_ptr currentItem() const; - virtual Tomahawk::result_ptr resultAt( qint64 index ) const { Q_UNUSED( index ); Q_ASSERT( false ); return Tomahawk::result_ptr(); } - virtual Tomahawk::query_ptr queryAt( qint64 index ) const { Q_UNUSED( index ); Q_ASSERT( false ); return Tomahawk::query_ptr(); } - virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const { Q_UNUSED( result ); Q_ASSERT( false ); return -1; } - virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const { Q_UNUSED( query ); Q_ASSERT( false ); return -1; } + virtual Tomahawk::result_ptr resultAt( qint64 index ) const; + virtual Tomahawk::query_ptr queryAt( qint64 index ) const; + virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const; + virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const; virtual PlaylistModes::RepeatMode repeatMode() const { return PlaylistModes::NoRepeat; } virtual void setRepeatMode( PlaylistModes::RepeatMode ) {} @@ -57,7 +53,7 @@ class DLLEXPORT SingleTrackPlaylistInterface : public PlaylistInterface virtual qint64 siblingIndex( int, qint64 rootIndex = -1 ) const { Q_UNUSED( rootIndex ); return -1; } virtual int trackCount() const { return 1; } - virtual QList< query_ptr > tracks() const { return QList< query_ptr >(); } + virtual QList< query_ptr > tracks() const; private: query_ptr m_track; From db0743b7830e936076d2c41345ee0f2edd121704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Lindstr=C3=B6m?= Date: Sat, 22 Dec 2012 16:25:34 +0100 Subject: [PATCH 013/310] Sync Loved -> Starred OR Sync Starred Container --- .../accounts/spotify/SpotifyAccount.cpp | 94 +++++++++++++------ .../accounts/spotify/SpotifyAccount.h | 11 ++- .../accounts/spotify/SpotifyAccountConfig.cpp | 18 +++- .../accounts/spotify/SpotifyAccountConfig.h | 1 + 4 files changed, 90 insertions(+), 34 deletions(-) diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index b648fd4dc1..bf300eb99a 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -838,6 +838,7 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const bool isOwner = plMap.value( "owner" ).toBool(); const bool sync = plMap.value( "sync" ).toBool(); const bool subscribed = plMap.value( "subscribed" ).toBool(); + const bool starContainer = plMap.value( "starContainer" ).toBool(); if ( name.isNull() || plid.isNull() || revid.isNull() ) { @@ -845,7 +846,7 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg continue; } - registerPlaylistInfo( new SpotifyPlaylistInfo( name, plid, revid, sync, subscribed, isOwner ) ); + registerPlaylistInfo( new SpotifyPlaylistInfo( name, plid, revid, sync, subscribed, isOwner, starContainer ) ); } if ( !m_configWidget.isNull() ) @@ -862,8 +863,14 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; - SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } + SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; // We have previously sycned starred container, but not anymore. // If we added loveSync, its synced in the background if( !updater->sync() && m_configWidget.data()->loveSync() ) @@ -887,6 +894,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; // If we're not syncing with this, the resolver is quite misinformed. @@ -898,7 +911,6 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const QString newRev = msg.value( "revid" ).toString(); const QString oldRev = msg.value( "oldRev" ).toString(); - updater->spotifyTracksRemoved( tracksList, newRev, oldRev ); } else if ( msgType == "tracksMoved" ) @@ -910,6 +922,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; Q_ASSERT( updater->sync() ); @@ -926,6 +944,7 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg { const QVariantList tracksList = msg.value( "tracks" ).toList(); const bool love = msg.value( "starred" ).toBool(); + QList qs = SpotifyPlaylistUpdater::variantToQueries( tracksList ); foreach ( const query_ptr& query, qs ) { @@ -943,6 +962,12 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( !m_updaters.contains( plid ) ) return; + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; + if( (info && info->starContainer ) && loveSync() ) + { + qDebug() << Q_FUNC_INFO << "SKIPPING" << msgType; + return; + } SpotifyPlaylistUpdater* updater = m_updaters[ plid ]; Q_ASSERT( updater->sync() ); @@ -952,7 +977,6 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const bool collaborative = msg.value( "collaborative" ).toBool(); const int subscribers = msg.value( "subscribers" ).toInt(); - SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ plid ]; if( info && info->name != title ) { qDebug() << "Playlist renamed fetched in tomahawk"; @@ -1156,17 +1180,7 @@ SpotifyAccount::saveConfig() { pl->changed = false; - if ( !pl->sync && pl->loveSync ) - { - QVariantMap msg; - msg[ "_msgtype" ] = "setSync"; - msg[ "playlistid" ] = pl->plid; - msg[ "sync" ] = pl->loveSync; - sendMessage( msg ); - - } - - if ( pl->sync ) + if ( pl->sync || ( pl->starContainer && loveSync() ) ) { // Fetch full playlist contents, then begin the sync startPlaylistSync( pl ); @@ -1216,11 +1230,22 @@ SpotifyAccount::startPlaylistSync( SpotifyPlaylistInfo* playlist ) return; QVariantMap msg; - msg[ "_msgtype" ] = "getPlaylist"; msg[ "playlistid" ] = playlist->plid; - msg[ "sync" ] = playlist->sync; + msg[ "sync" ] = true; + + if( playlist->loveSync ) + { + msg[ "_msgtype" ] = "setSync"; + sendMessage( msg ); + if( playlist->sync && m_updaters.contains( playlist->plid ) ) + stopPlaylistSync(playlist, true); + } + else if( playlist->sync ) + { + msg[ "_msgtype" ] = "getPlaylist"; + sendMessage( msg, this, "startPlaylistSyncWithPlaylist" ); + } - sendMessage( msg, this, "startPlaylistSyncWithPlaylist" ); } @@ -1240,7 +1265,6 @@ SpotifyAccount::startPlaylistSyncWithPlaylist( const QString& msgType, const QVa // create a list of query/plentries directly QList< query_ptr > queries = SpotifyPlaylistUpdater::variantToQueries( tracks ); - /** * Begin syncing a playlist. Two options: * 1) This is a playlist that has never been synced to tomahawk. Create a new one @@ -1253,12 +1277,22 @@ SpotifyAccount::startPlaylistSyncWithPlaylist( const QString& msgType, const QVa { //Q_ASSERT( m_updaters[ id ]->sync() == false ); /// Should have been unchecked/off before, but might not be if the user // changed spotify resolver meanwhile, so allow it for now - m_updaters[ id ]->setSync( true ); -// m_updaters[ id ]-> - // TODO + SpotifyPlaylistInfo* info = m_allSpotifyPlaylists[ id ]; + if ( loveSync() && ( info && info->starContainer ) ) + { + qDebug() << "Stopping playlist sync in favour for Love Sync"; + stopPlaylistSync( info, true ); + } + else + { + m_updaters[ id ]->setSync( true ); +// m_updaters[ id ]-> + // TODO + } } else { + playlist_ptr plPtr = Tomahawk::Playlist::create( SourceList::instance()->getLocal(), uuid(), name, @@ -1412,15 +1446,21 @@ SpotifyAccount::stopPlaylistSync( SpotifyPlaylistInfo* playlist, bool forceDontD if ( !playlist ) return; - QVariantMap msg; - msg[ "_msgtype" ] = "removeFromSyncList"; - msg[ "playlistid" ] = playlist->plid; + if ( loveSync() && playlist->starContainer ) + { + qDebug() << "LoveSync in action, wont remove playlist " << playlist->name; + } + else if( !loveSync() ) + { + QVariantMap msg; + msg[ "_msgtype" ] = "removeFromSyncList"; + msg[ "playlistid" ] = playlist->plid; - m_spotifyResolver.data()->sendMessage( msg ); + m_spotifyResolver.data()->sendMessage( msg ); + } if ( m_updaters.contains( playlist->plid ) ) { - SpotifyPlaylistUpdater* updater = m_updaters[ playlist->plid ]; updater->setSync( false ); diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.h b/src/libtomahawk/accounts/spotify/SpotifyAccount.h index 4e252f3c76..59527afe25 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.h @@ -51,13 +51,14 @@ class SpotifyAccountConfig; // metadata for a playlist struct SpotifyPlaylistInfo { QString name, plid, revid; - bool sync, subscribed, changed, isOwner, loveSync; + bool sync, subscribed, changed, isOwner, starContainer; + bool loveSync; + SpotifyPlaylistInfo( const QString& nname, const QString& pid, const QString& rrevid, bool ssync, bool ssubscribed, bool isowner = false, bool star = false ) + : name( nname ), plid( pid ), revid( rrevid ), sync( ssync ), subscribed( ssubscribed ) + , changed( false ), isOwner( isowner ), starContainer( star ), loveSync( false ) {} - SpotifyPlaylistInfo( const QString& nname, const QString& pid, const QString& rrevid, bool ssync, bool ssubscribed, bool isowner = false, bool lovesync = false ) - : name( nname ), plid( pid ), revid( rrevid ), sync( ssync ), subscribed( ssubscribed ), changed( false ), isOwner( isowner ), loveSync( lovesync ) {} - - SpotifyPlaylistInfo() : sync( false ), changed( false ), loveSync( false ) {} + SpotifyPlaylistInfo() : sync( false ), changed( false ), starContainer( false ), loveSync( false ) {} }; diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp index 5ff1ea2789..1fe35b289d 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp @@ -49,7 +49,7 @@ SpotifyAccountConfig::SpotifyAccountConfig( SpotifyAccount *account ) m_ui->loginButton->setDefault( true ); connect( m_ui->loginButton, SIGNAL( clicked( bool ) ), this, SLOT( doLogin() ) ); - + connect( m_ui->loveSync, SIGNAL( toggled(bool) ), this, SLOT( showStarredPlaylist(bool) ) ); connect( m_ui->usernameEdit, SIGNAL( textEdited( QString ) ), this, SLOT( resetLoginButton() ) ); connect( m_ui->passwordEdit, SIGNAL( textEdited( QString ) ), this, SLOT( resetLoginButton() ) ); connect( m_ui->selectAllCheckbox, SIGNAL( stateChanged( int ) ), this, SLOT( selectAllPlaylists() ) ); @@ -104,7 +104,8 @@ SpotifyAccountConfig::saveSettings() pl->changed = true; pl->sync = toSync; } - if ( pl->name == "Starred Tracks" && pl->loveSync != loveSync() ) + + if ( ( pl->starContainer && loveSync() ) && ( pl->loveSync != loveSync() ) ) { pl->loveSync = loveSync(); pl->changed = true; @@ -162,6 +163,9 @@ SpotifyAccountConfig::setPlaylists( const QList& playlist { QListWidgetItem* item = new QListWidgetItem( pl->name, m_ui->playlistList ); item->setData( Qt::UserRole, QVariant::fromValue< SpotifyPlaylistInfo* >( pl ) ); + item->setData( Qt::UserRole+2, pl->starContainer ); + if( loveSync() && pl->starContainer ) + item->setHidden(true); item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled ); item->setCheckState( pl->sync ? Qt::Checked : Qt::Unchecked ); } @@ -216,6 +220,16 @@ SpotifyAccountConfig::loginResponse( bool success, const QString& msg, const QSt } +void +SpotifyAccountConfig::showStarredPlaylist( bool hide ) +{ + for ( int i = 0; i < m_ui->playlistList->count(); i++ ) + { + QListWidgetItem* item = m_ui->playlistList->item( i ); + if ( item->data( Qt::UserRole+2 ).toBool() ) + item->setHidden( hide ); + } +} void SpotifyAccountConfig::selectAllPlaylists() { diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h index c3eeb2267c..8afedd69f3 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.h @@ -72,6 +72,7 @@ private slots: void doLogin(); void resetLoginButton(); void selectAllPlaylists(); + void showStarredPlaylist(bool); private: void showLoggedIn(); From 11eea9135448d91b007f5763e97398f3b7a43fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Lindstr=C3=B6m?= Date: Sat, 22 Dec 2012 17:19:47 +0100 Subject: [PATCH 014/310] Extra check for starred container --- src/libtomahawk/accounts/spotify/SpotifyAccount.cpp | 4 ++-- src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index bf300eb99a..99701a7645 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -838,7 +838,7 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg const bool isOwner = plMap.value( "owner" ).toBool(); const bool sync = plMap.value( "sync" ).toBool(); const bool subscribed = plMap.value( "subscribed" ).toBool(); - const bool starContainer = plMap.value( "starContainer" ).toBool(); + const bool starContainer = ( plMap.value( "starContainer" ).toBool() || name == "Starred Tracks"); if ( name.isNull() || plid.isNull() || revid.isNull() ) { @@ -1175,7 +1175,7 @@ SpotifyAccount::saveConfig() m_configWidget.data()->saveSettings(); foreach ( SpotifyPlaylistInfo* pl, m_allSpotifyPlaylists.values() ) { -// qDebug() << "Checking changed state:" << pl->changed << pl->name << pl->sync; +// qDebug() << "Checking changed state:" << pl->changed << "name:" << pl->name << "sync" << pl->sync << "starred:" << pl->starContainer; if ( pl->changed ) { pl->changed = false; diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp index 1fe35b289d..c7622b3e83 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp @@ -101,12 +101,14 @@ SpotifyAccountConfig::saveSettings() const bool toSync = ( item->checkState() == Qt::Checked ); if ( pl->sync != toSync ) { + qDebug() << Q_FUNC_INFO << "Setting sync"; pl->changed = true; pl->sync = toSync; } if ( ( pl->starContainer && loveSync() ) && ( pl->loveSync != loveSync() ) ) { + qDebug() << Q_FUNC_INFO << "Setting lovesync"; pl->loveSync = loveSync(); pl->changed = true; } @@ -161,10 +163,11 @@ SpotifyAccountConfig::setPlaylists( const QList& playlist foreach ( SpotifyPlaylistInfo* pl, myList ) { + bool starContainer = ( pl->starContainer || pl->name == "Starred Tracks" ); QListWidgetItem* item = new QListWidgetItem( pl->name, m_ui->playlistList ); item->setData( Qt::UserRole, QVariant::fromValue< SpotifyPlaylistInfo* >( pl ) ); - item->setData( Qt::UserRole+2, pl->starContainer ); - if( loveSync() && pl->starContainer ) + item->setData( Qt::UserRole+2, starContainer ); + if( loveSync() && starContainer ) item->setHidden(true); item->setFlags( Qt::ItemIsUserCheckable | Qt::ItemIsSelectable | Qt::ItemIsEnabled ); item->setCheckState( pl->sync ? Qt::Checked : Qt::Unchecked ); From f26618d6c278a3ce314700f87b85dd418be63ea5 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 22 Dec 2012 18:18:06 +0100 Subject: [PATCH 015/310] Do not reinvent the wheel --- .../resolvers/QtScriptResolver.cpp | 26 ++----------------- src/libtomahawk/resolvers/QtScriptResolver.h | 1 - 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index 74486144f4..935bf430c9 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -529,28 +529,6 @@ QtScriptResolver::saveConfig() } -QWidget* -QtScriptResolver::findWidget(QWidget* widget, const QString& objectName) -{ - if( !widget || !widget->isWidgetType() ) - return 0; - - if( widget->objectName() == objectName ) - return widget; - - - foreach( QObject* child, widget->children() ) - { - QWidget* found = findWidget(qobject_cast< QWidget* >( child ), objectName); - - if( found ) - return found; - } - - return 0; -} - - QVariant QtScriptResolver::widgetData(QWidget* widget, const QString& property) { @@ -589,7 +567,7 @@ QtScriptResolver::loadDataFromWidgets() QVariantMap data = dataWidget.toMap(); QString widgetName = data["widget"].toString(); - QWidget* widget= findWidget( m_configWidget.data(), widgetName ); + QWidget* widget= m_configWidget->findChild< QWidget* >( widgetName ); QVariant value = widgetData( widget, data["property"].toString() ); @@ -606,7 +584,7 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data ) foreach(const QVariant& dataWidget, m_dataWidgets) { QString widgetName = dataWidget.toMap()["widget"].toString(); - QWidget* widget= findWidget( m_configWidget.data(), widgetName ); + QWidget* widget= m_configWidget->find< QWidget* >( widgetName ); if( !widget ) { tLog() << Q_FUNC_INFO << "Widget specified in resolver was not found:" << widgetName; diff --git a/src/libtomahawk/resolvers/QtScriptResolver.h b/src/libtomahawk/resolvers/QtScriptResolver.h index 392f29ecca..f2624f200a 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.h +++ b/src/libtomahawk/resolvers/QtScriptResolver.h @@ -154,7 +154,6 @@ public slots: void init(); void loadUi(); - QWidget* findWidget( QWidget* widget, const QString& objectName ); void setWidgetData( const QVariant& value, QWidget* widget, const QString& property ); QVariant widgetData( QWidget* widget, const QString& property ); QVariantMap loadDataFromWidgets(); From a9ca8faf8a3e036b100d3e995593e00eeda9ca74 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 22 Dec 2012 19:00:12 +0100 Subject: [PATCH 016/310] Fix latest commit. --- src/libtomahawk/resolvers/QtScriptResolver.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index 935bf430c9..cd9e427ab2 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -567,7 +567,7 @@ QtScriptResolver::loadDataFromWidgets() QVariantMap data = dataWidget.toMap(); QString widgetName = data["widget"].toString(); - QWidget* widget= m_configWidget->findChild< QWidget* >( widgetName ); + QWidget* widget= m_configWidget.data()->findChild( widgetName ); QVariant value = widgetData( widget, data["property"].toString() ); @@ -584,7 +584,7 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data ) foreach(const QVariant& dataWidget, m_dataWidgets) { QString widgetName = dataWidget.toMap()["widget"].toString(); - QWidget* widget= m_configWidget->find< QWidget* >( widgetName ); + QWidget* widget= m_configWidget.data()->findChild( widgetName ); if( !widget ) { tLog() << Q_FUNC_INFO << "Widget specified in resolver was not found:" << widgetName; From 3e9305c2da568cd65aff1e06874d39e476ff70c2 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 22 Dec 2012 19:56:51 +0100 Subject: [PATCH 017/310] Remove unwanted outlines from header children. This fixes TWK-1160. --- src/libtomahawk/widgets/BasicHeader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/widgets/BasicHeader.cpp b/src/libtomahawk/widgets/BasicHeader.cpp index cedd19fad8..664aa13e8f 100644 --- a/src/libtomahawk/widgets/BasicHeader.cpp +++ b/src/libtomahawk/widgets/BasicHeader.cpp @@ -134,5 +134,5 @@ BasicHeader::paintEvent( QPaintEvent* event ) gradient.setColorAt( 1.0, QColor( "#25292c" ) ); painter.setBrush( gradient ); - painter.fillRect( event->rect(), gradient ); + painter.fillRect( rect(), gradient ); } From 8de0a6fe88b60376dd8cc632e8dc67bbe43c83ab Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 22 Dec 2012 14:39:34 +0100 Subject: [PATCH 018/310] * Removed obsolete include. --- src/libtomahawk/playlist/GridView.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index d23a137a60..eaf7e1ccaf 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -34,7 +34,6 @@ #include "AlbumModel.h" #include "PlayableModel.h" #include "PlayableProxyModelPlaylistInterface.h" -#include "SingleTrackPlaylistInterface.h" #include "ContextMenu.h" #include "ViewManager.h" #include "MetaPlaylistInterface.h" From 22d4e53b1c2b9730bd4f965ac968f2f25b81c120 Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Sat, 22 Dec 2012 14:45:12 -0500 Subject: [PATCH 019/310] Changelogify --- ChangeLog | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9ebe4cfec7..645d60c703 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,27 @@ 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 + * New account status button and dialog + * 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 random mode, preventing songs from being played in too rapid succession. * You can now choose between Various view modes for your playlists. - * Nicer layout for the Album page. + * Nicer layout for the Album, Artist & Track pages. * Follow HTTP redirects when fetching Playlists from the Internet. * Main menu can now be hidden and instead be shown as a toolbar button. * Connectivity controls in the toolbar. From 452e083f52c181f1e09145d629805804a770790f Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Sat, 22 Dec 2012 14:52:22 -0500 Subject: [PATCH 020/310] Update changelog to remove duplicate entry --- ChangeLog | 1 - 1 file changed, 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 645d60c703..e0b6243138 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,7 +13,6 @@ Version 0.6.0: * 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 - * New account status button and dialog * 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. From f38deb29c4c724828e200186a2942ed5e8c52236 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 22 Dec 2012 21:46:58 +0100 Subject: [PATCH 021/310] Fix vertical centering in oval. This fixes TWK-1149. --- src/libtomahawk/utils/TomahawkUtilsGui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 0c0917936e..7bc172d6fe 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -193,7 +193,7 @@ drawBackgroundAndNumbers( QPainter* painter, const QString& text, const QRect& f painter->setPen( origpen ); painter->setPen( Qt::white ); - painter->drawText( figRect.adjusted( -5, 0, 6, 0 ), text, QTextOption( Qt::AlignCenter ) ); + painter->drawText( figRect.adjusted( -5, 2, 6, 0 ), text, QTextOption( Qt::AlignCenter ) ); painter->restore(); } From b0a22afe8f0d2b9163daf7e8194151989a6c9f40 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 22 Dec 2012 22:13:31 +0100 Subject: [PATCH 022/310] Add icons for "Go to" entries in context menu. This fixes TWK-1135. --- src/libtomahawk/ContextMenu.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/ContextMenu.cpp b/src/libtomahawk/ContextMenu.cpp index eefad6b0fd..2cf7bef162 100644 --- a/src/libtomahawk/ContextMenu.cpp +++ b/src/libtomahawk/ContextMenu.cpp @@ -109,10 +109,13 @@ ContextMenu::setQueries( const QList& queries ) if ( m_supportedActions & ActionPage && itemCount() == 1 ) { - m_sigmap->setMapping( addAction( tr( "&Go to \"%1\"" ).arg( m_queries.first()->track() ) ), ActionTrackPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/track-icon.svg" ), + tr( "&Go to \"%1\"" ).arg( m_queries.first()->track() ) ), ActionTrackPage ); if ( !m_queries.first()->album().isEmpty() ) - m_sigmap->setMapping( addAction( tr( "Go to \"%1\"" ).arg( m_queries.first()->album() ) ), ActionAlbumPage ); - m_sigmap->setMapping( addAction( tr( "Go to \"%1\"" ).arg( m_queries.first()->artist() ) ), ActionArtistPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/album-icon.svg" ), + tr( "Go to \"%1\"" ).arg( m_queries.first()->album() ) ), ActionAlbumPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/artist-icon.svg" ), + tr( "Go to \"%1\"" ).arg( m_queries.first()->artist() ) ), ActionArtistPage ); } addSeparator(); @@ -164,8 +167,10 @@ ContextMenu::setAlbums( const QList& albums ) if ( m_supportedActions & ActionPage && itemCount() == 1 ) { - m_sigmap->setMapping( addAction( tr( "&Go to \"%1\"" ).arg( m_albums.first()->name() ) ), ActionAlbumPage ); - m_sigmap->setMapping( addAction( tr( "Go to \"%1\"" ).arg( m_albums.first()->artist()->name() ) ), ActionArtistPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/album-icon.svg" ), + tr( "&Go to \"%1\"" ).arg( m_albums.first()->name() ) ), ActionAlbumPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/artist-icon.svg" ), + tr( "Go to \"%1\"" ).arg( m_albums.first()->artist()->name() ) ), ActionArtistPage ); } //m_sigmap->setMapping( addAction( tr( "&Add to Playlist" ) ), ActionAddToPlaylist ); @@ -210,7 +215,8 @@ ContextMenu::setArtists( const QList& artists ) addSeparator(); if ( m_supportedActions & ActionPage && itemCount() == 1 ) - m_sigmap->setMapping( addAction( tr( "&Go to \"%1\"" ).arg( m_artists.first()->name() ) ), ActionArtistPage ); + m_sigmap->setMapping( addAction( ImageRegistry::instance()->icon( RESPATH "images/artist-icon.svg" ), + tr( "&Go to \"%1\"" ).arg( m_artists.first()->name() ) ), ActionArtistPage ); //m_sigmap->setMapping( addAction( tr( "&Add to Playlist" ) ), ActionAddToPlaylist ); From b43d3ea989d8fa3eadad6faf87149314612c5bc5 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 22 Dec 2012 22:44:15 +0100 Subject: [PATCH 023/310] Removed avatar of last peer who played a track from Recently Played. This fixes TWK-1132. --- src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp index a5dfe933d1..627e53e271 100644 --- a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp @@ -122,14 +122,12 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& const QString album = q->album(); const QString track = q->track(); int duration = q->duration(); - QPixmap avatar; QString lowerText; QSize avatarSize( 32, 32 ); source_ptr source = item->query()->playedBy().first; if ( m_mode == RecentlyPlayed && !source.isNull() ) { - avatar = source->avatar( TomahawkUtils::RoundedCorners, avatarSize ); QString playtime = TomahawkUtils::ageToString( QDateTime::fromTime_t( item->query()->playedBy().second ), true ); if ( source == SourceList::instance()->getLocal() ) @@ -178,9 +176,6 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& const QPixmap pixmap = m_pixmaps[ index ]->currentPixmap(); painter->drawPixmap( pixmapRect, pixmap ); - if ( !avatar.isNull() ) - painter->drawPixmap( avatarRect, avatar ); - QFont boldFont = opt.font; boldFont.setPointSize( TomahawkUtils::defaultFontSize() + 2 ); boldFont.setWeight( 99 ); @@ -195,7 +190,7 @@ PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& QFont smallFont = opt.font; smallFont.setPointSize( TomahawkUtils::defaultFontSize() - 1 ); - r.adjust( pixmapRect.width() + 12, 1, - 16 - avatar.width(), 0 ); + r.adjust( pixmapRect.width() + 12, 1, - 16, 0 ); QRect leftRect = r.adjusted( 0, 0, -48, 0 ); QRect rightRect = r.adjusted( r.width() - smallBoldFontMetrics.width( TomahawkUtils::timeToString( duration ) ), 0, 0, 0 ); From 7885c2fadb4ef7d5b14eae6024e7fe72b998e145 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 22 Dec 2012 23:28:09 +0100 Subject: [PATCH 024/310] Tweak color of source description text in the sources tree. This handles some stuff from TWK-1141. --- src/sourcetree/SourceDelegate.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/sourcetree/SourceDelegate.cpp b/src/sourcetree/SourceDelegate.cpp index 58d2f23f45..cf994fb941 100644 --- a/src/sourcetree/SourceDelegate.cpp +++ b/src/sourcetree/SourceDelegate.cpp @@ -191,6 +191,7 @@ SourceDelegate::paintCollection( QPainter* painter, const QStyleOptionViewItem& bool isPlaying = !( colItem->source()->currentTrack().isNull() ); QString desc = colItem->source()->textStatus(); + QColor descColor = QColor( "#8d8d8d" ); if ( colItem->source().isNull() ) desc = tr( "All available tracks" ); @@ -249,6 +250,9 @@ SourceDelegate::paintCollection( QPainter* painter, const QStyleOptionViewItem& } else m_lockRects.remove( index ); + + if ( isPlaying ) + descColor = Qt::black; } if ( m_trackHovered == index ) @@ -261,6 +265,7 @@ SourceDelegate::paintCollection( QPainter* painter, const QStyleOptionViewItem& text = painter->fontMetrics().elidedText( desc, Qt::ElideRight, textRect.width() - 8 ); QTextOption to( Qt::AlignVCenter ); to.setWrapMode( QTextOption::NoWrap ); + painter->setPen( descColor ); painter->drawText( textRect, text, to ); if ( colItem->source() && colItem->source()->currentTrack() ) From 12bea3708b65d762c4d0b29b7dc4edb767f11442 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 03:26:23 +0100 Subject: [PATCH 025/310] * 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 e8bf2b78a7..a9ef89a71f 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 026/310] * 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 28c1486029..dc770846c0 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 6b58515e3c..7ae70acbea 100644 --- a/src/breakpad/CrashReporter/main.cpp +++ b/src/breakpad/CrashReporter/main.cpp @@ -18,12 +18,12 @@ #include "CrashReporter.h" -#include "utils/TomahawkUtils.h" - #include - #include +#include "utils/TomahawkUtils.h" + + const char* k_usage = "Usage:\n" " CrashReporter \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 5864ebe722..baaa6874dc 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 8da42e4b55..c5b3401846 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 027/310] * Cleaned up ChangeLog. --- ChangeLog | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0b6243138..81045a56b7 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 028/310] 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 007675a6ae..e4747977ad 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 2afd7c3c2a..f9ee7d9a22 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 f7bb61a9dd..a911729d85 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 81deee2816..280d219da0 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 435fbbcaa9..acced110d3 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 4225329019..05f4c7e0b7 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 4dbe40d7cd..d725750431 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 dbf4288fc0..277fe0106e 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 6df145c1f1..882e7947d0 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 d019035d54..005b7427a9 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 464fd2a051..7234cb226d 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 25291cefb6..acb5f72038 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 ebdbc56f2b..59803e2559 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 950c9e7849..9abcfed19d 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 659404f250..b6ebcb559e 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 80b2f24a30..84ebf4133c 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 3e2e5c67e3..d2de16bb85 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 d35e760739..d56cb8de04 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 21845add02..cf3e185717 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 c6acfb0c3a..90d9d004f1 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 f5e1a23fd1..c58ec1699f 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 dc6ff0a1f1..f8c25d33b4 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 a60281ce2a..22bd0e6c98 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 029/310] * 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 15a1798e9b..1dd1e73ef1 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 fd52aa56f3..4cccd32242 100644 --- a/src/libtomahawk/PlaylistInterface.h +++ b/src/libtomahawk/PlaylistInterface.h @@ -96,8 +96,8 @@ public slots: 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 030/310] * 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 5e10f3b25d..444ab1d229 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 978e3e2867..35af08c17c 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 031/310] * 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 827e02bc75..218e070896 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 7b6d50d117..f134d2293e 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 032/310] * 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 c78872f017..76f4d2016d 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 c0b1810ed6..56b5836b34 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -123,8 +123,10 @@ Q_OBJECT 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 033/310] * 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 5752886ab0..842b9c8009 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 f470aa157f..393e5fd144 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 034/310] * 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 8dc09c41e8..7adf189af0 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 035/310] * 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 cf994fb941..0f5286b740 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 036/310] * 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 7adf189af0..4fa350e72b 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 037/310] * 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 76f4d2016d..c76be97312 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 56b5836b34..8b0b696471 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -120,9 +120,10 @@ Q_OBJECT 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 @@ public slots: 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 842b9c8009..2fe157d368 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 3db7f125a2..cec45783e3 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -94,6 +94,7 @@ Q_OBJECT void loadingFinished(); void indexPlayable( const QModelIndex& index ); + void indexResolved( const QModelIndex& index ); void currentIndexChanged(); void itemCountChanged( unsigned int items ); @@ -106,6 +107,7 @@ Q_OBJECT 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 2a82c8d85a..d4c68c50f7 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 038/310] * 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 393e5fd144..cccf817e59 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 3bc92478a6..69ca826dcd 100644 --- a/src/libtomahawk/playlist/PlaylistModel.h +++ b/src/libtomahawk/playlist/PlaylistModel.h @@ -57,6 +57,9 @@ typedef struct { 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 slots: 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 039/310] * 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 2d25eb3e13..45b1c13ba8 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 ce8ef7eae8..10f8ec8e08 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 040/310] * 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 c2023642a0..522723758d 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 f2755a03a0..ad8d206419 100644 --- a/src/libtomahawk/playlist/QueueProxyModel.h +++ b/src/libtomahawk/playlist/QueueProxyModel.h @@ -36,6 +36,7 @@ Q_OBJECT 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 041/310] * 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 5806e3ffd1..961131bb82 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 2eb2abb49d..e8ff20cd3b 100644 --- a/src/libtomahawk/Album.h +++ b/src/libtomahawk/Album.h @@ -94,7 +94,7 @@ private slots: 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 042/310] * 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 0431b0319f..a69bcab13b 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 043/310] * 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 2fe157d368..e86665a635 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 044/310] * 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 be1c1979bc..0461ceae6e 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 f79c58774d..04df7db1bb 100644 --- a/src/libtomahawk/utils/PixmapDelegateFader.h +++ b/src/libtomahawk/utils/PixmapDelegateFader.h @@ -81,7 +81,7 @@ private slots: 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 045/310] * 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 627e53e271..ed3858dbb6 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 046/310] * 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 0461ceae6e..9b0bd418dd 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 ); From 82a2f2a99cf5bb47c54fbca52c3baaf57c0a675d Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Sun, 23 Dec 2012 09:59:28 -0500 Subject: [PATCH 047/310] More changelogging --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index e0b6243138..6a95ee462f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ Version 0.6.0: * Ability to sync Spotify Starred Tracks with Tomahawk Loved Tracks + * Increased maximum number of temporary pages open to 20 * 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 From 408b104b8d6da16bc8fb08aca457e50aef0f136d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 17:23:45 +0100 Subject: [PATCH 048/310] * Don't even try to paint invalid GridItems. --- src/libtomahawk/playlist/GridItemDelegate.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/playlist/GridItemDelegate.cpp b/src/libtomahawk/playlist/GridItemDelegate.cpp index 6f45e5ac4e..9271dac32f 100644 --- a/src/libtomahawk/playlist/GridItemDelegate.cpp +++ b/src/libtomahawk/playlist/GridItemDelegate.cpp @@ -82,16 +82,13 @@ void GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { PlayableItem* item = m_model->sourceModel()->itemFromIndex( m_model->mapToSource( index ) ); - if ( !item ) + if ( !item || !index.isValid() ) return; QStyleOptionViewItemV4 opt = option; initStyleOption( &opt, QModelIndex() ); qApp->style()->drawControl( QStyle::CE_ItemViewItem, &opt, painter ); - painter->save(); - painter->setRenderHint( QPainter::Antialiasing ); - QRect r = option.rect; QString top, bottom; if ( !item->album().isNull() ) @@ -105,11 +102,18 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, { top = item->artist()->name(); } - else + else if ( !item->query().isNull() ) { top = item->query()->track(); bottom = item->query()->artist(); } + else + { + return; + } + + painter->save(); + painter->setRenderHint( QPainter::Antialiasing ); if ( !m_covers.contains( index ) ) { From 4629372c97a77ddf8cb76b59fb7a235628ce9754 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 17:24:18 +0100 Subject: [PATCH 049/310] * GridView shouldn't delete the old model when setting a new one. --- src/libtomahawk/playlist/GridView.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index eaf7e1ccaf..eff32c2347 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -131,9 +131,6 @@ GridView::setModel( QAbstractItemModel* model ) void GridView::setPlayableModel( PlayableModel* model ) { - if ( m_model ) - delete m_model; - m_inited = false; m_model = model; From 203f38cf2d29944b0cc638446bacf889a23d2dcf Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 17:24:39 +0100 Subject: [PATCH 050/310] * Style fixes in WhatsHotWidget. --- src/libtomahawk/widgets/WhatsHotWidget.cpp | 6 ++---- src/libtomahawk/widgets/WhatsHotWidget.h | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/widgets/WhatsHotWidget.cpp b/src/libtomahawk/widgets/WhatsHotWidget.cpp index 9e4347c851..31704a062f 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.cpp +++ b/src/libtomahawk/widgets/WhatsHotWidget.cpp @@ -123,7 +123,7 @@ WhatsHotWidget::~WhatsHotWidget() { qDebug() << "Deleting whatshot"; // Write the settings - qDebug() << "Writing chartIds to settings: " << m_currentVIds; + qDebug() << "Writing chartIds to settings:" << m_currentVIds; TomahawkSettings::instance()->setLastChartIds( m_currentVIds ); qDeleteAll( m_workers ); m_workers.clear(); @@ -175,7 +175,6 @@ WhatsHotWidget::jumpToCurrentTrack() void WhatsHotWidget::fetchData() { - Tomahawk::InfoSystem::InfoStringHash criteria; Tomahawk::InfoSystem::InfoRequestData requestData; @@ -384,7 +383,6 @@ WhatsHotWidget::infoSystemFinished( QString target ) void WhatsHotWidget::leftCrumbIndexChanged( QModelIndex index ) { - tDebug( LOGVERBOSE ) << "WhatsHot: left crumb changed" << index.data(); QStandardItem* item = m_crumbModelLeft->itemFromIndex( m_sortedProxy->mapToSource( index ) ); if ( !item ) @@ -530,13 +528,13 @@ WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString &label, cons return sourceItem; } + void WhatsHotWidget::setLeftViewAlbums( PlayableModel* model ) { ui->albumsView->setPlayableModel( model ); ui->albumsView->proxyModel()->sort( -1 ); // disable sorting, must be called after artistsViewLeft->setTreeModel ui->stackLeft->setCurrentIndex( 2 ); - } diff --git a/src/libtomahawk/widgets/WhatsHotWidget.h b/src/libtomahawk/widgets/WhatsHotWidget.h index 96ea998489..d42b34f10c 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.h +++ b/src/libtomahawk/widgets/WhatsHotWidget.h @@ -97,8 +97,8 @@ private slots: void setLeftViewAlbums( PlayableModel* albumModel ); void setLeftViewTracks( PlaylistModel* trackModel ); - QStandardItem* parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data ); + Ui::WhatsHotWidget *ui; Tomahawk::playlistinterface_ptr m_playlistInterface; From 3d210c05e58d74608ef664479ac32b903a2b06d7 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 18:52:11 +0100 Subject: [PATCH 051/310] * Fixed default row-height for PlaylistItemDelegate. --- src/libtomahawk/playlist/PlaylistItemDelegate.cpp | 8 +++----- src/libtomahawk/playlist/PlaylistItemDelegate.h | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp index c2f9328ce1..4da4f82d22 100644 --- a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp @@ -65,17 +65,15 @@ PlaylistItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModel { QSize size = QStyledItemDelegate::sizeHint( option, index ); - if ( index.isValid() ) { - int style = index.data( PlayableProxyModel::StyleRole ).toInt(); - if ( style == PlayableProxyModel::Short || style == PlayableProxyModel::ShortWithAvatars ) + if ( m_model->style() == PlayableProxyModel::Short || m_model->style() == PlayableProxyModel::ShortWithAvatars ) { int rowHeight = option.fontMetrics.height() + 8; size.setHeight( rowHeight * 2 ); } - else if ( style == PlayableProxyModel::Detailed ) + else if ( m_model->style() == PlayableProxyModel::Detailed ) { - int rowHeight = option.fontMetrics.height() * 1.4; + int rowHeight = option.fontMetrics.height() * 1.6; size.setHeight( rowHeight ); } } diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.h b/src/libtomahawk/playlist/PlaylistItemDelegate.h index 53aac9ed7d..1e81765f9c 100644 --- a/src/libtomahawk/playlist/PlaylistItemDelegate.h +++ b/src/libtomahawk/playlist/PlaylistItemDelegate.h @@ -34,7 +34,7 @@ class DLLEXPORT PlaylistItemDelegate : public QStyledItemDelegate Q_OBJECT public: - PlaylistItemDelegate( TrackView* parent = 0, PlayableProxyModel* proxy = 0 ); + PlaylistItemDelegate( TrackView* parent, PlayableProxyModel* proxy ); void updateRowSize( const QModelIndex& index ); From bc3824dfad5f4aa3f7b8bf68b168fa673f68fcad Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 18:52:56 +0100 Subject: [PATCH 052/310] * Fixed default row-height for TreeItemDelegate. --- src/libtomahawk/playlist/TreeItemDelegate.cpp | 29 +++++++++++++++++++ src/libtomahawk/playlist/TreeItemDelegate.h | 4 ++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/TreeItemDelegate.cpp b/src/libtomahawk/playlist/TreeItemDelegate.cpp index 207feca478..de7776f76a 100644 --- a/src/libtomahawk/playlist/TreeItemDelegate.cpp +++ b/src/libtomahawk/playlist/TreeItemDelegate.cpp @@ -45,6 +45,35 @@ TreeItemDelegate::TreeItemDelegate( TreeView* parent, TreeProxyModel* proxy ) } +QSize +TreeItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const +{ + QSize size = QStyledItemDelegate::sizeHint( option, index ); + + if ( index.isValid() ) + { + PlayableItem* item = m_model->sourceModel()->itemFromIndex( m_model->mapToSource( index ) ); + if ( item ) + { + if ( item->album() ) + { + size.setHeight( option.fontMetrics.height() * 3 ); + return size; + } + else if ( item->query() || item->result() ) + { + size.setHeight( option.fontMetrics.height() * 1.6 ); + return size; + } + } + } + + // artist per default + size.setHeight( option.fontMetrics.height() * 4 ); + return size; +} + + void TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { diff --git a/src/libtomahawk/playlist/TreeItemDelegate.h b/src/libtomahawk/playlist/TreeItemDelegate.h index 84dc69f452..7f80e50e73 100644 --- a/src/libtomahawk/playlist/TreeItemDelegate.h +++ b/src/libtomahawk/playlist/TreeItemDelegate.h @@ -36,7 +36,9 @@ class DLLEXPORT TreeItemDelegate : public QStyledItemDelegate Q_OBJECT public: - TreeItemDelegate( TreeView* parent = 0, TreeProxyModel* proxy = 0 ); + TreeItemDelegate( TreeView* parent, TreeProxyModel* proxy ); + + virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const; protected: void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; From c84a77c107eb449ccea8ea36a76edeb6f47b5347 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 18:53:10 +0100 Subject: [PATCH 053/310] * No more sizeHint-roles in PlayableModel. --- src/libtomahawk/playlist/PlayableModel.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index c76be97312..a5ab9943d2 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -144,9 +144,6 @@ PlayableModel::parent( const QModelIndex& child ) const QVariant PlayableModel::artistData( const artist_ptr& artist, int role ) const { - if ( role == Qt::SizeHintRole ) - return QSize( 0, 44 ); - if ( role != Qt::DisplayRole ) // && role != Qt::ToolTipRole ) return QVariant(); @@ -157,9 +154,6 @@ PlayableModel::artistData( const artist_ptr& artist, int role ) const QVariant PlayableModel::albumData( const album_ptr& album, int role ) const { - if ( role == Qt::SizeHintRole ) - return QSize( 0, 32 ); - if ( role != Qt::DisplayRole ) // && role != Qt::ToolTipRole ) return QVariant(); @@ -170,9 +164,6 @@ PlayableModel::albumData( const album_ptr& album, int role ) const QVariant PlayableModel::queryData( const query_ptr& query, int column, int role ) const { - if ( role == Qt::SizeHintRole ) - return QSize( 0, 18 ); - if ( role != Qt::DisplayRole ) // && role != Qt::ToolTipRole ) return QVariant(); From e5d5ebf0ece9e7b4e9e6095b958d2c51a4c842a6 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 20:26:46 +0100 Subject: [PATCH 054/310] * Properly calculate JobStatusItem's row height, taking current font settings into account. --- src/libtomahawk/jobview/JobStatusDelegate.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/jobview/JobStatusDelegate.cpp b/src/libtomahawk/jobview/JobStatusDelegate.cpp index 90a02b55c3..b2adf75025 100644 --- a/src/libtomahawk/jobview/JobStatusDelegate.cpp +++ b/src/libtomahawk/jobview/JobStatusDelegate.cpp @@ -19,13 +19,14 @@ #include "JobStatusDelegate.h" #include "JobStatusModel.h" +#include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" #include #include #include -#define ROW_HEIGHT 20 +#define ROW_HEIGHT ( TomahawkUtils::defaultFontHeight() + 6 ) #define ICON_PADDING 2 #define PADDING 2 @@ -80,7 +81,7 @@ JobStatusDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, rightEdge = rRect.left(); } - const int mainW = rightEdge - 4 * PADDING - iconRect.right(); + const int mainW = rightEdge - 6 * PADDING - iconRect.right(); QString mainText = index.data( Qt::DisplayRole ).toString(); QTextOption to( Qt::AlignLeft | Qt::AlignVCenter ); if ( !allowMultiLine ) @@ -98,9 +99,9 @@ JobStatusDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelInd const bool allowMultiLine = index.data( JobStatusModel::AllowMultiLineRole ).toBool(); if ( !allowMultiLine ) - return QSize( QStyledItemDelegate::sizeHint ( option, index ).width(), ROW_HEIGHT ); + return QSize( QStyledItemDelegate::sizeHint( option, index ).width(), ROW_HEIGHT ); else if ( m_cachedMultiLineHeights.contains( index ) ) - return QSize( QStyledItemDelegate::sizeHint ( option, index ).width(), m_cachedMultiLineHeights[ index ] ); + return QSize( QStyledItemDelegate::sizeHint( option, index ).width(), m_cachedMultiLineHeights[ index ] ); // Don't elide, but stretch across as many rows as required QStyleOptionViewItemV4 opt = option; From c0e4b76c8c1b2b28bd35bb2747bf27217f976966 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 20:27:14 +0100 Subject: [PATCH 055/310] * Make JobStatusItem's default weight 1, so that invalid items with a weight of 0 can be differentiated. --- src/libtomahawk/jobview/JobStatusItem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/jobview/JobStatusItem.h b/src/libtomahawk/jobview/JobStatusItem.h index dc85d8ae44..bd3041415a 100644 --- a/src/libtomahawk/jobview/JobStatusItem.h +++ b/src/libtomahawk/jobview/JobStatusItem.h @@ -44,7 +44,7 @@ class JobStatusItem : public QObject virtual ~JobStatusItem(); virtual QString type() const = 0; - virtual int weight() const { return 0; } + virtual int weight() const { return 1; } /// Please cache this. virtual QPixmap icon() const = 0; From 491060d5bcd823d2b7c5cfa12d63bdea40c23fbe Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 20:28:07 +0100 Subject: [PATCH 056/310] * Properly calculate ACLJobDelegate's sizeHint, taking current font settings into account. --- src/libtomahawk/jobview/AclJobItem.cpp | 27 ++++++++++------------ src/libtomahawk/jobview/JobStatusModel.cpp | 1 - 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/libtomahawk/jobview/AclJobItem.cpp b/src/libtomahawk/jobview/AclJobItem.cpp index e7ff72a603..6326251a46 100644 --- a/src/libtomahawk/jobview/AclJobItem.cpp +++ b/src/libtomahawk/jobview/AclJobItem.cpp @@ -19,20 +19,17 @@ #include "AclJobItem.h" -#include "JobStatusModel.h" -#include "utils/TomahawkUtils.h" -#include "utils/TomahawkUtilsGui.h" -#include "infosystem/InfoSystem.h" -#include "utils/Logger.h" - #include #include #include #include #include +#include "JobStatusModel.h" +#include "infosystem/InfoSystem.h" +#include "utils/TomahawkUtilsGui.h" +#include "utils/Logger.h" -#define ROW_HEIGHT 20 #define ICON_PADDING 1 #define PADDING 2 @@ -65,7 +62,6 @@ ACLJobDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co QApplication::style()->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget ); painter->setRenderHint( QPainter::Antialiasing ); - painter->fillRect( opt.rect, Qt::lightGray ); QString mainText = QString( tr( "Allow %1 to\nconnect and stream from you?" ) ).arg( item->username() ); @@ -85,11 +81,11 @@ ACLJobDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co int minPixels = 20; QString allowBtnText = tr( "Allow Streaming" ); - int allowBtnWidth = fm.width( allowBtnText ) + 2*PADDING; - allowBtnRect = QRect( opt.rect.left() + thirds - allowBtnWidth/2, opt.rect.bottom() - fm.height() - 4*PADDING, allowBtnWidth + 2*PADDING, fm.height() + 2*PADDING ); + int allowBtnWidth = fm.width( allowBtnText ) + 2 * PADDING; + allowBtnRect = QRect( opt.rect.left() + thirds - allowBtnWidth / 2, opt.rect.bottom() - fm.height() - 4 * PADDING, allowBtnWidth + 2 * PADDING, fm.height() + 2 * PADDING ); QString denyBtnText = tr( "Deny Access" ); - int denyBtnWidth = fm.width( denyBtnText ) + 2*PADDING; - denyBtnRect = QRect( opt.rect.right() - thirds - denyBtnWidth/2, opt.rect.bottom() - fm.height() - 4*PADDING, denyBtnWidth + 2*PADDING, fm.height() + 2*PADDING ); + int denyBtnWidth = fm.width( denyBtnText ) + 2 * PADDING; + denyBtnRect = QRect( opt.rect.right() - thirds - denyBtnWidth / 2, opt.rect.bottom() - fm.height() - 4 * PADDING, denyBtnWidth + 2 * PADDING, fm.height() + 2 * PADDING ); if ( allowBtnRect.right() >= denyBtnRect.left() ) { @@ -105,10 +101,11 @@ ACLJobDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co m_savedDenyRect = denyBtnRect; } + QSize ACLJobDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const { - QSize size( QStyledItemDelegate::sizeHint ( option, index ).width(), ROW_HEIGHT * 3 ); + QSize size( QStyledItemDelegate::sizeHint( option, index ).width(), ( TomahawkUtils::defaultFontHeight() + 6 ) * 3.5 ); return size; } @@ -117,9 +114,9 @@ void ACLJobDelegate::drawRoundedButton( QPainter* painter, const QRect& btnRect, bool red ) const { if ( !red ) - TomahawkUtils::drawRoundedButton( painter, btnRect, QColor(54, 127, 211), QColor(43, 104, 182), QColor(34, 85, 159), QColor(35, 79, 147) ); + TomahawkUtils::drawRoundedButton( painter, btnRect, QColor( 54, 127, 211 ), QColor( 43, 104, 182 ), QColor( 34, 85, 159 ), QColor( 35, 79, 147 ) ); else - TomahawkUtils::drawRoundedButton( painter, btnRect, QColor(206, 63, 63), QColor(170, 52, 52), QColor(150, 50, 50), QColor(130, 40, 40) ); + TomahawkUtils::drawRoundedButton( painter, btnRect, QColor( 206, 63, 63 ), QColor( 170, 52, 52 ), QColor( 150, 50, 50 ), QColor( 130, 40, 40 ) ); } diff --git a/src/libtomahawk/jobview/JobStatusModel.cpp b/src/libtomahawk/jobview/JobStatusModel.cpp index 8a364e926e..73793aab7a 100644 --- a/src/libtomahawk/jobview/JobStatusModel.cpp +++ b/src/libtomahawk/jobview/JobStatusModel.cpp @@ -88,7 +88,6 @@ JobStatusSortModel::lessThan( const QModelIndex& left, const QModelIndex& right if ( leftSort == rightSort ) return left.data( JobStatusModel::AgeRole ).toUInt() > right.data( JobStatusModel::AgeRole ).toUInt(); - return leftSort < rightSort; } From 130a8e7917012e9a87a753adcb3513e780e2fe96 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 20:50:13 +0100 Subject: [PATCH 057/310] * Use a textual score representation instead of the bar. --- src/libtomahawk/playlist/PlayableModel.cpp | 19 +++++++++++++++++-- .../playlist/PlaylistItemDelegate.cpp | 12 ++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index a5ab9943d2..b77530beaa 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -47,7 +47,7 @@ PlayableModel::PlayableModel( QObject* parent, bool loading ) connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( onPlaybackStopped() ), Qt::DirectConnection ); m_header << tr( "Artist" ) << tr( "Title" ) << tr( "Composer" ) << tr( "Album" ) << tr( "Track" ) << tr( "Duration" ) - << tr( "Bitrate" ) << tr( "Age" ) << tr( "Year" ) << tr( "Size" ) << tr( "Origin" ) << tr( "Score" ) << tr( "Name" ); + << tr( "Bitrate" ) << tr( "Age" ) << tr( "Year" ) << tr( "Size" ) << tr( "Origin" ) << tr( "Accuracy" ) << tr( "Name" ); } @@ -235,8 +235,22 @@ PlayableModel::queryData( const query_ptr& query, int column, int role ) const break; case Score: - return query->results().first()->score(); + { + float score = query->results().first()->score(); + if ( score == 1.0 ) + return tr( "Perfect match" ); + if ( score > 0.9 ) + return tr( "Very good match" ); + if ( score > 0.7 ) + return tr( "Good match" ); + if ( score > 0.5 ) + return tr( "Vague match" ); + if ( score > 0.3 ) + return tr( "Bad match" ); + + return tr( "Not available" ); break; + } default: break; @@ -679,6 +693,7 @@ PlayableModel::columnAlignment( int column ) const case Bitrate: case Duration: case Filesize: + case Score: case Year: return Qt::AlignHCenter; break; diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp index 4da4f82d22..5cf8924007 100644 --- a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp @@ -240,11 +240,11 @@ PlaylistItemDelegate::paintDetailed( QPainter* painter, const QStyleOptionViewIt painter->save(); - if ( index.column() == PlayableModel::Score ) +/* if ( index.column() == PlayableModel::Score ) { QColor barColor( 167, 183, 211 ); // This matches the sidebar (sourcetreeview.cpp:672) - if ( opt.state & QStyle::State_Selected ) - painter->setPen( opt.palette.brightText().color() ); + if ( opt.state & QStyle::State_Selected && !item->isPlaying() ) + painter->setPen( Qt::white ); else painter->setPen( barColor ); @@ -255,14 +255,14 @@ PlaylistItemDelegate::paintDetailed( QPainter* painter, const QStyleOptionViewIt int fillerWidth = (int)( index.data().toFloat() * (float)fillR.width() ); fillR.adjust( 0, 0, -( fillR.width() - fillerWidth ), 0 ); - if ( opt.state & QStyle::State_Selected ) - painter->setBrush( opt.palette.brightText().color() ); + if ( opt.state & QStyle::State_Selected && !item->isPlaying() ) + painter->setBrush( TomahawkUtils::Colors::NOW_PLAYING_ITEM.lighter() ); else painter->setBrush( barColor ); painter->drawRect( fillR ); } - else if ( item->isPlaying() ) + else */ if ( item->isPlaying() ) { QRect r = opt.rect.adjusted( 3, 0, 0, 0 ); From c2388829bc00cc6a0e50332273f78315bd4606cd Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 21:08:30 +0100 Subject: [PATCH 058/310] * Forgot very bad match. --- src/libtomahawk/playlist/PlayableModel.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index b77530beaa..65e82ce248 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -247,6 +247,8 @@ PlayableModel::queryData( const query_ptr& query, int column, int role ) const return tr( "Vague match" ); if ( score > 0.3 ) return tr( "Bad match" ); + if ( score > 0.0 ) + return tr( "Very bad match" ); return tr( "Not available" ); break; From f923716628148a6e69f55e45fcb2003bd16fbdd1 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 21:10:47 +0100 Subject: [PATCH 059/310] * Huh, our up- & download images have been reversed. --- src/libtomahawk/jobview/TransferStatusItem.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/jobview/TransferStatusItem.cpp b/src/libtomahawk/jobview/TransferStatusItem.cpp index 168cb26c98..ea6fa319d1 100644 --- a/src/libtomahawk/jobview/TransferStatusItem.cpp +++ b/src/libtomahawk/jobview/TransferStatusItem.cpp @@ -85,9 +85,9 @@ TransferStatusItem::icon() const return QPixmap(); if ( m_stream.data()->type() == StreamConnection::SENDING ) - return m_parent->rxPixmap(); - else return m_parent->txPixmap(); + else + return m_parent->rxPixmap(); } From 99ba2ccc00450ed6d63736d111d50aae79fdbbec Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 23 Dec 2012 21:15:42 +0100 Subject: [PATCH 060/310] * Disable cli help for --http & --filescan (for now). --- src/TomahawkApp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index dc770846c0..7ab3ef2123 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -388,8 +388,8 @@ TomahawkApp::printHelp() echo( "Usage: " + arguments().at( 0 ) + " [options] [url]" ); echo( "Options are:" ); echo( " --help Show this help" ); - echo( " --http Initialize HTTP server" ); - echo( " --filescan Scan files on startup" ); +// echo( " --http Initialize HTTP server" ); +// echo( " --filescan Scan files on startup" ); // echo( " --headless Run without a GUI" ); echo( " --hide Hide main window on startup" ); echo( " --testdb Use a test database instead of real collection" ); From 2bb2728a1070296a0ad1e7fae6f298d584e81ea0 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Mon, 24 Dec 2012 01:16:41 +0100 Subject: [PATCH 061/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_bg.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_bn_IN.ts | 101 +++++++++++++++++++++++++------------- lang/tomahawk_ca.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_de.ts | 107 +++++++++++++++++++++++++++-------------- lang/tomahawk_el.ts | 101 +++++++++++++++++++++++++------------- lang/tomahawk_en.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_es.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_fi.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_fr.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_gl.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_hi_IN.ts | 101 +++++++++++++++++++++++++------------- lang/tomahawk_hu.ts | 101 +++++++++++++++++++++++++------------- lang/tomahawk_it.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_ja.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_lt.ts | 107 +++++++++++++++++++++++++++-------------- lang/tomahawk_pl.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_pt_BR.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_ru.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_sv.ts | 101 +++++++++++++++++++++++++------------- lang/tomahawk_tr.ts | 101 +++++++++++++++++++++++++------------- lang/tomahawk_zh_CN.ts | 103 ++++++++++++++++++++++++++------------- lang/tomahawk_zh_TW.ts | 101 +++++++++++++++++++++++++------------- 23 files changed, 1584 insertions(+), 779 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index e4747977ad..906fc6483a 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? هل تريد السماح ل%1 بالربط و التحميل منك؟ - + Allow Streaming السماح بالتحميل - + Deny Access رفض الوصول @@ -22,7 +22,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. توماهوك يريد منك ان تقرر ان كنت تريد السماح ل%1 بالربط بك. @@ -1016,12 +1016,47 @@ connect and stream from you? - Score - علامة + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name إسم @@ -1029,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you سمعت %1 - + played %1 by %2 %2 سمع %1 @@ -1042,31 +1077,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 @@ -1075,23 +1110,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 جميع أغاني %1 في البوم %2 - + All tracks by %1 جميع أغاني %1 @@ -1315,17 +1350,17 @@ connect and stream from you? QueueView - + Open Queue إفتح قائمة الإنتظار - + Open Queue - %n item(s) إفتح قائمة الإنتظار - %n بندإفتح قائمة الإنتظار - بند %nإفتح قائمة الإنتظار - بندين %nإفتح قائمة الإنتظار - %n بنودإفتح قائمة الإنتظار - %n بنودإفتح قائمة الإنتظار - %n بنود - + Close Queue أغلق قائمة الإنتظار @@ -1624,44 +1659,44 @@ connect and stream from you? SourceDelegate - + Track اغنية - + Album البوم - + Artist فنان - + Local محلية - + Top 10 توب ١٠ - + All available tracks جميع الأغاني المتاحة - - + + Show أظهر - - + + Hide إخفي @@ -3647,7 +3682,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. عذراً، ترشيحك "%1" لم يطابق أي نتائج. @@ -3670,7 +3705,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown مجهول diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index f9ee7d9a22..1ccdce387b 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Може ли %1 да се свърже и да слуша музика от теб? - + Allow Streaming Позволи разпространение - + Deny Access Откажи достъп @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Трябва да решиш, дали %1 може да се свърже с теб @@ -1019,12 +1019,47 @@ Tomahaw създаде доклад относно това и изпращай - Score - Резултат + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Име @@ -1032,12 +1067,12 @@ Tomahaw създаде доклад относно това и изпращай PlaylistItemDelegate - + played %1 by you изпълнена %1 от мен - + played %1 by %2 изпълнена %1 от %2 @@ -1045,31 +1080,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> @@ -1078,23 +1113,23 @@ Tomahaw създаде доклад относно това и изпращай PlaylistModel - + A playlist you created %1. Списък, създаден от %1 - - + + A playlist by %1, created %2. Списък с изпълнения на %1, създаден от %2 - + All tracks by %1 on album %2 Всички песни от %1, от албум %2 - + All tracks by %1 Всички песни от %1 @@ -1320,17 +1355,17 @@ Tomahaw създаде доклад относно това и изпращай QueueView - + Open Queue Отвори опашката - + Open Queue - %n item(s) Отвори опашка - %n елементОтвори опашка - %n елемента - + Close Queue Затвори опашката @@ -1631,44 +1666,44 @@ Tomahaw създаде доклад относно това и изпращай SourceDelegate - + Track Песен - + Album Албум - + Artist Артист - + Local Локално - + Top 10 Първите 10 - + All available tracks Всички налични изпълнения - - + + Show Покажи - - + + Hide Скрий @@ -3662,7 +3697,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Съжалявам, твоят филтър %1 не върна никакъв резултат. @@ -3685,7 +3720,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Неизвестно diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index a911729d85..f26befa9cd 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 280d219da0..67bf3e5ace 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score - Puntuació + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nom @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you reproduït %1 - + played %1 by %2 reproduït %1 per %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Totes les cançons de %1 a l'àlbum %2 - + All tracks by %1 Totes les cançons de %1 @@ -1313,17 +1348,17 @@ connect and stream from you? QueueView - + Open Queue Obre la cua - + Open Queue - %n item(s) Obre la cua - %n elementObre la cua - %n elements - + Close Queue Tanca la cua @@ -1622,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Cançó - + Album Àlbum - + Artist Artista - + Local Local - + Top 10 Top 10 - + All available tracks Totes les cançons disponibles - - + + Show Mostra - - + + Hide Amaga @@ -3645,7 +3680,7 @@ introduïu el PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. El filtre '%1' no ha obtingut cap resultat. @@ -3668,7 +3703,7 @@ introduïu el PIN aquí: TreeItemDelegate - + Unknown Desconegut diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index acced110d3..b3e496a66d 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Willst du %1 erlauben sich mit dir zu verbinden? - + Allow Streaming Zugriff erlauben - + Deny Access Zugriff verweigern @@ -22,7 +22,7 @@ erlauben sich mit dir zu verbinden? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk will wissen, ob du dich mit %1 verbinden möchtest. @@ -1016,12 +1016,47 @@ erlauben sich mit dir zu verbinden? - Score - Wertung + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Name @@ -1029,12 +1064,12 @@ erlauben sich mit dir zu verbinden? PlaylistItemDelegate - + played %1 by you angehört %1 von dir - + played %1 by %2 angehört %1 von %2 @@ -1042,31 +1077,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> @@ -1075,23 +1110,23 @@ erlauben sich mit dir zu verbinden? PlaylistModel - + A playlist you created %1. Eine Playlist die du %1 erstellt hast. - - + + A playlist by %1, created %2. Eine Playlist von %1, erstellt %2. - + All tracks by %1 on album %2 Alle Lieder von %1 auf dem Album %2 - + All tracks by %1 Alle Lieder von %1 @@ -1314,17 +1349,17 @@ erlauben sich mit dir zu verbinden? QueueView - + Open Queue Warteschlange öffnen - + Open Queue - %n item(s) Warteschlange öffnen - Ein LiedWarteschlange öffnen - %n Lieder - + Close Queue Warteschlange schliessen @@ -1623,44 +1658,44 @@ erlauben sich mit dir zu verbinden? SourceDelegate - + Track Lied - + Album Album - + Artist Künstler - + Local Lokal - + Top 10 Top 10 - + All available tracks Alle verfügbaren Stücke - - + + Show Einblenden - - + + Hide Verstecken @@ -1929,7 +1964,7 @@ erlauben sich mit dir zu verbinden? Sync Starred tracks to Loved tracks - + Starred Tracks mit Lieblingsliedern synchronisieren @@ -3138,7 +3173,7 @@ Versuch die Filter anzupassen für neue Lieder. Track '%1' by %2 is not streamable. - + Lied '%1' von %2 ist nicht abspielbar. @@ -3644,7 +3679,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. @@ -3667,7 +3702,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TreeItemDelegate - + Unknown Unbekannt diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 05f4c7e0b7..10e5fae820 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name Όνομα @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you παίχθηκε %1 από εσάς - + played %1 by %2 παίχθηκε %1 από τον/την %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Όλα τα κομμάτια από τον/την %1 στο άλμπουμ %2 - + All tracks by %1 Όλα τα κομμάτια από τον/την %1 @@ -1313,17 +1348,17 @@ connect and stream from you? QueueView - + Open Queue Άνοιγμα Σειράς - + Open Queue - %n item(s) Άνοιγμα Σειράς - %n αντικείμενοΆνοιγμα Σειράς - %n αντικείμενα - + Close Queue Κλείσιμο Σειράς @@ -1622,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Κομμάτι - + Album Άλμπουμ - + Artist Καλλιτέχνης - + Local Τοπικό - + Top 10 Κορυφαία 10 - + All available tracks Όλα τα διαθέσιμα τραγούδια - - + + Show Προβολή - - + + Hide Απόκρυψη @@ -3644,7 +3679,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Συγγνώμη, το φίλτρο «%1» δεν αντιστοίχισε αποτελέσματα. @@ -3667,7 +3702,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Άγνωστο diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index d725750431..040e908213 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Allow %1 to connect and stream from you? - + Allow Streaming Allow Streaming - + Deny Access Deny Access @@ -22,7 +22,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1016,12 +1016,47 @@ connect and stream from you? - Score - Score + Accuracy + Accuracy + + + + Perfect match + Perfect match + + + + Very good match + Very good match + + + + Good match + Good match + + + + Vague match + Vague match + + + + Bad match + Bad match + + + + Very bad match + Very bad match + + + + Not available + Not available - + Name Name @@ -1029,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you played %1 by you - + played %1 by %2 played %1 by %2 @@ -1042,31 +1077,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> @@ -1075,23 +1110,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. A playlist you created %1. - - + + A playlist by %1, created %2. A playlist by %1, created %2. - + All tracks by %1 on album %2 All tracks by %1 on album %2 - + All tracks by %1 All tracks by %1 @@ -1314,17 +1349,17 @@ connect and stream from you? QueueView - + Open Queue Open Queue - + Open Queue - %n item(s) Open Queue - %n itemOpen Queue - %n items - + Close Queue Close Queue @@ -1626,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track Track - + Album Album - + Artist Artist - + Local Local - + Top 10 Top 10 - + All available tracks All available tracks - - + + Show Show - - + + Hide Hide @@ -3649,7 +3684,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Sorry, your filter '%1' did not match any results. @@ -3672,7 +3707,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Unknown diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 277fe0106e..90c1d0bceb 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? ¿Permite a %1 conectarse a usted y transmitir música? - + Allow Streaming Autorizar streaming - + Deny Access Denegar acceso @@ -22,7 +22,7 @@ conectarse a usted y transmitir música? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk necesita que decida si %1 está autorizado a conectarse @@ -1016,12 +1016,47 @@ conectarse a usted y transmitir música? - Score - Puntuación + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Título @@ -1029,12 +1064,12 @@ conectarse a usted y transmitir música? PlaylistItemDelegate - + played %1 by you %1 reproducido por usted - + played %1 by %2 %1 reproducido por %2 @@ -1042,31 +1077,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 @@ -1075,23 +1110,23 @@ conectarse a usted y transmitir música? PlaylistModel - + A playlist you created %1. Lista de reproducción creada %1. - - + + A playlist by %1, created %2. Lista de reproducción de %1, creada %2. - + All tracks by %1 on album %2 Todas las pistas de %1 en el álbum %2 - + All tracks by %1 Todas las pistas de %1 @@ -1314,17 +1349,17 @@ conectarse a usted y transmitir música? QueueView - + Open Queue Abrir cola - + Open Queue - %n item(s) Abrir cola - %n pistaAbrir cola - %n pistas - + Close Queue Cerrar cola @@ -1626,44 +1661,44 @@ y estaciones basadas en sus gustos personales. SourceDelegate - + Track Pista - + Album Álbum - + Artist Artista - + Local Local - + Top 10 Top 10 - + All available tracks Todas las pistas disponibles - - + + Show Mostrar - - + + Hide Ocultar @@ -3649,7 +3684,7 @@ introduzca su número PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. Lo siento, tu filtro '%1' no ha encontrado resultados. @@ -3672,7 +3707,7 @@ introduzca su número PIN aquí: TreeItemDelegate - + Unknown Desconocido diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 882e7947d0..b5333be3ff 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Sallitaanko käyttäjän %1 yhdistää ja toistaa sinulta virtaa? - + Allow Streaming Salli virran toisto - + Deny Access Kiellä pääsy @@ -22,7 +22,7 @@ yhdistää ja toistaa sinulta virtaa? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk tarvitsee sinua päättämään, sallitaanko käyttäjän %1 yhdistää. @@ -1016,12 +1016,47 @@ yhdistää ja toistaa sinulta virtaa? - Score - Pisteet + Accuracy + Tarkkuus + + + + Perfect match + Täysosuma + + + + Very good match + Erittäin hyvä osuma + + + + Good match + Hyvä osuma + + + + Vague match + Epämääräinen osuma + + + + Bad match + Kehno osuma + + + + Very bad match + Erittäin kehno osuma + + + + Not available + Ei saatavilla - + Name Nimi @@ -1029,12 +1064,12 @@ yhdistää ja toistaa sinulta virtaa? PlaylistItemDelegate - + played %1 by you kuuntelit %1 - + played %1 by %2 %2 kuunteli %1 @@ -1042,31 +1077,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> @@ -1075,23 +1110,23 @@ yhdistää ja toistaa sinulta virtaa? PlaylistModel - + A playlist you created %1. Soittolista, jonka loit %1. - - + + A playlist by %1, created %2. Soittolista, jonka %1 loi %2. - + All tracks by %1 on album %2 Kaikki artistin %1 kappaleet albumilla %2 - + All tracks by %1 Kaikki artistin %1 kappaleet @@ -1314,17 +1349,17 @@ yhdistää ja toistaa sinulta virtaa? QueueView - + Open Queue Avaa jono - + Open Queue - %n item(s) Avaa jono – %n kohdeAvaa jono – %n kohdetta - + Close Queue Sulje jono @@ -1628,44 +1663,44 @@ käyttäjäradion käyttöönottamiseksi SourceDelegate - + Track Kappale - + Album Albumi - + Artist Artisti - + Local Paikallinen - + Top 10 Kymmenen kärki - + All available tracks Kaikki saatavilla olevat kappaleet - - + + Show Näytä - - + + Hide Piilota @@ -3652,7 +3687,7 @@ anna siellä näytetty PIN-koodi tähän: TrackView - + Sorry, your filter '%1' did not match any results. Valitettavasti suodattimesi ”%1” ei tuottanut yhtään tuloksia. @@ -3675,7 +3710,7 @@ anna siellä näytetty PIN-koodi tähän: TreeItemDelegate - + Unknown Tuntematon diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 005b7427a9..c60aef685e 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Permettre a %1 de se connecter et streamer de vous? - + Allow Streaming Permettre Streaming - + Deny Access Refuser l'accès @@ -22,7 +22,7 @@ de se connecter et streamer de vous? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk a besoin de vous pour décider si %1 est autorisé à se connecter. @@ -1016,12 +1016,47 @@ de se connecter et streamer de vous? - Score - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nom @@ -1029,12 +1064,12 @@ de se connecter et streamer de vous? PlaylistItemDelegate - + played %1 by you joué %1 par vous - + played %1 by %2 joué %1 par %2 @@ -1042,31 +1077,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 @@ -1075,23 +1110,23 @@ de se connecter et streamer de vous? PlaylistModel - + A playlist you created %1. Une liste de lecture crée %1 - - + + A playlist by %1, created %2. Une liste de lecture par %1, crée %2 - + All tracks by %1 on album %2 Tous les titres de %1 sur l'album %2 - + All tracks by %1 Tous les titres de %1 @@ -1314,17 +1349,17 @@ de se connecter et streamer de vous? QueueView - + Open Queue Ouvrir la file d'attente - + Open Queue - %n item(s) Ouvrir la file d'attente - %n élémentOuvrir la file d'attente - %n éléments - + Close Queue Fermer la file d'attente @@ -1623,44 +1658,44 @@ de se connecter et streamer de vous? SourceDelegate - + Track Piste - + Album Album - + Artist Artiste - + Local Local - + Top 10 Top 10 - + All available tracks Tous les titres disponibles - - + + Show Afficher - - + + Hide Masquer @@ -3646,7 +3681,7 @@ saisissez le numéro PIN ici : TrackView - + Sorry, your filter '%1' did not match any results. Désolé, votre filtre '%1' ne correspond à aucun résultat. @@ -3669,7 +3704,7 @@ saisissez le numéro PIN ici : TreeItemDelegate - + Unknown Inconnu diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 7234cb226d..c18c01d6dc 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Quere permitirlle a %1 que se conecte en stream contigo? - + Allow Streaming Permitir o streaming - + Deny Access Negar o acceso @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk precisa que decidas se %1 pode conectarse. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score - Puntuación + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nome @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you escoitou %1 por coñecela por ti - + played %1 by %2 escoitou %1 por coñecela por %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. Unha lista de reprodución que ti creaches %1. - - + + A playlist by %1, created %2. Unha lista reprodución de %1, creada por %2. - + All tracks by %1 on album %2 Tódalas pistas de %1 no álbum %2 - + All tracks by %1 Tódalas pistas de %1 @@ -1313,17 +1348,17 @@ connect and stream from you? QueueView - + Open Queue Abrir a ringleira - + Open Queue - %n item(s) Abrir a ringleira - %n elemento(s) - + Close Queue Pechar a ringleira @@ -1622,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Pista - + Album Álbum - + Artist Artista - + Local Local - + Top 10 Os 10 primeiros - + All available tracks Tódolas pistas dispoñíbeis - - + + Show Mostrar - - + + Hide Agochar @@ -3647,7 +3682,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. O filtro «%1» non dá ningún resultado. @@ -3670,7 +3705,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Descoñecido diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index acb5f72038..796b8ccb27 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 59803e2559..e2893ef0e4 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name Név @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track Zeneszám - + Album Album - + Artist Előadó - + Local Helyi - + Top 10 Top 10 - + All available tracks Összes elérhető zeneszám - - + + Show Mutatás - - + + Hide Elrejtés @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 9abcfed19d..0bd41b80d6 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score - Punteggio + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nome @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you ascoltata %1 da te - + played %1 by %2 ascoltata %1 da %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Tutte le tracce di %1 sull'album %2 - + All tracks by %1 Tutte le tracce di %1 @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue Espandi coda - + Open Queue - %n item(s) Espandi coda - un elementoEspandi coda - %n elementi - + Close Queue Collassa coda @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track Traccia - + Album Album - + Artist Artista - + Local Locale - + Top 10 Top 10 - + All available tracks Tutte le tracce disponibili - - + + Show Mostra - - + + Hide Nascondi @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Spiacente, il tuo filtro %1 non ha trovato nessun risultato. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Sconosciuto diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index b6ebcb559e..2875317fc8 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? %1からの接続、又はストリーミングを許可しますか? - + Allow Streaming ストリーミングを許可 - + Deny Access アクセスを拒否 @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. %1からの接続を許可することが必要です。 @@ -1016,12 +1016,47 @@ connect and stream from you? - Score - スコア + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name 名前 @@ -1029,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you %1を再生しました。 - + played %1 by %2 %2が%1を再生しました。 @@ -1042,31 +1077,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> @@ -1075,23 +1110,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. %1に作ったプレイリスト。 - - + + A playlist by %1, created %2. %2に、%1に作られたプレイリスト。 - + All tracks by %1 on album %2 %1のアルバム%2のトラック - + All tracks by %1 %1のトラック @@ -1314,17 +1349,17 @@ connect and stream from you? QueueView - + Open Queue キューを表示 - + Open Queue - %n item(s) キューを表示 - %n項目 - + Close Queue キューを隠す @@ -1626,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track トラック - + Album アルバム - + Artist アーティスト - + Local ローカル - + Top 10 トップ10 - + All available tracks 利用可能トラック - - + + Show 表示 - - + + Hide 隠す @@ -3650,7 +3685,7 @@ Meta+Ctrl+Z TrackView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 @@ -3673,7 +3708,7 @@ Meta+Ctrl+Z TreeItemDelegate - + Unknown 不明 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 84ebf4133c..79e4be9f1a 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming Leisti transliavimą - + Deny Access Drausti priėjimą @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score - Įvertis + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Vardas @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Visi %1 takeliai iš albumo %2 - + All tracks by %1 Visi %1 takeliai @@ -1285,7 +1320,7 @@ connect and stream from you? Status Updaters - + Būsenos atnaujintojai @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue Atverti eilę - + Open Queue - %n item(s) Atverti eilę - %n elementasAtverti eilę - %n elementaiAtverti eilę - %n elementų - + Close Queue Užverti eilę @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track Takelis - + Album Albumas - + Artist Atlikėjas - + Local - + Top 10 Top 10 - + All available tracks Visi prieinami takeliai - - + + Show Rodyti - - + + Hide Slėpti @@ -2047,7 +2082,7 @@ connect and stream from you? username@gmail.com - + vartotojas@gmail.com @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index d2de16bb85..85f80b250f 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Pozwolić %1 połączyć się i strumieniować od ciebie? - + Allow Streaming Zezwól na strumieniowanie - + Deny Access Zablokuj dostęp @@ -22,7 +22,7 @@ połączyć się i strumieniować od ciebie? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Musisz zdecydować, czy Tomahawk ma pozwolić %1 na połączenie. @@ -1016,12 +1016,47 @@ połączyć się i strumieniować od ciebie? - Score - Ocena + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name @@ -1029,12 +1064,12 @@ połączyć się i strumieniować od ciebie? PlaylistItemDelegate - + played %1 by you odtworzone %1 przez ciebie - + played %1 by %2 odtworzone %1 przez %2 @@ -1042,31 +1077,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 @@ -1075,23 +1110,23 @@ połączyć się i strumieniować od ciebie? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Wszystkie piosenki %1 z albumu %2 - + All tracks by %1 Wszystkie piosenki %1 @@ -1314,17 +1349,17 @@ połączyć się i strumieniować od ciebie? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1623,44 +1658,44 @@ połączyć się i strumieniować od ciebie? SourceDelegate - + Track Utwór - + Album Album - + Artist Artysta - + Local Lokalny - + Top 10 Top 10 - + All available tracks Wszystkie dostępne utwory - - + + Show Pokaż - - + + Hide Ukryj @@ -3646,7 +3681,7 @@ wprowadź pokazany numer PIN tutaj: TrackView - + Sorry, your filter '%1' did not match any results. Przepraszamy, twój filtr '%1' nie dopasował żadnych wyników. @@ -3669,7 +3704,7 @@ wprowadź pokazany numer PIN tutaj: TreeItemDelegate - + Unknown Nieznany diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index d56cb8de04..74aa397b1e 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Permitir que %1 ⏎ se conecte e faça o stream de você? - + Allow Streaming Permitir Streaming - + Deny Access Negar Acesso @@ -22,7 +22,7 @@ se conecte e faça o stream de você? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk precisa que você decida se %1 tem permissão para conectar. @@ -1016,12 +1016,47 @@ se conecte e faça o stream de você? - Score - Pontuação + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Nome @@ -1029,12 +1064,12 @@ se conecte e faça o stream de você? PlaylistItemDelegate - + played %1 by you tocou %1 por você - + played %1 by %2 tocou %1 por %2 @@ -1042,31 +1077,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> @@ -1075,23 +1110,23 @@ se conecte e faça o stream de você? PlaylistModel - + A playlist you created %1. Uma lista de reprodução que você criou %1. - - + + A playlist by %1, created %2. Uma lista de reprodução de %1, criada %2. {1,?} - + All tracks by %1 on album %2 Todas as faixas de %1 no álbum %2 - + All tracks by %1 Todas as faixas de %1 @@ -1314,17 +1349,17 @@ se conecte e faça o stream de você? QueueView - + Open Queue Abrir Lista - + Open Queue - %n item(s) Abrir Fila - %n itemAbrir Fila - %n itens - + Close Queue Fechar Lista @@ -1623,44 +1658,44 @@ se conecte e faça o stream de você? SourceDelegate - + Track Faixa - + Album Álbum - + Artist Artista - + Local Local - + Top 10 10 Mais - + All available tracks Todas as faixas disponíveis - - + + Show Mostrar - - + + Hide Ocultar @@ -3646,7 +3681,7 @@ colocar o número PIN mostrado aqui: TrackView - + Sorry, your filter '%1' did not match any results. Desculpe, o seu filtro '%1' não encontreou nenhum resultado. @@ -3669,7 +3704,7 @@ colocar o número PIN mostrado aqui: TreeItemDelegate - + Unknown Desconhecido diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index cf3e185717..f5eb235a10 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -2,19 +2,19 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? Разрешить %1 ⏎ подключиться и слушать ваш поток? - + Allow Streaming Разрешить Поток - + Deny Access Запретить доступ @@ -22,7 +22,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1016,12 +1016,47 @@ connect and stream from you? - Score - Количество воспроизведений + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name Имя @@ -1029,12 +1064,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you Проиграно %1 мной - + played %1 by %2 Песня %1 проиграна %2 @@ -1042,31 +1077,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 @@ -1075,23 +1110,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Все песни %1 альбома %2 - + All tracks by %1 Все песни %1 @@ -1314,17 +1349,17 @@ connect and stream from you? QueueView - + Open Queue Показать Очередь - + Open Queue - %n item(s) - + Close Queue Спрятать Очередь @@ -1623,44 +1658,44 @@ connect and stream from you? SourceDelegate - + Track Трек - + Album Альбом - + Artist Исполнитель - + Local Локальная - + Top 10 Топ 10 - + All available tracks Доступные песни - - + + Show Показать - - + + Hide Спрятать @@ -3643,7 +3678,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Ваш поиск '%1' недал результатов. @@ -3666,7 +3701,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Неизвестный diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 90d9d004f1..ccdf4c5c45 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you %1 spelades av dig - + played %1 by %2 %1 spelades av %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 Alla spår av %1 från albumet %2 - + All tracks by %1 Alla spår av %1 @@ -1313,17 +1348,17 @@ connect and stream from you? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1622,44 +1657,44 @@ connect and stream from you? SourceDelegate - + Track Spår - + Album Album - + Artist Artist - + Local Lokalt - + Top 10 Topp 10 - + All available tracks Alla tillgängliga spår - - + + Show Visa - - + + Hide Göm @@ -3642,7 +3677,7 @@ anger du PIN-koden här: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. @@ -3665,7 +3700,7 @@ anger du PIN-koden här: TreeItemDelegate - + Unknown Okänt diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index c58ec1699f..0326fe20f7 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index f8c25d33b4..10dc4c1cf7 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? 允许 %1 连接并为您播放吗? - + Allow Streaming 允许播放 - + Deny Access 拒绝访问 @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. Tomahawk 需要你决定是否允许 %1 连接。 @@ -1015,12 +1015,47 @@ connect and stream from you? - Score - 评分 + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + - + Name 名字 @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you %1 - + played %1 by %2 已播放 %2 的 %1 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. 你于 %1 创建了此播放列表 - - + + A playlist by %1, created %2. %2 于 %1 创建了此播放列表 - + All tracks by %1 on album %2 %1 的专辑 %2 上的所有歌曲 - + All tracks by %1 %1 的所有歌曲 @@ -1313,17 +1348,17 @@ connect and stream from you? QueueView - + Open Queue 打开队列 - + Open Queue - %n item(s) 打开队列 - %n 项 - + Close Queue 隐藏队列 @@ -1624,44 +1659,44 @@ connect and stream from you? SourceDelegate - + Track 歌曲 - + Album 专辑 - + Artist 艺术家 - + Local 本地 - + Top 10 Top 10 - + All available tracks 所有可用的歌曲 - - + + Show 显示 - - + + Hide 隐藏 @@ -3647,7 +3682,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. 抱歉,未找到任何匹配 '%1' 的结果。 @@ -3670,7 +3705,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown 未知 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 22bd0e6c98..b2facadb1b 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -2,18 +2,18 @@ ACLJobDelegate - + Allow %1 to connect and stream from you? - + Allow Streaming - + Deny Access @@ -21,7 +21,7 @@ connect and stream from you? ACLJobItem - + Tomahawk needs you to decide whether %1 is allowed to connect. @@ -1015,12 +1015,47 @@ connect and stream from you? - Score + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available - + Name @@ -1028,12 +1063,12 @@ connect and stream from you? PlaylistItemDelegate - + played %1 by you - + played %1 by %2 @@ -1041,31 +1076,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 @@ -1074,23 +1109,23 @@ connect and stream from you? PlaylistModel - + A playlist you created %1. - - + + A playlist by %1, created %2. - + All tracks by %1 on album %2 - + All tracks by %1 @@ -1312,17 +1347,17 @@ connect and stream from you? QueueView - + Open Queue - + Open Queue - %n item(s) - + Close Queue @@ -1621,44 +1656,44 @@ connect and stream from you? SourceDelegate - + Track 曲目 - + Album 專輯 - + Artist 演出者 - + Local 本地 - + Top 10 前10名 - + All available tracks - - + + Show 顯示 - - + + Hide 隱藏 @@ -3636,7 +3671,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3659,7 +3694,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown From fa1fa93b09c3136a011ce3750b3b91d8b7cd5716 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 24 Dec 2012 12:38:53 +0100 Subject: [PATCH 062/310] * Patch from Felix Paul Kuehne: Clean up mac includes to speed up compiling. --- src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm | 4 +--- src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h | 2 +- .../thirdparty/Qocoa/qsearchfield_mac.mm | 4 +--- .../thirdparty/Qocoa/qtoolbartabdialog_mac.mm | 3 +-- src/libtomahawk/utils/TomahawkUtils_Mac.mm | 3 +-- .../widgets/SourceTreePopupDialog_mac.mm | 4 +--- src/mac/MacDelegate.h | 2 +- src/mac/TomahawkApp_Mac.mm | 13 +------------ 8 files changed, 8 insertions(+), 27 deletions(-) diff --git a/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm index 9dfdf96726..e2b0aa3600 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qbutton_mac.mm @@ -24,9 +24,7 @@ of this software and associated documentation files (the "Software"), to deal #include "qocoa_mac.h" -#import "Foundation/NSAutoreleasePool.h" -#import "AppKit/NSButton.h" -#import "AppKit/NSFont.h" +#import class QButtonPrivate : public QObject { diff --git a/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h b/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h index 053f57a066..50c75c3953 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h +++ b/src/libtomahawk/thirdparty/Qocoa/qocoa_mac.h @@ -23,7 +23,7 @@ THE SOFTWARE. #ifndef QCOCOA_MAC_H #define QCOCOA_MAC_H -#include +#import #include #include #include diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm index 40b109849d..54fafd83ca 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm @@ -26,9 +26,7 @@ of this software and associated documentation files (the "Software"), to deal #include "qocoa_mac.h" -#import "Foundation/NSAutoreleasePool.h" -#import "Foundation/NSNotification.h" -#import "AppKit/NSSearchField.h" +#import #include #include diff --git a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm index 7c5fbced24..316e87f9df 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog_mac.mm @@ -24,8 +24,7 @@ of this software and associated documentation files (the "Software"), to deal #include "qocoa_mac.h" -#import -#import +#import #include #include diff --git a/src/libtomahawk/utils/TomahawkUtils_Mac.mm b/src/libtomahawk/utils/TomahawkUtils_Mac.mm index 28b03e0e39..04007b63cd 100644 --- a/src/libtomahawk/utils/TomahawkUtils_Mac.mm +++ b/src/libtomahawk/utils/TomahawkUtils_Mac.mm @@ -18,8 +18,7 @@ #include "mac/FileHelpers.h" -#import -#import +#import #include "TomahawkUtils.h" #include "TomahawkUtils_Mac.h" diff --git a/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm b/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm index 8ae495eafa..4babab4579 100644 --- a/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm +++ b/src/libtomahawk/widgets/SourceTreePopupDialog_mac.mm @@ -20,9 +20,7 @@ #include -#import -#import -#import +#import void SourceTreePopupHelper::clearBackground( QWidget* widget ) diff --git a/src/mac/MacDelegate.h b/src/mac/MacDelegate.h index bf0ad9a6d6..c9c0e0e3ab 100644 --- a/src/mac/MacDelegate.h +++ b/src/mac/MacDelegate.h @@ -3,7 +3,7 @@ // This file inspired by clementine's MacDelegate.h -#import +#import #include "SPMediaKeyTap.h" diff --git a/src/mac/TomahawkApp_Mac.mm b/src/mac/TomahawkApp_Mac.mm index c9ab976a69..ef4e81e072 100644 --- a/src/mac/TomahawkApp_Mac.mm +++ b/src/mac/TomahawkApp_Mac.mm @@ -24,18 +24,7 @@ #include "TomahawkWindow.h" #include "audio/AudioEngine.h" -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import +#import #ifdef HAVE_SPARKLE #import From cf36ca82ac0e71894a2d743660f42c38a1683faa Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 24 Dec 2012 12:39:56 +0100 Subject: [PATCH 063/310] * Patch from Felix Paul Kuehne: Support previous & next keyboard shortcuts used by third-party keyboard vendors. --- src/mac/MacShortcutHandler.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/MacShortcutHandler.cpp b/src/mac/MacShortcutHandler.cpp index 41daf80e30..df470ba945 100644 --- a/src/mac/MacShortcutHandler.cpp +++ b/src/mac/MacShortcutHandler.cpp @@ -39,10 +39,12 @@ MacShortcutHandler::macMediaKeyPressed( int key ) emit playPause(); break; case NX_KEYTYPE_FAST: + case NX_KEYTYPE_NEXT: qDebug() << "emitting next pressed"; emit next(); break; case NX_KEYTYPE_REWIND: + case NX_KEYTYPE_PREVIOUS: qDebug() << "emitting prev pressed"; emit previous(); break; From 3e577cc8eec2194f7676e102086c75383230dc06 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Mon, 24 Dec 2012 21:28:06 +0100 Subject: [PATCH 064/310] Fix the header gradient rect issue for headers other than BasicHeader. --- src/libtomahawk/infobar/InfoBar.cpp | 2 +- src/libtomahawk/widgets/HeaderWidget.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/infobar/InfoBar.cpp b/src/libtomahawk/infobar/InfoBar.cpp index c0a2b0bd3c..646a6e7358 100644 --- a/src/libtomahawk/infobar/InfoBar.cpp +++ b/src/libtomahawk/infobar/InfoBar.cpp @@ -297,7 +297,7 @@ InfoBar::paintEvent( QPaintEvent* event ) gradient.setColorAt( 1.0, QColor( "#25292c" ) ); painter.setBrush( gradient ); - painter.fillRect( event->rect(), gradient ); + painter.fillRect( rect(), gradient ); } diff --git a/src/libtomahawk/widgets/HeaderWidget.cpp b/src/libtomahawk/widgets/HeaderWidget.cpp index c35b86013a..b40fdb68c8 100644 --- a/src/libtomahawk/widgets/HeaderWidget.cpp +++ b/src/libtomahawk/widgets/HeaderWidget.cpp @@ -40,7 +40,7 @@ void HeaderWidget::paintEvent( QPaintEvent* e ) { QStylePainter p( this ); - QRect r = e->rect(); + QRect r = rect(); StyleHelper::horizontalHeader( &p, r ); } From a5868d834d011a86a461cbc1a0c9dbb04ce7ee37 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Tue, 25 Dec 2012 01:16:57 +0100 Subject: [PATCH 065/310] Automatic merge of Transifex translations --- lang/tomahawk_bg.ts | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 1ccdce387b..fe4777ae33 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -453,9 +453,11 @@ connect and stream from you? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Извинявай!</span> Tomahawk заби. + <html><head/><body><p><span style=" font-weight:600;"> +Извинявай!</span> +Tomahawk заби. Моля уведоми ни за този слуай! -Tomahaw създаде доклад относно това и изпращайки го, ще помогнеш за по-добрата работа на приложението за в бъдеще. +Tomahawk създаде доклад относно това и изпращайки го, ще помогнеш за по-добрата работа на приложението за в бъдеще. Изпрати директно до разработчиците на Tomahawk</p></body></html> @@ -1020,42 +1022,42 @@ Tomahaw създаде доклад относно това и изпращай Accuracy - + Съвпадение Perfect match - + Абсолютно Very good match - + Много добро Good match - + Добро Vague match - + Горе-долу Bad match - + Лошо Very bad match - + Много лошо Not available - + Няма съвпадение @@ -4250,7 +4252,10 @@ Lyrics for "%1" by %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - Извинявай.. Аз съм режимът за автоматични отговори изпълзван от Tomahawk. ( http://gettomahawk.com ) Щом получаваш това съобщение, този с който се опитваш да се свържеш вероятно не е на линия. Моля, опитай отново по-късно. + Извинявай.. + Аз съм режимът за автоматични отговори изпълзван от Tomahawk. +(http://gettomahawk.com) +Щом получаваш това съобщение, този с когото се опитваш да се свържеш вероятно не е на линия, така че опитай отново по-късно. From 39928f0fb67833cab7e68d124392ec4b474bac09 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Fri, 28 Dec 2012 01:17:04 +0100 Subject: [PATCH 066/310] Automatic merge of Transifex translations --- lang/tomahawk_de.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index b3e496a66d..83f99d5aa2 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -1017,42 +1017,42 @@ erlauben sich mit dir zu verbinden? Accuracy - + Treffsicherheit Perfect match - + Perfekt Very good match - + Sehr gut Good match - + Gut Vague match - + Vage Bad match - + Schlecht Very bad match - + Sehr schlecht Not available - + Nicht verfügbar From c4c0916827088faec775677aa7764f1612288ea7 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Mon, 31 Dec 2012 01:17:03 +0100 Subject: [PATCH 067/310] Automatic merge of Transifex translations --- lang/tomahawk_ru.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index f5eb235a10..df130f4c12 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -87,7 +87,8 @@ connect and stream from you? Invite - + Пригласить + @@ -95,7 +96,7 @@ connect and stream from you? Configure Accounts - + Настройки аккаунта @@ -200,7 +201,7 @@ connect and stream from you? Zoom - + Увеличить @@ -363,7 +364,7 @@ connect and stream from you? Love - + Любимый @@ -2074,7 +2075,7 @@ connect and stream from you? Google Address: - + Адрес Google: From 2b653da3be9c1160fe7d9e29b5c198e4380e3a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Gabriel=20Lima?= Date: Sun, 30 Dec 2012 21:25:33 -0300 Subject: [PATCH 068/310] * Checking the reply status during the last.fm authentication process The last.fm API returns "ok" on the status attribute of the reply if the authentication succeeded and "failed" otherwise [1]. So this patch verifies if the status returned is "ok" to proceed with the authentication. This patch also improves the message displayed in the log when an authentication error occurs. Now the error message returned by the server is printed out even when the QNetworkReply::error() != NoError (the message retuned by the server is a lot more informative). [1] - http://www.lastfm.it/api/show/auth.getMobileSession --- .../accounts/lastfm/LastFmInfoPlugin.cpp | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp index a69bcab13b..9edbda48e7 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.cpp @@ -941,30 +941,29 @@ LastFmInfoPlugin::onAuthenticated() return; } - if ( authJob->error() == QNetworkReply::NoError ) + lastfm::XmlQuery lfm; + lfm.parse( authJob->readAll() ); + if ( authJob->error() == QNetworkReply::NoError && lfm.attribute("status") == "ok" ) { - lastfm::XmlQuery lfm; - lfm.parse( authJob->readAll() ); - - if ( lfm.children( "error" ).size() > 0 ) - { - tLog() << "Error from authenticating with Last.fm service:" << lfm.text(); - m_account.data()->setSessionKey( QByteArray() ); - } - else - { - lastfm::ws::SessionKey = lfm[ "session" ][ "key" ].text(); + lastfm::ws::SessionKey = lfm[ "session" ][ "key" ].text(); + m_account.data()->setSessionKey( lastfm::ws::SessionKey.toLatin1() ); - m_account.data()->setSessionKey( lastfm::ws::SessionKey.toLatin1() ); - -// qDebug() << "Got session key from last.fm"; - if ( m_account.data()->scrobble() ) - m_scrobbler = new lastfm::Audioscrobbler( "thk" ); - } + if ( m_account.data()->scrobble() ) + m_scrobbler = new lastfm::Audioscrobbler( "thk" ); } else { - tLog() << "Got error in Last.fm authentication job:" << authJob->errorString(); + m_account.data()->setSessionKey( QByteArray() ); + + QString error = "Got error in Last.fm authentication job"; + if ( lfm.children( "error" ).size() > 0 ) + error += ": " + lfm.text(); + else if ( authJob->error() != QNetworkReply::NoError ) + error += ": " + authJob->errorString(); + else + error += "."; + + tLog() << error.simplified(); } authJob->deleteLater(); From 0668d82c3f543d81e4471ad674f4e1bc182f2e2a Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Tue, 1 Jan 2013 01:17:07 +0100 Subject: [PATCH 069/310] Automatic merge of Transifex translations --- lang/tomahawk_fr.ts | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index c60aef685e..3d6585879f 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -547,7 +547,7 @@ de se connecter et streamer de vous? Steer this station: - + Modifier cette station : @@ -632,12 +632,12 @@ de se connecter et streamer de vous? Apply steering command - + Appliquer la modification Reset all steering commands - + Annuler toutes les modifications @@ -1017,42 +1017,42 @@ de se connecter et streamer de vous? Accuracy - + Précision Perfect match - + Correspondance parfaite Very good match - + Très bonne correspondance Good match - + Bonne correspondance Vague match - + Vague correspondance Bad match - + Mauvaise correspondance Very bad match - + Très mauvaise correspondance Not available - + Indisponible @@ -1328,13 +1328,13 @@ de se connecter et streamer de vous? %1 Config - + %1 Configuration %1 Configuration - + %1 Configuration @@ -2418,7 +2418,7 @@ Essayez de vous authentifier de nouveau. Local Network - + Réseau local @@ -2426,7 +2426,7 @@ Essayez de vous authentifier de nouveau. Local Network - + Réseau local @@ -3146,7 +3146,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. %n people - + %n personne%n personnes @@ -3175,7 +3175,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Track '%1' by %2 is not streamable. - + La piste '%1' par %2 n'est pas écoutable. @@ -3266,7 +3266,7 @@ saisissez le numéro PIN ici : Local Network - + Réseau local @@ -3547,7 +3547,7 @@ saisissez le numéro PIN ici : Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sauter. + Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. From ae4663f4c48e937721d02d50fb005249fb9c4972 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Wed, 2 Jan 2013 11:11:59 +0100 Subject: [PATCH 070/310] Automatic merge of Transifex translations --- lang/tomahawk_cs.ts | 4242 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4242 insertions(+) create mode 100644 lang/tomahawk_cs.ts diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts new file mode 100644 index 0000000000..764d0d4372 --- /dev/null +++ b/lang/tomahawk_cs.ts @@ -0,0 +1,4242 @@ + + + ACLJobDelegate + + + Allow %1 to +connect and stream from you? + + + + + Allow Streaming + + + + + Deny Access + + + + + ACLJobItem + + + Tomahawk needs you to decide whether %1 is allowed to connect. + + + + + AccountFactoryWrapper + + + Dialog + + + + + Description goes here + + + + + Add Account + + + + + AccountFactoryWrapperDelegate + + + Online + + + + + Connecting... + + + + + Offline + + + + + AccountListWidget + + + Connections + + + + + + Connect &All + + + + + Disconnect &All + + + + + AccountWidget + + + Invite + + + + + AccountsToolButton + + + Configure Accounts + + + + + ActionCollection + + + &Listen Along + + + + + Stop &Listening Along + + + + + &Follow in real-time + + + + + + &Listen Privately + + + + + + &Listen Publicly + + + + + &Load Playlist + + + + + &Rename Playlist + + + + + &Copy Playlist Link + + + + + &Play + + + + + &Stop + + + + + &Previous Track + + + + + &Next Track + + + + + &Quit + + + + + Load &XSPF... + + + + + U&pdate Collection + + + + + Fully &Rescan Collection + + + + + Show Offline Sources + + + + + &Configure Tomahawk... + + + + + Minimize + + + + + Zoom + + + + + Hide Menu Bar + + + + + Diagnostics... + + + + + About &Tomahawk... + + + + + &Legal Information... + + + + + Check For Updates... + + + + + &Controls + + + + + &Settings + + + + + &Help + + + + + &Window + + + + + Main Menu + + + + + AlbumInfoWidget + + + Tracklist + + + + + Other Albums + + + + + Sorry, we could not find any other albums for this artist! + + + + + Sorry, we could not find any tracks for this album! + + + + + Other Albums by %1 + + + + + AlbumModel + + + + All albums from %1 + + + + + All albums + + + + + ArtistInfoWidget + + + Top Hits + + + + + Related Artists + + + + + Albums + + + + + Sorry, we could not find any albums for this artist! + + + + + Sorry, we could not find any related artists! + + + + + Sorry, we could not find any top hits for this artist! + + + + + AudioControls + + + Shuffle + + + + + Repeat + + + + + Time Elapsed + + + + + Time Remaining + + + + + Playing from %1 + + + + + Share + + + + + Love + + + + + AudioEngine + + + Sorry, Tomahawk couldn't find the track '%1' by %2 + + + + + Sorry, Tomahawk couldn't find the artist '%1' + + + + + Sorry, Tomahawk couldn't find the album '%1' by %2 + + + + + CategoryAddItem + + + Create new Playlist + + + + + Create new Station + + + + + + New Station + + + + + + %1 Station + + + + + CategoryItem + + + Playlists + + + + + Stations + + + + + ClearButton + + + Clear + + + + + ContextWidget + + + + Show Footnotes + + + + + Hide Footnotes + + + + + CrashReporter + + + Tomahawk Crash Reporter + + + + + <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> + + + + + Send this report + + + + + Don't send + + + + + Abort + + + + + You can disable sending crash reports in the configuration dialog. + + + + + Uploaded %L1 of %L2 KB. + + + + + + Close + + + + + Sent! <b>Many thanks</b>. + + + + + Failed to send crash info. + + + + + DatabaseCommand_AllAlbums + + + Unknown + + + + + DelegateConfigWrapper + + + About + + + + + Delete Account + + + + + About this Account + + + + + DiagnosticsDialog + + + Tomahawk Diagnostics + + + + + &Copy to Clipboard + + + + + Open &Log-file + + + + + EchonestSteerer + + + Steer this station: + + + + + Much less + + + + + Less + + + + + A bit less + + + + + Keep at current + + + + + A bit more + + + + + More + + + + + Much more + + + + + Tempo + + + + + Loudness + + + + + Danceability + + + + + Energy + + + + + Song Hotttnesss + + + + + Artist Hotttnesss + + + + + Artist Familiarity + + + + + By Description + + + + + Enter a description + + + + + Apply steering command + + + + + Reset all steering commands + + + + + FlexibleHeader + + + Filter... + + + + + FlexibleView + + + This playlist is currently empty. + + + + + This playlist is currently empty. Add some tracks to it and enjoy the music! + + + + + IndexingJobItem + + + Indexing database + + + + + InfoBar + + + Filter... + + + + + LastFmConfig + + + Scrobble tracks to Last.fm + + + + + Username: + + + + + Password: + + + + + Test Login + + + + + Import Playback History + + + + + Synchronize Loved Tracks + + + + + LastfmContext + + + Last.fm + + + + + LatchedStatusItem + + + %1 is listening along with you! + + + + + LoadXSPF + + + Load XSPF + + + + + Playlist URL + + + + + Enter URL... + + + + + ... + + + + + Automatically update + + + + + LoadXSPFDialog + + + Load XSPF File + + + + + XSPF Files (*.xspf) + + + + + LocalCollection + + + Bookmarks + + + + + Saved tracks + + + + + LovedTracksItem + + + Top Loved Tracks + + + + + Sorry, we could not find any loved tracks! + + + + + The most loved tracks from all your friends + + + + + All of your loved tracks + + + + + All of %1's loved tracks + + + + + Loved Tracks + + + + + MetadataEditor + + + Tags + + + + + Title: + + + + + Title... + + + + + Artist: + + + + + Artist... + + + + + Album: + + + + + Album... + + + + + Track Number: + + + + + Duration: + + + + + 00.00 + + + + + Year: + + + + + Bitrate: + + + + + File + + + + + File Name: + + + + + File Name... + + + + + File Size... + + + + + File size... + + + + + File Size: + + + + + Back + + + + + Forward + + + + + Properties + + + + + NewPlaylistWidget + + + Enter a title for the new playlist: + + + + + Tomahawk offers a variety of ways to help you create playlists and find music you enjoy! + + + + + Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist: + + + + + &Create Playlist + + + + + Create a new playlist + + + + + NewReleasesWidget + + + New Releases + + + + + PlayableModel + + + Artist + + + + + Title + + + + + Composer + + + + + Album + + + + + Track + + + + + Duration + + + + + Bitrate + + + + + Age + + + + + Year + + + + + Size + + + + + Origin + + + + + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + + + + + + Name + + + + + PlaylistItemDelegate + + + played %1 by you + + + + + played %1 by %2 + + + + + PlaylistLargeItemDelegate + + + played %1 by you + e.g. played 3 hours ago by you + + + + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum + + + + + PlaylistModel + + + A playlist you created %1. + + + + + + A playlist by %1, created %2. + + + + + All tracks by %1 on album %2 + + + + + All tracks by %1 + + + + + PlaylistTypeSelectorDlg + + + New Playlist + + + + + Just a regular old playlist... Give it a name, drag in some tracks, and go! + + + + + Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you! + + + + + Name: + + + + + New Playlist... + + + + + Create Manual Playlist + + + + + Create Automatic Playlist + + + + + PlaylistView + + + This playlist is currently empty. + + + + + This playlist is currently empty. Add some tracks to it and enjoy the music! + + + + + ProxyDialog + + + Proxy Settings + + + + + Hostname of proxy server + + + + + Host + + + + + Port + + + + + Proxy login + + + + + User + + + + + Password + + + + + Proxy password + + + + + No Proxy Hosts: +(Overrides system proxy) + + + + + localhost *.example.com (space separated) + + + + + Use proxy for DNS lookups? + + + + + 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 + + + + + Friend Finders + + + + + Music Finders + + + + + Status Updaters + + + + + + %1 Config + + + + + + %1 Configuration + + + + + QuaZipFilePrivate + + + ZIP/UNZIP API error %1 + + + + + QueueView + + + + Open Queue + + + + + Open Queue - %n item(s) + + + + + Close Queue + + + + + RelatedArtistsContext + + + Related Artists + + + + + ResolverConfigDelegate + + + Not found: %1 + + + + + Failed to load: %1 + + + + + SearchLineEdit + + + Search + + + + + SearchWidget + + + Search: %1 + + + + + Results for '%1' + + + + + SettingsDialog + + + Collection + + + + + Advanced + + + + + All + + + + + Some changed settings will not take effect until Tomahawk is restarted + + + + + Services + + + + + Install from file + + + + + Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. + + + + + Manage how Tomahawk finds music on your computer. + + + + + Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. + + + + + Install resolver from file + + + + + Delete all Access Control entries? + + + + + Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. + + + + + Information + + + + + Settings_Accounts + + + Filter by capability: + + + + + Settings_Advanced + + + Remote Peer Connection Method + + + + + None (outgoing connections only) + + + + + Use UPnP to establish port forward (recommended) + + + + + Use static external IP address/host name and port + + + + + Set this to your external IP address or host name. Make sure to forward the port to this host! + + + + + Static Host Name: + + + + + Static Port: + + + + + SOCKS Proxy + + + + + Use SOCKS Proxy + + + + + Proxy Settings... + + + + + Other Settings + + + + + Allow web browsers to interact with Tomahawk (recommended) + + + + + Send reports after Tomahawk crashed + + + + + Show notification when a new song starts to play + + + + + Clear All Access Control Entries + + + + + Settings_Collection + + + Path to scan for music files: + + + + + The Echo Nest supports keeping track of your catalog metadata + and using it to craft personalized radios. Enabling this option + will allow you (and all your friends) to create automatic playlists + and stations based on your personal taste profile. + + + + + Upload collection list to The Echo Nest to enable user radio + + + + + Watch for changes + + + + + Time between scans, in seconds: + + + + + SlideSwitchButton + + + On + + + + + Off + + + + + SocialPlaylistWidget + + + Popular New Albums From Your Friends + + + + + Most Played Playlists + + + + + Most Played Tracks You Don't Have + + + + + SocialWidget + + + Facebook + + + + + Twitter + + + + + Tweet + + + + + Listening to "%1" by %2. %3 + + + + + Listening to "%1" by %2 on "%3". %4 + + + + + %1 characters left + + + + + SourceDelegate + + + Track + + + + + Album + + + + + Artist + + + + + Local + + + + + Top 10 + + + + + All available tracks + + + + + + Show + + + + + + Hide + + + + + SourceInfoWidget + + + Recent Albums + + + + + Latest Additions + + + + + Recently Played Tracks + + + + + New Additions + + + + + My recent activity + + + + + Recent activity from %1 + + + + + SourceItem + + + Collection + + + + + + Latest Additions + + + + + Recently Played + + + + + SuperCollection + + + + + Latest additions to your collection + + + + + Latest additions to %1's collection + + + + + Sorry, we could not find any recent additions! + + + + + Recently Played Tracks + + + + + Your recently played tracks + + + + + %1's recently played tracks + + + + + Sorry, we could not find any recent plays! + + + + + SourceTreeView + + + &Copy Link + + + + + &Delete %1 + + + + + Add to my Playlists + + + + + Add to my Automatic Playlists + + + + + Add to my Stations + + + + + &Export Playlist + + + + + playlist + + + + + automatic playlist + + + + + station + + + + + Would you like to delete the %1 <b>"%2"</b>? + e.g. Would you like to delete the playlist named Foobar? + + + + + Delete + + + + + Save XSPF + + + + + Playlists (*.xspf) + + + + + SourcesModel + + + Group + + + + + Collection + + + + + Playlist + + + + + Automatic Playlist + + + + + Station + + + + + Browse + + + + + Search History + + + + + My Music + + + + + SuperCollection + + + + + Dashboard + + + + + Recently Played + + + + + Charts + + + + + New Releases + + + + + Friends + + + + + SpotifyConfig + + + Configure your Spotify account + + + + + Username or Facebook Email + + + + + Log In + + + + + Right click on any Tomahawk playlist to sync it to Spotify. + + + + + Select All + + + + + Sync Starred tracks to Loved tracks + + + + + High Quality Streams + + + + + Spotify playlists to keep in sync: + + + + + Delete Tomahawk playlist when removing synchronization + + + + + Username: + + + + + Password: + + + + + SpotifyPlaylistUpdater + + + Delete associated Spotify playlist? + + + + + TemporaryPageItem + + + Copy Artist Link + + + + + Copy Album Link + + + + + Copy Track Link + + + + + Tomahawk::Accounts::AccountDelegate + + + Add Account + + + + + Remove + + + + + %1 downloads + + + + + Online + + + + + Connecting... + + + + + Offline + + + + + Tomahawk::Accounts::AccountModel + + + Manual Install Required + + + + + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 + + + + + Tomahawk::Accounts::GoogleWrapper + + + Configure this Google Account + + + + + Google Address: + + + + + Enter your Google login to connect with your friends using Tomahawk! + + + + + username@gmail.com + + + + + Tomahawk::Accounts::GoogleWrapperFactory + + + Connect to Google Talk to find your friends + + + + + Tomahawk::Accounts::GoogleWrapperSip + + + Enter Google Address + + + + + Add Friend + + + + + Enter Google Address: + + + + + Tomahawk::Accounts::LastFmAccountFactory + + + Scrobble your tracks to last.fm, and find freely downloadable tracks to play + + + + + Tomahawk::Accounts::LastFmConfig + + + Testing... + + + + + Test Login + + + + + Importing %1 + e.g. Importing 2012/01/01 + + + + + Importing History... + + + + + History Incomplete. Resume + Text on a button that resumes import + + + + + Playback History Imported + + + + + + Failed + + + + + Success + + + + + Could not contact server + + + + + Synchronizing... + + + + + Synchronization Finished + + + + + Tomahawk::Accounts::SpotifyAccount + + + Sync with Spotify + + + + + Re-enable syncing with Spotify + + + + + Create local copy + + + + + Subscribe to playlist changes + + + + + Re-enable playlist subscription + + + + + Stop subscribing to changes + + + + + Enable Spotify collaborations + + + + + Disable Spotify collaborations + + + + + Stop syncing with Spotify + + + + + Tomahawk::Accounts::SpotifyAccountConfig + + + Logging in... + + + + + Failed: %1 + + + + + Logged in as %1 + + + + + Log Out + + + + + + Log In + + + + + Tomahawk::Accounts::SpotifyAccountFactory + + + Play music from and sync your playlists with Spotify Premium + + + + + Tomahawk::Accounts::TwitterAccountFactory + + + Connect to your Twitter followers. + + + + + Tomahawk::Accounts::TwitterConfigWidget + + + + + Tweet! + + + + + + Status: No saved credentials + + + + + + + Authenticate + + + + + + Status: Credentials saved for %1 + + + + + + De-authenticate + + + + + + + + + + + Tweetin' Error + + + + + The credentials could not be verified. +You may wish to try re-authenticating. + + + + + Status: Error validating credentials + + + + + Global Tweet + + + + + Direct Message + + + + + Send Message! + + + + + @Mention + + + + + Send Mention! + + + + + You must enter a user name for this type of tweet. + + + + + Your saved credentials could not be loaded. +You may wish to try re-authenticating. + + + + + Your saved credentials could not be verified. +You may wish to try re-authenticating. + + + + + + There was an error posting your status -- sorry! + + + + + + Tweeted! + + + + + Your tweet has been posted! + + + + + There was an error posting your direct message -- sorry! + + + + + Your message has been posted! + + + + + Tomahawk::Accounts::XmppAccountFactory + + + Log on to your Jabber/XMPP account to connect to your friends + + + + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + + + + Automatically connect to Tomahawks on the local network + + + + + Tomahawk::ContextMenu + + + &Play + + + + + + + Add to &Queue + + + + + Continue Playback after this &Track + + + + + Stop Playback after this &Track + + + + + + &Love + + + + + + + &Go to "%1" + + + + + + + Go to "%1" + + + + + &Copy Track Link + + + + + Copy Album &Link + + + + + Copy Artist &Link + + + + + Un-&Love + + + + + &Delete Items + + + + + Properties... + + + + + &Delete Item + + + + + Tomahawk::DropJobNotifier + + + playlist + + + + + artist + + + + + track + + + + + album + + + + + Fetching %1 from database + + + + + Parsing %1 %2 + + + + + Tomahawk::DynamicControlList + + + Click to collapse + + + + + Tomahawk::DynamicModel + + + + Could not find a playable track. + +Please change the filters or try again. + + + + + Failed to generate preview with the desired filters + + + + + Tomahawk::DynamicSetupWidget + + + Type: + + + + + Generate + + + + + Tomahawk::DynamicView + + + Add some filters above to seed this station! + + + + + Press Generate to get started! + + + + + Add some filters above, and press Generate to get started! + + + + + Tomahawk::DynamicWidget + + + Station ran out of tracks! + +Try tweaking the filters for a new set of songs to play. + + + + + Tomahawk::EchonestControl + + + + + + + + is + + + + + from user + + + + + + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings + + + + + similar to + + + + + + + + + + + Less + + + + + + + + + + + More + + + + + 0 BPM + + + + + 500 BPM + + + + + 0 secs + + + + + 3600 secs + + + + + -100 dB + + + + + 100 dB + + + + + Major + + + + + Minor + + + + + C + + + + + C Sharp + + + + + D + + + + + E Flat + + + + + E + + + + + F + + + + + F Sharp + + + + + G + + + + + A Flat + + + + + A + + + + + B Flat + + + + + B + + + + + Ascending + + + + + Descending + + + + + Tempo + + + + + Duration + + + + + Loudness + + + + + + Artist Familiarity + + + + + + Artist Hotttnesss + + + + + + Song Hotttnesss + + + + + Latitude + + + + + Longitude + + + + + Mode + + + + + Key + + + + + + Energy + + + + + + Danceability + + + + + only by ~%1 + + + + + + similar to ~%1 + + + + + with genre ~%1 + + + + + + from no one + + + + + My Collection + + + + + from my radio + + + + + from %1 radio + + + + + Variety + + + + + Adventurousness + + + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + + with %1 %2 + + + + + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + + in %1 + + + + + in a %1 key + + + + + sorted in %1 %2 order + + + + + with a %1 mood + + + + + in a %1 style + + + + + Tomahawk::GroovesharkParser + + + Error fetching Grooveshark information from the network! + + + + + Tomahawk::InfoSystem::ChartsPlugin + + + Top Overall + + + + + Artists + + + + + Albums + + + + + Tracks + + + + + Tomahawk::InfoSystem::FdoNotifyPlugin + + + Tomahawk is playing "%1" by %2%3. + + + + + on "%1" + + + + + Tomahawk::InfoSystem::LastFmInfoPlugin + + + Top Tracks + + + + + Loved Tracks + + + + + Hyped Tracks + + + + + Top Artists + + + + + Hyped Artists + + + + + Tomahawk::InfoSystem::NewReleasesPlugin + + + Albums + + + + + Tomahawk::InfoSystem::TwitterInfoPlugin + + + Listening to "%1" by %2 and loving it! %3 + + + + + Tomahawk::ItunesParser + + + Error fetching iTunes information from the network! + + + + + Tomahawk::JSPFLoader + + + New Playlist + + + + + Failed to save tracks + + + + + Some tracks in the playlist do not contain an artist and a title. They will be ignored. + + + + + XSPF Error + + + + + This is not a valid XSPF playlist. + + + + + Tomahawk::LatchManager + + + &Catch Up + + + + + + &Listen Along + + + + + Tomahawk::Playlist + + + Would you like to delete the playlist <b>"%2"</b>? + e.g. Would you like to delete the playlist named Foobar? + + + + + Delete + + + + + Tomahawk::Query + + + and + + + + + You + + + + + you + + + + + and + + + + + %n other(s) + + + + + %n people + + + + + loved this track + + + + + Tomahawk::RdioParser + + + Error fetching Rdio information from the network! + + + + + Tomahawk::ShortenedLinkParser + + + Network error parsing shortened link! + + + + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + + + Tomahawk::Source + + + + Scanning (%L1 tracks) + + + + + Scanning + + + + + Checking + + + + + Syncing + + + + + Importing + + + + + Saving (%1%) + + + + + Online + + + + + Offline + + + + + Tomahawk::SpotifyParser + + + Error fetching Spotify information from the network! + + + + + Tomahawk::XspfUpdater + + + Automatically update from XSPF + + + + + TomahawkApp + + + My Collection + + + + + TomahawkOAuthTwitter + + + Twitter PIN + + + + + After authenticating on Twitter's web site, +enter the displayed PIN number here: + + + + + TomahawkSettings + + + Local Network + + + + + TomahawkTrayIcon + + + &Stop Playback after current Track + + + + + + Hide Tomahawk Window + + + + + Show Tomahawk Window + + + + + Currently not playing. + + + + + Play + + + + + Pause + + + + + &Love + + + + + Un-&Love + + + + + &Continue Playback after current Track + + + + + TomahawkWindow + + + Tomahawk + + + + + &Quit + + + + + Ctrl+Q + + + + + Go &Online + + + + + Add &Friend... + + + + + U&pdate Collection + + + + + Update Collection + + + + + &Configure Tomahawk... + + + + + Load &XSPF... + + + + + Create &New Playlist... + + + + + About &Tomahawk... + + + + + Create New &Automatic Playlist + + + + + Create New &Station + + + + + Show Offline Sources + + + + + Hide Offline Sources + + + + + Minimize + + + + + Ctrl+M + + + + + Zoom + + + + + Meta+Ctrl+Z + + + + + &Legal Info... + + + + + Diagnostics... + + + + + Fully &Rescan Collection + + + + + Fully Rescan Collection + + + + + Play + + + + + Space + + + + + Previous + + + + + Next + + + + + Back + + + + + Go back one page + + + + + Forward + + + + + Go forward one page + + + + + + Hide Menu Bar + + + + + + Show Menu Bar + + + + + Search for any artist, album or song... + + + + + &Main Menu + + + + + + + Connect To Peer + + + + + Enter peer address: + + + + + Enter peer port: + + + + + Enter peer key: + + + + + XSPF Error + + + + + This is not a valid XSPF playlist. + + + + + Failed to save tracks + + + + + Some tracks in the playlist do not contain an artist and a title. They will be ignored. + + + + + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. + + + + + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. + + + + + Station + + + + + Create New Station + + + + + Name: + + + + + Playlist + + + + + Automatic Playlist + + + + + Pause + + + + + &Play + + + + + Authentication Error + + + + + Error connecting to SIP: Authentication failed! + + + + + %1 by %2 + track, artist name + + + + + %1 - %2 + current track, some window title + + + + + <h2><b>Tomahawk %1<br/>(%2)</h2> + + + + + <h2><b>Tomahawk %1</h2> + + + + + Copyright 2010 - 2012 + + + + + Thanks to: + + + + + About Tomahawk + + + + + TopTracksContext + + + Top Hits + + + + + TrackInfoWidget + + + Similar Tracks + + + + + Sorry, but we could not find similar tracks for this song! + + + + + You've listened to this track %n time(s). + + + + + You've never listened to this track before. + + + + + You first listened to it on %1. + + + + + You've listened to %1 %n time(s). + + + + + You've never listened to %1 before. + + + + + TrackView + + + Sorry, your filter '%1' did not match any results. + + + + + TransferStatusItem + + + from + streaming artist - track from friend + + + + + to + streaming artist - track to friend + + + + + TreeItemDelegate + + + Unknown + + + + + TreeModel + + + All Artists + + + + + + My Collection + + + + + + Collection of %1 + + + + + TreeView + + + Sorry, your filter '%1' did not match any results. + + + + + TwitterConfigWidget + + + Configure this Twitter account + + + + + The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. + + + + + Status: No saved credentials + + + + + Authenticate with Twitter + + + + + Twitter Connections + + + + + +If you only want to post tweets, you're done. + +If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! + +You can re-send a sync message at any time simply by sending another tweet using the button. + + + + + Select the kind of tweet you would like, then press the button to post it: + + + + + Global Tweet + + + + + @Mention + + + + + Direct Message + + + + + e.g. @tomahawk + + + + + Send Message + + + + + TwitterSipPlugin + + + Enter Twitter username + + + + + ViewManager + + + This playlist is empty! + + + + + After you have scanned your music collection you will find your tracks right here. + + + + + This collection is empty. + + + + + SuperCollection + + + + + Combined libraries of all your online friends + + + + + Recently Played Tracks + + + + + Recently played tracks from all your friends + + + + + Sorry, we could not find any recent plays! + + + + + WelcomeWidget + + + Recent Additions + + + + + Newest Stations & Playlists + + + + + Recently Played Tracks + + + + + Recently played tracks + + + + + No recently created playlists in your network. + + + + + Welcome to Tomahawk + + + + + WhatsHotWidget + + + Charts + + + + + WikipediaContext + + + Wikipedia + + + + + XMPPBot + + + +Terms for %1: + + + + + + No terms found, sorry. + + + + + +Hotttness for %1: %2 + + + + + + +Familiarity for %1: %2 + + + + + + +Lyrics for "%1" by %2: + +%3 + + + + + + XSPFLoader + + + Failed to parse contents of XSPF playlist + + + + + Some playlist entries were found without artist and track name, they will be omitted + + + + + Failed to fetch the desired playlist from the network, or the desired file does not exist + + + + + New Playlist + + + + + XmlConsole + + + Xml stream console + + + + + + Filter + + + + + Save log + + + + + Disabled + + + + + By JID + + + + + By namespace uri + + + + + By all attributes + + + + + Visible stanzas + + + + + Information query + + + + + Message + + + + + Presence + + + + + Custom + + + + + Close + + + + + Save XMPP log to file + + + + + OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt) + + + + + XmppConfigWidget + + + Xmpp Configuration + + + + + Configure this Xmpp account + + + + + Enter your Xmpp login to connect with your friends using Tomahawk! + + + + + Login Information + + + + + Xmpp ID: + + + + + e.g. user@example.com + + + + + Password: + + + + + An account with this name already exists! + + + + + Advanced Xmpp Settings + + + + + Server: + + + + + Port: + + + + + Lots of servers don't support this (e.g. GTalk, jabber.org) + + + + + Publish currently playing track + + + + + Enforce secure connection + + + + + XmppSipPlugin + + + User Interaction + + + + + Host is unknown + + + + + Item not found + + + + + Authorization Error + + + + + Remote Stream Error + + + + + Remote Connection failed + + + + + Internal Server Error + + + + + System shutdown + + + + + Conflict + + + + + Unknown + + + + + Do you want to add <b>%1</b> to your friend list? + + + + + No Compression Support + + + + + Enter Jabber ID + + + + + No Encryption Support + + + + + No Authorization Support + + + + + No Supported Feature + + + + + Add Friend + + + + + Enter Xmpp ID: + + + + + Add Friend... + + + + + XML Console... + + + + + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! + + + + + Authorize User + + + + + ZeroconfConfig + + + Local Network configuration + + + + + This plugin will automatically find other users running Tomahawk on your local network + + + + + Connect automatically when Tomahawk starts + + + + \ No newline at end of file From aa168ef57218b197b81ed365214cc6b7e8bcb09c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Tue, 1 Jan 2013 15:22:03 +0100 Subject: [PATCH 071/310] * Fixed debug output in Api_v1. --- src/web/Api_v1.cpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/web/Api_v1.cpp b/src/web/Api_v1.cpp index 819d8c6a27..632f3e2f3d 100644 --- a/src/web/Api_v1.cpp +++ b/src/web/Api_v1.cpp @@ -43,11 +43,11 @@ Api_v1::Api_v1(QxtAbstractWebSessionManager* sm, QObject* parent) void Api_v1::auth_1( QxtWebRequestEvent* event, QString arg ) { - qDebug() << "AUTH_1 HTTP" << event->url.toString() << arg; + tDebug( LOGVERBOSE ) << "AUTH_1 HTTP" << event->url.toString() << arg; if ( !event->url.hasQueryItem( "website" ) || !event->url.hasQueryItem( "name" ) ) { - qDebug() << "Malformed HTTP resolve request"; + tDebug( LOGVERBOSE ) << "Malformed HTTP resolve request"; send404( event ); return; } @@ -80,10 +80,10 @@ Api_v1::auth_1( QxtWebRequestEvent* event, QString arg ) void Api_v1::auth_2( QxtWebRequestEvent* event, QString arg ) { - qDebug() << "AUTH_2 HTTP" << event->url.toString() << arg; + tDebug( LOGVERBOSE ) << "AUTH_2 HTTP" << event->url.toString() << arg; if ( event->content.isNull() ) { - qDebug() << "Null content"; + tDebug( LOGVERBOSE ) << "Null content"; send404( event ); return; } @@ -99,13 +99,13 @@ Api_v1::auth_2( QxtWebRequestEvent* event, QString arg ) if ( keyval.size() == 2 ) queryItems.insert( keyval.first(), keyval.last() ); else - qDebug() << "Failed parsing url parameters:" << part; + tDebug( LOGVERBOSE ) << "Failed parsing url parameters:" << part; } - qDebug() << "has query items:" << pieces; + tDebug( LOGVERBOSE ) << "has query items:" << pieces; if ( !params.contains( "website" ) || !params.contains( "name" ) || !params.contains( "formtoken" ) ) { - qDebug() << "Malformed HTTP resolve request"; + tDebug( LOGVERBOSE ) << "Malformed HTTP resolve request"; send404( event ); return; } @@ -113,7 +113,7 @@ Api_v1::auth_2( QxtWebRequestEvent* event, QString arg ) QString website = queryItems[ "website" ]; QString name = queryItems[ "name" ]; QByteArray authtoken = uuid().toLatin1(); - qDebug() << "HEADERS:" << event->headers; + tDebug( LOGVERBOSE ) << "HEADERS:" << event->headers; if ( !queryItems.contains( "receiverurl" ) || queryItems.value( "receiverurl" ).isEmpty() ) { //no receiver url, so do it ourselves @@ -139,7 +139,7 @@ Api_v1::auth_2( QxtWebRequestEvent* event, QString arg ) // do what the client wants QUrl receiverurl = QUrl( queryItems.value( "receiverurl" ), QUrl::TolerantMode ); receiverurl.addEncodedQueryItem( "authtoken", "#" + authtoken ); - qDebug() << "Got receiver url:" << receiverurl.toString(); + tDebug( LOGVERBOSE ) << "Got receiver url:" << receiverurl.toString(); QxtWebRedirectEvent* e = new QxtWebRedirectEvent( event->sessionID, event->requestID, receiverurl.toString() ); postEvent( e ); @@ -155,7 +155,7 @@ Api_v1::auth_2( QxtWebRequestEvent* event, QString arg ) void Api_v1::api( QxtWebRequestEvent* event ) { - qDebug() << "HTTP" << event->url.toString(); + tDebug( LOGVERBOSE ) << "HTTP" << event->url.toString(); const QUrl& url = event->url; if ( url.hasQueryItem( "method" ) ) @@ -178,7 +178,7 @@ Api_v1::sid( QxtWebRequestEvent* event, QString unused ) Q_UNUSED( unused ); RID rid = event->url.path().mid( 5 ); - qDebug() << "Request for sid" << rid; + tDebug( LOGVERBOSE ) << "Request for sid" << rid; result_ptr rp = Pipeline::instance()->result( rid ); if ( rp.isNull() ) @@ -204,7 +204,7 @@ Api_v1::sid( QxtWebRequestEvent* event, QString unused ) void Api_v1::send404( QxtWebRequestEvent* event ) { - qDebug() << "404" << event->url.toString(); + tDebug() << "404" << event->url.toString(); QxtWebPageEvent* wpe = new QxtWebPageEvent( event->sessionID, event->requestID, "

Not Found

" ); wpe->status = 404; wpe->statusMessage = "no event found"; @@ -215,11 +215,11 @@ Api_v1::send404( QxtWebRequestEvent* event ) void Api_v1::stat( QxtWebRequestEvent* event ) { - qDebug() << "Got Stat request:" << event->url.toString(); + tDebug( LOGVERBOSE ) << "Got Stat request:" << event->url.toString(); m_storedEvent = event; if ( !event->content.isNull() ) - qDebug() << "BODY:" << event->content->readAll(); + tDebug( LOGVERBOSE ) << "BODY:" << event->content->readAll(); if ( event->url.hasQueryItem( "auth" ) ) { @@ -262,7 +262,7 @@ Api_v1::resolve( QxtWebRequestEvent* event ) if ( !event->url.hasQueryItem( "artist" ) || !event->url.hasQueryItem( "track" ) ) { - qDebug() << "Malformed HTTP resolve request"; + tDebug( LOGVERBOSE ) << "Malformed HTTP resolve request"; return send404( event ); } @@ -273,7 +273,7 @@ Api_v1::resolve( QxtWebRequestEvent* event ) if ( artist.trimmed().isEmpty() || track.trimmed().isEmpty() ) { - qDebug() << "Malformed HTTP resolve request"; + tDebug( LOGVERBOSE ) << "Malformed HTTP resolve request"; return send404( event ); } @@ -300,7 +300,7 @@ Api_v1::resolve( QxtWebRequestEvent* event ) void Api_v1::staticdata( QxtWebRequestEvent* event, const QString& str ) { - qDebug() << "STATIC request:" << event << str; + tDebug( LOGVERBOSE ) << "STATIC request:" << event << str; if ( str.contains( "tomahawk_auth_logo.png" ) ) { QFile f( RESPATH "www/tomahawk_banner_small.png" ); @@ -318,7 +318,7 @@ Api_v1::get_results( QxtWebRequestEvent* event ) { if ( !event->url.hasQueryItem( "qid" ) ) { - tDebug() << "Malformed HTTP get_results request"; + tDebug( LOGVERBOSE ) << "Malformed HTTP get_results request"; send404( event ); return; } @@ -372,7 +372,7 @@ Api_v1::sendJSON( const QVariantMap& m, QxtWebRequestEvent* event ) e->contentType = ctype; e->headers.insert( "Content-Length", QString::number( body.length() ) ); postEvent( e ); - qDebug() << "JSON response" << event->url.toString() << body; + tDebug( LOGVERBOSE ) << "JSON response" << event->url.toString() << body; } From 2e4cb838ee875cf637226f2747928f4e832cd1c7 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 2 Jan 2013 11:09:21 +0100 Subject: [PATCH 072/310] * Added new translation languages to CMakeLists.txt. --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a254e8fd29..f7221bc5e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,10 +14,9 @@ SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" ) SET( TOMAHAWK_VERSION_MAJOR 0 ) SET( TOMAHAWK_VERSION_MINOR 5 ) 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 ) +SET( TOMAHAWK_TRANSLATION_LANGUAGES ar bg bn_IN ca cs de en el es fi fr hi_IN hu gl it ja lt pl pt_BR ru sv tr zh_CN zh_TW ) # enforce proper symbol exporting on all platforms add_definitions( "-fvisibility=hidden" ) From 4d4b0a29e46b2b90fecb8209aca0170cf3c4431c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 2 Jan 2013 11:10:17 +0100 Subject: [PATCH 073/310] * Cleaned up translations.cmake. --- lang/translations.cmake | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lang/translations.cmake b/lang/translations.cmake index 6b4f89557f..7ce1ba4220 100644 --- a/lang/translations.cmake +++ b/lang/translations.cmake @@ -1,33 +1,33 @@ macro(add_tomahawk_translations language) - list(APPEND TOMAHAWK_LANGUAGES ${ARGV}) + list( APPEND TOMAHAWK_LANGUAGES ${ARGV} ) - set(tomahawk_i18n_qrc_content "\n") + set( tomahawk_i18n_qrc_content "\n" ) # tomahawk and qt language files - set(tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}\n") - foreach(lang ${TOMAHAWK_LANGUAGES}) - set(tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}tomahawk_${lang}.qm\n") - if(NOT lang STREQUAL "en" AND EXISTS ${QT_TRANSLATIONS_DIR}/qt_${lang}.qm) - file(COPY ${QT_TRANSLATIONS_DIR}/qt_${lang}.qm DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - set(tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}qt_${lang}.qm\n") + set( tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}\n" ) + foreach( lang ${TOMAHAWK_LANGUAGES} ) + set( tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}tomahawk_${lang}.qm\n" ) + if( NOT lang STREQUAL "en" AND EXISTS ${QT_TRANSLATIONS_DIR}/qt_${lang}.qm ) + file( COPY ${QT_TRANSLATIONS_DIR}/qt_${lang}.qm DESTINATION ${CMAKE_CURRENT_BINARY_DIR} ) + set( tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}qt_${lang}.qm\n" ) endif() # build explicitly enabled languages - list(APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/tomahawk_${lang}.ts") + list( APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/tomahawk_${lang}.ts" ) endforeach() - set(tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}\n") - set(tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}\n") + set( tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}\n" ) + set( tomahawk_i18n_qrc_content "${tomahawk_i18n_qrc_content}\n" ) - file(WRITE ${CMAKE_BINARY_DIR}/lang/tomahawk_i18n.qrc "${tomahawk_i18n_qrc_content}" ) + file( WRITE ${CMAKE_BINARY_DIR}/lang/tomahawk_i18n.qrc "${tomahawk_i18n_qrc_content}" ) - QT4_ADD_TRANSLATION(QM_FILES ${TS_FILES}) + QT4_ADD_TRANSLATION( QM_FILES ${TS_FILES} ) ## HACK HACK HACK - around rcc limitations to allow out of source-tree building SET( trans_file tomahawk_i18n ) - SET( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc) - SET( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc) - SET( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx) + SET( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc ) + SET( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) + SET( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) # Copy the QRC file to the output directory ADD_CUSTOM_COMMAND( From 31d47c0454411d4596e77039a3777219dedce8cf Mon Sep 17 00:00:00 2001 From: Kilian Lackhove Date: Wed, 2 Jan 2013 14:00:10 +0100 Subject: [PATCH 074/310] show icon in accountswidget for external resolvers, too --- src/libtomahawk/accounts/AccountDelegate.cpp | 2 +- src/libtomahawk/accounts/ResolverAccount.cpp | 5 +++++ src/libtomahawk/accounts/ResolverAccount.h | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/accounts/AccountDelegate.cpp b/src/libtomahawk/accounts/AccountDelegate.cpp index b8816c9895..ac64bd9645 100644 --- a/src/libtomahawk/accounts/AccountDelegate.cpp +++ b/src/libtomahawk/accounts/AccountDelegate.cpp @@ -171,7 +171,7 @@ AccountDelegate::paint ( QPainter* painter, const QStyleOptionViewItem& option, QPixmap p = index.data( Qt::DecorationRole ).value< QPixmap >(); QRect pixmapRect( leftEdge + PADDING, center - ICONSIZE/2, ICONSIZE, ICONSIZE ); if ( p.isNull() ) // default image... TODO - p = TomahawkUtils::defaultPixmap( TomahawkUtils::SipPluginOnline, TomahawkUtils::Original, pixmapRect.size() ); + p = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultResolver, TomahawkUtils::Original, pixmapRect.size() ); else p = p.scaled( pixmapRect.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ); diff --git a/src/libtomahawk/accounts/ResolverAccount.cpp b/src/libtomahawk/accounts/ResolverAccount.cpp index d759335ca5..26b38eea33 100644 --- a/src/libtomahawk/accounts/ResolverAccount.cpp +++ b/src/libtomahawk/accounts/ResolverAccount.cpp @@ -232,6 +232,11 @@ ResolverAccount::resolverChanged() emit connectionStateChanged( connectionState() ); } +QPixmap +ResolverAccount::icon() const +{ + return m_resolver.data()->icon(); +} /// AtticaResolverAccount diff --git a/src/libtomahawk/accounts/ResolverAccount.h b/src/libtomahawk/accounts/ResolverAccount.h index e5b182497b..e977931f55 100644 --- a/src/libtomahawk/accounts/ResolverAccount.h +++ b/src/libtomahawk/accounts/ResolverAccount.h @@ -77,8 +77,9 @@ class DLLEXPORT ResolverAccount : public Account QString path() const; + virtual QPixmap icon() const; + // Not relevant - virtual QPixmap icon() const { return QPixmap(); } virtual SipPlugin* sipPlugin() { return 0; } virtual Tomahawk::InfoSystem::InfoPluginPtr infoPlugin() { return Tomahawk::InfoSystem::InfoPluginPtr(); } virtual QWidget* aclWidget() { return 0; } From 0b29b6a444b301d9768df498dacd494f5d3cfc80 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 2 Jan 2013 14:13:20 +0100 Subject: [PATCH 075/310] * We now use 4.8.4 on OSX. --- admin/mac/macdeploy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/mac/macdeploy.py b/admin/mac/macdeploy.py index 888b8b8caf..7f425f1caf 100755 --- a/admin/mac/macdeploy.py +++ b/admin/mac/macdeploy.py @@ -217,7 +217,7 @@ ] QT_PLUGINS_SEARCH_PATH=[ - '/usr/local/Cellar/qt/4.8.2/plugins', + '/usr/local/Cellar/qt/4.8.4/plugins', ] From 5de9f2f7bda83e64b2199c1a1f78567a8e2670cc Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 3 Jan 2013 05:54:47 +0100 Subject: [PATCH 076/310] * Make artist name in PlayableCover clickable. --- src/libtomahawk/widgets/PlayableCover.cpp | 74 +++++++++++++++++++++-- src/libtomahawk/widgets/PlayableCover.h | 6 ++ 2 files changed, 74 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 74eca96f35..bcd095df1c 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -18,7 +18,9 @@ #include "PlayableCover.h" +#include "Artist.h" #include "Album.h" +#include "ViewManager.h" #include "audio/AudioEngine.h" #include "widgets/ImageButton.h" #include "utils/TomahawkUtilsGui.h" @@ -77,6 +79,56 @@ PlayableCover::resizeEvent( QResizeEvent* event ) } +void +PlayableCover::mouseMoveEvent( QMouseEvent* event ) +{ + QLabel::mouseMoveEvent( event ); + + foreach ( const QRect& rect, m_itemRects ) + { + if ( rect.contains( event->pos() ) ) + { + if ( m_hoveredRect != rect ) + { + setCursor( Qt::PointingHandCursor ); + m_hoveredRect = rect; + repaint(); + } + return; + } + } + + if ( !m_hoveredRect.isNull() ) + { + setCursor( Qt::ArrowCursor ); + m_hoveredRect = QRect(); + repaint(); + } +} + + +void +PlayableCover::mouseReleaseEvent( QMouseEvent* event ) +{ + QLabel::mouseReleaseEvent( event ); + + foreach ( const QRect& rect, m_itemRects ) + { + if ( rect.contains( event->pos() ) ) + { + if ( m_artist ) + ViewManager::instance()->show( m_artist ); + else if ( m_album ) + ViewManager::instance()->show( m_album->artist() ); + else if ( m_query ) + ViewManager::instance()->show( Tomahawk::Artist::get( m_query->artist() ) ); + + return; + } + } +} + + void PlayableCover::setPixmap( const QPixmap& pixmap ) { @@ -87,6 +139,8 @@ PlayableCover::setPixmap( const QPixmap& pixmap ) void PlayableCover::paintEvent( QPaintEvent* event ) { + Q_UNUSED( event ); + QPainter painter( this ); painter.setRenderHint( QPainter::Antialiasing ); painter.drawPixmap( 0, 0, pixmap() ); @@ -98,6 +152,7 @@ PlayableCover::paintEvent( QPaintEvent* event ) QPixmap buffer( r.size() ); buffer.fill( Qt::transparent ); QPainter bufpainter( &buffer ); + bufpainter.setRenderHint( QPainter::Antialiasing ); QTextOption to; to.setWrapMode( QTextOption::NoWrap ); @@ -181,18 +236,25 @@ PlayableCover::paintEvent( QPaintEvent* event ) bufpainter.drawText( textRect, text, to ); bufpainter.setFont( font ); - // If the user is hovering over an artist rect, draw a background so she knows it's clickable + QRect r = textRect; r.setTop( r.bottom() - bufpainter.fontMetrics().height() ); r.adjust( 4, 0, -4, -1 ); -/* if ( m_hoveringOver == index ) + + text = bufpainter.fontMetrics().elidedText( bottom, Qt::ElideRight, textRect.width() - 16 ); + int textWidth = bufpainter.fontMetrics().width( text ); + r.adjust( ( r.width() - textWidth ) / 2 - 6, 0, - ( ( r.width() - textWidth ) / 2 - 6 ), 0 ); + + m_itemRects.clear(); + m_itemRects << r; + + if ( m_hoveredRect == r ) { - TomahawkUtils::drawQueryBackground( bufpainter, opt.palette, r, 1.1 ); - bufpainter.setPen( opt.palette.color( QPalette::HighlightedText ) ); - }*/ + TomahawkUtils::drawQueryBackground( &bufpainter, palette(), r, 1.1 ); + bufpainter.setPen( Qt::white ); + } to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom ); - text = bufpainter.fontMetrics().elidedText( bottom, Qt::ElideRight, textRect.width() - 16 ); bufpainter.drawText( textRect.adjusted( 5, -1, -5, -1 ), text, to ); } diff --git a/src/libtomahawk/widgets/PlayableCover.h b/src/libtomahawk/widgets/PlayableCover.h index 9179a0f0e2..f96f1cba2a 100644 --- a/src/libtomahawk/widgets/PlayableCover.h +++ b/src/libtomahawk/widgets/PlayableCover.h @@ -56,6 +56,9 @@ public slots: virtual void resizeEvent( QResizeEvent* event ); virtual void paintEvent( QPaintEvent* event ); + virtual void mouseMoveEvent( QMouseEvent* event ); + virtual void mouseReleaseEvent( QMouseEvent* event ); + void leaveEvent( QEvent* event ); void enterEvent( QEvent* event ); @@ -70,6 +73,9 @@ private slots: Tomahawk::album_ptr m_album; Tomahawk::query_ptr m_query; + QList< QRect > m_itemRects; + QRect m_hoveredRect; + bool m_showText; }; From 2202fa95e7eae2969b0cee89aace6bcccb6bf81b Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Thu, 3 Jan 2013 08:57:40 -0500 Subject: [PATCH 077/310] Fix arist icon so star is smaller and better centered in cirlce --- data/images/artist-icon.svg | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/data/images/artist-icon.svg b/data/images/artist-icon.svg index 613bb3af12..22a5b740ec 100644 --- a/data/images/artist-icon.svg +++ b/data/images/artist-icon.svg @@ -4,8 +4,6 @@ Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + \ No newline at end of file From f7f054ed1a13701da3b3eb9b941793e0f4e08dac Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 3 Jan 2013 19:59:28 +0100 Subject: [PATCH 078/310] * Added shuffle & repeat mode slots & signals to AudioEngine. --- src/libtomahawk/audio/AudioEngine.cpp | 28 +++++++++++++++++++++++++++ src/libtomahawk/audio/AudioEngine.h | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 35af08c17c..a196f326cb 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -865,6 +865,8 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) { disconnect( m_playlist.data(), SIGNAL( previousTrackAvailable( bool ) ) ); disconnect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ) ); + disconnect( m_playlist.data(), SIGNAL( shuffleModeChanged( bool ) ) ); + disconnect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); } m_playlist.data()->reset(); @@ -886,12 +888,38 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) connect( m_playlist.data(), SIGNAL( previousTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); connect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); + + connect( m_playlist.data(), SIGNAL( shuffleModeChanged( bool ) ), SIGNAL( shuffleModeChanged( bool ) ) ); + connect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ) ), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ) ) ); + + emit shuffleModeChanged( m_playlist.data()->shuffled() ); + emit repeatModeChanged( m_playlist.data()->repeatMode() ); } emit playlistChanged( playlist ); } +void +AudioEngine::setRepeatMode( Tomahawk::PlaylistModes::RepeatMode mode ) +{ + if ( !m_playlist.isNull() ) + { + m_playlist.data()->setRepeatMode( mode ); + } +} + + +void +AudioEngine::setShuffled( bool enabled ) +{ + if ( !m_playlist.isNull() ) + { + m_playlist.data()->setShuffled( enabled ); + } +} + + void AudioEngine::setStopAfterTrack( const query_ptr& query ) { diff --git a/src/libtomahawk/audio/AudioEngine.h b/src/libtomahawk/audio/AudioEngine.h index 65dea38569..c169fcff3a 100644 --- a/src/libtomahawk/audio/AudioEngine.h +++ b/src/libtomahawk/audio/AudioEngine.h @@ -98,6 +98,9 @@ public slots: void setStopAfterTrack( const Tomahawk::query_ptr& query ); + void setRepeatMode( Tomahawk::PlaylistModes::RepeatMode mode ); + void setShuffled( bool enabled ); + signals: void loading( const Tomahawk::result_ptr& track ); void started( const Tomahawk::result_ptr& track ); @@ -110,6 +113,8 @@ public slots: void seeked( qint64 ms ); + void shuffleModeChanged( bool enabled ); + void repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ); void controlStateChanged(); void stateChanged( AudioState newState, AudioState oldState ); void volumeChanged( int volume /* in percent */ ); From 7fa21a38e5221a368aba0185c79bce15be38d51a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 3 Jan 2013 19:59:52 +0100 Subject: [PATCH 079/310] * Remove shuffle & repeat mode slots & signals from ViewManager. --- src/libtomahawk/ViewManager.cpp | 43 --------------------------------- src/libtomahawk/ViewManager.h | 7 ------ 2 files changed, 50 deletions(-) diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index 76ddc7d2f8..387f9eb536 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -524,8 +524,6 @@ ViewManager::setPage( ViewPage* page, bool trackHistory ) if ( page == m_currentPage ) return; - unlinkPlaylist(); - if ( m_stack->indexOf( page->widget() ) < 0 ) { m_stack->addWidget( page->widget() ); @@ -589,35 +587,12 @@ ViewManager::isNewPlaylistPageVisible() const } -void -ViewManager::unlinkPlaylist() -{ - if ( currentPlaylistInterface() ) - { - disconnect( currentPlaylistInterface().data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), - this, SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); - - disconnect( currentPlaylistInterface().data(), SIGNAL( shuffleModeChanged( bool ) ), - this, SIGNAL( shuffleModeChanged( bool ) ) ); - } -} - - void ViewManager::updateView() { if ( currentPlaylistInterface() ) { - connect( currentPlaylistInterface().data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), - SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); - - connect( currentPlaylistInterface().data(), SIGNAL( shuffleModeChanged( bool ) ), - SIGNAL( shuffleModeChanged( bool ) ) ); - m_infobar->setFilter( currentPage()->filter() ); - - emit repeatModeChanged( currentPlaylistInterface()->repeatMode() ); - emit shuffleModeChanged( currentPlaylistInterface()->shuffled() ); } /* if ( currentPage()->queueVisible() ) @@ -686,24 +661,6 @@ ViewManager::onWidgetDestroyed( QWidget* widget ) } -void -ViewManager::setRepeatMode( Tomahawk::PlaylistModes::RepeatMode mode ) -{ - if ( currentPlaylistInterface() ) - currentPlaylistInterface()->setRepeatMode( mode ); -} - - -void -ViewManager::setShuffled( bool enabled ) -{ - if ( currentPlaylistInterface() ) - { - currentPlaylistInterface()->setShuffled( enabled ); - } -} - - void ViewManager::createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ) { diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h index 5b7d86e25f..d42c25b34d 100644 --- a/src/libtomahawk/ViewManager.h +++ b/src/libtomahawk/ViewManager.h @@ -108,9 +108,6 @@ Q_OBJECT bool isTomahawkLoaded() const { return m_loaded; } signals: - void repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ); - void shuffleModeChanged( bool enabled ); - void filterAvailable( bool b ); void playClicked(); @@ -154,9 +151,6 @@ public slots: void showQueue() { emit showQueueRequested(); } void hideQueue() { emit hideQueueRequested(); } - void setRepeatMode( Tomahawk::PlaylistModes::RepeatMode mode ); - void setShuffled( bool enabled ); - void playlistInterfaceChanged( Tomahawk::playlistinterface_ptr ); // called by the playlist creation dbcmds @@ -174,7 +168,6 @@ private slots: private: void setPage( Tomahawk::ViewPage* page, bool trackHistory = true ); void updateView(); - void unlinkPlaylist(); Tomahawk::playlist_ptr playlistForInterface( Tomahawk::playlistinterface_ptr plInterface ) const; Tomahawk::dynplaylist_ptr dynamicPlaylistForInterface( Tomahawk::playlistinterface_ptr plInterface ) const; From 719b9738d8292479c3af296b50a42e82d96ba538 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 3 Jan 2013 20:00:13 +0100 Subject: [PATCH 080/310] * Make AudioContols directly connect to AudioEngine's repeat & shuffle signals. --- src/AudioControls.cpp | 10 ++++++---- src/TomahawkWindow.cpp | 7 +------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index dd8d82e42e..c922199947 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -140,6 +140,8 @@ AudioControls::AudioControls( QWidget* parent ) connect( AudioEngine::instance(), SIGNAL( timerMilliSeconds( qint64 ) ), SLOT( onPlaybackTimer( qint64 ) ) ); connect( AudioEngine::instance(), SIGNAL( volumeChanged( int ) ), SLOT( onVolumeChanged( int ) ) ); connect( AudioEngine::instance(), SIGNAL( controlStateChanged() ), SLOT( onControlStateChanged() ) ); + connect( AudioEngine::instance(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), SLOT( onRepeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); + connect( AudioEngine::instance(), SIGNAL( shuffleModeChanged( bool ) ), SLOT( onShuffleModeChanged( bool ) ) ); ui->buttonAreaLayout->setSpacing( 0 ); ui->stackedLayout->setSpacing( 0 ); @@ -560,21 +562,21 @@ AudioControls::onRepeatClicked() case PlaylistModes::NoRepeat: { // switch to RepeatOne - ViewManager::instance()->setRepeatMode( PlaylistModes::RepeatOne ); + AudioEngine::instance()->setRepeatMode( PlaylistModes::RepeatOne ); } break; case PlaylistModes::RepeatOne: { // switch to RepeatAll - ViewManager::instance()->setRepeatMode( PlaylistModes::RepeatAll ); + AudioEngine::instance()->setRepeatMode( PlaylistModes::RepeatAll ); } break; case PlaylistModes::RepeatAll: { // switch to NoRepeat - ViewManager::instance()->setRepeatMode( PlaylistModes::NoRepeat ); + AudioEngine::instance()->setRepeatMode( PlaylistModes::NoRepeat ); } break; @@ -611,7 +613,7 @@ AudioControls::onShuffleModeChanged( bool enabled ) void AudioControls::onShuffleClicked() { - ViewManager::instance()->setShuffled( m_shuffled ^ true ); + AudioEngine::instance()->setShuffled( m_shuffled ^ true ); } diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index c8c83ecb07..bf083b10ef 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -497,6 +497,7 @@ TomahawkWindow::setupWindowsButtons() #endif } + HICON TomahawkWindow::thumbIcon(TomahawkUtils::ImageType type) { @@ -514,12 +515,6 @@ TomahawkWindow::thumbIcon(TomahawkUtils::ImageType type) void TomahawkWindow::setupSignals() { - // - connect( ViewManager::instance(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), - m_audioControls, SLOT( onRepeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); - connect( ViewManager::instance(), SIGNAL( shuffleModeChanged( bool ) ), - m_audioControls, SLOT( onShuffleModeChanged( bool ) ) ); - // connect( AudioEngine::instance(), SIGNAL( error( AudioEngine::AudioErrorCode ) ), SLOT( onAudioEngineError( AudioEngine::AudioErrorCode ) ) ); connect( AudioEngine::instance(), SIGNAL( loading( const Tomahawk::result_ptr& ) ), SLOT( onPlaybackLoading( const Tomahawk::result_ptr& ) ) ); From 80bb0de53a06b10787379c53bb0da8521efa7724 Mon Sep 17 00:00:00 2001 From: Kilian Lackhove Date: Fri, 4 Jan 2013 00:13:10 +0100 Subject: [PATCH 081/310] receive icon directly from resolvers Dont let external resolvers send a (probably faulty) path to an image file, but receive the image itself directly. This is consistent with the way the config _msgtype works, so comression is supported, too. --- src/libtomahawk/resolvers/QtScriptResolver.cpp | 12 +++++++++--- src/libtomahawk/resolvers/ScriptResolver.cpp | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index cd9e427ab2..b722c1eb51 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -326,15 +326,21 @@ QtScriptResolver::init() m_name = m.value( "name" ).toString(); m_weight = m.value( "weight", 0 ).toUInt(); m_timeout = m.value( "timeout", 25 ).toUInt() * 1000; - QString iconPath = QFileInfo( filePath() ).path() + "/" + m.value( "icon" ).toString(); - int success = m_icon.load( iconPath ); + bool compressed = m.value( "compressed", "false" ).toString() == "true"; + + QByteArray icoData = m.value( "icon" ).toByteArray(); + if( compressed ) + icoData = qUncompress( QByteArray::fromBase64( icoData ) ); + else + icoData = QByteArray::fromBase64( icoData ); + bool success = m_icon.loadFromData( icoData ); // load config widget and apply settings loadUi(); QVariantMap config = resolverUserConfig(); fillDataInWidgets( config ); - qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon" << iconPath << "icon found" << success; + qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon found" << success; m_ready = true; } diff --git a/src/libtomahawk/resolvers/ScriptResolver.cpp b/src/libtomahawk/resolvers/ScriptResolver.cpp index b2cf5ec718..e977bce4a7 100644 --- a/src/libtomahawk/resolvers/ScriptResolver.cpp +++ b/src/libtomahawk/resolvers/ScriptResolver.cpp @@ -376,10 +376,16 @@ ScriptResolver::doSetup( const QVariantMap& m ) m_name = m.value( "name" ).toString(); m_weight = m.value( "weight", 0 ).toUInt(); m_timeout = m.value( "timeout", 5 ).toUInt() * 1000; - QString iconPath = QFileInfo( filePath() ).path() + "/" + m.value( "icon" ).toString(); - int success = m_icon.load( iconPath ); + bool compressed = m.value( "compressed", "false" ).toString() == "true"; + + QByteArray icoData = m.value( "icon" ).toByteArray(); + if( compressed ) + icoData = qUncompress( QByteArray::fromBase64( icoData ) ); + else + icoData = QByteArray::fromBase64( icoData ); + bool success = m_icon.loadFromData( icoData ); - qDebug() << "SCRIPT" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon" << iconPath << "icon found" << success; + qDebug() << "SCRIPT" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon found" << success; m_ready = true; m_configSent = false; From 9eb2afbc874c0db4b073612395733037a37724db Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Fri, 4 Jan 2013 01:16:37 +0100 Subject: [PATCH 082/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 74 ++++++------- lang/tomahawk_bg.ts | 74 ++++++------- lang/tomahawk_bn_IN.ts | 74 ++++++------- lang/tomahawk_ca.ts | 74 ++++++------- lang/tomahawk_cs.ts | 74 ++++++------- lang/tomahawk_de.ts | 74 ++++++------- lang/tomahawk_el.ts | 74 ++++++------- lang/tomahawk_en.ts | 74 ++++++------- lang/tomahawk_es.ts | 74 ++++++------- lang/tomahawk_fi.ts | 74 ++++++------- lang/tomahawk_fr.ts | 74 ++++++------- lang/tomahawk_gl.ts | 74 ++++++------- lang/tomahawk_hi_IN.ts | 74 ++++++------- lang/tomahawk_hu.ts | 74 ++++++------- lang/tomahawk_it.ts | 74 ++++++------- lang/tomahawk_ja.ts | 74 ++++++------- lang/tomahawk_lt.ts | 74 ++++++------- lang/tomahawk_pl.ts | 74 ++++++------- lang/tomahawk_pt_BR.ts | 74 ++++++------- lang/tomahawk_ru.ts | 239 +++++++++++++++++++++-------------------- lang/tomahawk_sv.ts | 74 ++++++------- lang/tomahawk_tr.ts | 74 ++++++------- lang/tomahawk_zh_CN.ts | 74 ++++++------- lang/tomahawk_zh_TW.ts | 74 ++++++------- 24 files changed, 972 insertions(+), 969 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 906fc6483a..c63dc9b293 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -331,37 +331,37 @@ connect and stream from you? AudioControls - + Shuffle خلط - + Repeat إعادة - + Time Elapsed الوقت المنقضي - + Time Remaining الوقت المتبقي - + Playing from %1 يتم الاستماع من %1 - + Share شارك - + Love أحب @@ -3478,13 +3478,13 @@ enter the displayed PIN number here:
- + Hide Menu Bar إخفي شريط القائمة - + Show Menu Bar أظهر شريط القائمة @@ -3499,136 +3499,136 @@ enter the displayed PIN number here: ال&قائمة الرئيسية - - - + + + Connect To Peer ربط بالند - + Enter peer address: أدخل عنوان الند: - + Enter peer port: أدخل بوابة الند: - + Enter peer key: أدخل مفتاح الند: - + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 حقوق الطبع والنشر ٢٠١٠ - ٢٠١٢ - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index fe4777ae33..5d91270125 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Разбъркано - + Repeat Повтори - + Time Elapsed Изминало време - + Time Remaining Оставащо време - + Playing from %1 Изпълнявам от %1 - + Share Сподели - + Love Харесай @@ -3492,13 +3492,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Скрий лентата с менюто - + Show Menu Bar Покажи лентата с менюто @@ -3513,139 +3513,139 @@ enter the displayed PIN number here: &Основно меню - - - + + + Connect To Peer Свържи се с друг потребител - + Enter peer address: Въведи адресът на отдалеченият потребител: - + Enter peer port: Въведи порт: - + Enter peer key: Въведи ключът за удостоверяване: - + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Всички права - запазени. 2010 - 2012 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index f26befa9cd..ef3a9f9f7d 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 67bf3e5ace..763563dc14 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Mescla - + Repeat Repeteix - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3476,13 +3476,13 @@ introduïu el PIN aquí: - + Hide Menu Bar - + Show Menu Bar @@ -3497,136 +3497,136 @@ introduïu el PIN aquí: - - - + + + Connect To Peer Connexió Remota - + Enter peer address: Introduïu l'adreça remota: - + Enter peer port: Introduïu el port remot: - + Enter peer key: Introduïu la clau remota: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 764d0d4372..ca69d18b7e 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 83f99d5aa2..d7e0bb655f 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -331,37 +331,37 @@ erlauben sich mit dir zu verbinden? AudioControls - + Shuffle Zufall - + Repeat Wiederholen - + Time Elapsed Abgelaufene Zeit - + Time Remaining Verbleibende Zeit - + Playing from %1 Wiedergabe von %1 - + Share Teilen - + Love Lieben @@ -3475,13 +3475,13 @@ Tomahawk auf Twitter's Website authentifiziert hast: - + Hide Menu Bar Menüleiste ausblenden - + Show Menu Bar Menüleiste einblenden @@ -3496,136 +3496,136 @@ Tomahawk auf Twitter's Website authentifiziert hast: Haupt&menü - - - + + + Connect To Peer Mit anderem Tomahawk verbinden - + Enter peer address: Gib die Adresse der Gegenstelle ein: - + Enter peer port: Gib den Port der Gegenstelle ein: - + Enter peer key: Gib den Schlüssel der Gegenstelle ein: - + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copright 2010 - 2012 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 10e5fae820..b690fcd648 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Τυχαία σειρά - + Repeat Επανάληψη - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3475,13 +3475,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Απόκρυψη Γραμμής Μενού - + Show Menu Bar @@ -3496,136 +3496,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer Σύνδεση Σε Ομότιμο Κόμβο - + Enter peer address: Εισαγωγή διεύθυνσης ομότιμου κόμβου: - + Enter peer port: Εισαγωγή θύρας ομότιμου κόμβου: - + Enter peer key: Εισαγωγή κλειδιού ομότιμου κόμβου: - + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 040e908213..19301ea9f7 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -331,37 +331,37 @@ connect and stream from you? AudioControls - + Shuffle Shuffle - + Repeat Repeat - + Time Elapsed Time Elapsed - + Time Remaining Time Remaining - + Playing from %1 Playing from %1 - + Share Share - + Love Love @@ -3480,13 +3480,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Hide Menu Bar - + Show Menu Bar Show Menu Bar @@ -3501,136 +3501,136 @@ enter the displayed PIN number here: &Main Menu - - - + + + Connect To Peer Connect To Peer - + Enter peer address: Enter peer address: - + Enter peer port: Enter peer port: - + Enter peer key: Enter peer key: - + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 90c1d0bceb..40eb9e4ae8 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -331,37 +331,37 @@ conectarse a usted y transmitir música? AudioControls - + Shuffle Aleatorio - + Repeat Repetir - + Time Elapsed Tiempo transcurrido - + Time Remaining Tiempo restante - + Playing from %1 Reproduciendo de %1 - + Share Compartir - + Love Favorito @@ -3480,13 +3480,13 @@ introduzca su número PIN aquí: - + Hide Menu Bar Esconder barra de menú - + Show Menu Bar Mostrar barra de menú @@ -3501,136 +3501,136 @@ introduzca su número PIN aquí: &Menú principal - - - + + + Connect To Peer Conectar a un par - + Enter peer address: Introducir dirección del par: - + Enter peer port: Introducir puerto del par: - + Enter peer key: Introducir contraseña del par: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Nueva estación - + Create New Station Crear nueva estación - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010-2012 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index b5333be3ff..b963927a54 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -331,37 +331,37 @@ yhdistää ja toistaa sinulta virtaa? AudioControls - + Shuffle Sekoita - + Repeat Toista - + Time Elapsed Kulunut aika - + Time Remaining Jäljellä oleva aika - + Playing from %1 Soitetaan lähteestä %1 - + Share Jaa - + Love Tykkää @@ -3483,13 +3483,13 @@ anna siellä näytetty PIN-koodi tähän: - + Hide Menu Bar Piilota valikkorivi - + Show Menu Bar Näytä valikkorivi @@ -3504,136 +3504,136 @@ anna siellä näytetty PIN-koodi tähän: &Päävalikko - - - + + + Connect To Peer Yhdistä vertaiseen - + Enter peer address: Anna vertaisen osoite: - + Enter peer port: Anna vertaisen portti: - + Enter peer key: Anna vertaisen avain: - + XSPF Error XSPF-virhe - + This is not a valid XSPF playlist. Tämä ei ole kelvollinen XSPF-soittolista. - + Failed to save tracks Kappaleiden tallentaminen epäonnistui - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010–2012 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 3d6585879f..bc95756382 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -331,37 +331,37 @@ de se connecter et streamer de vous? AudioControls - + Shuffle Lecture Aléatoire - + Repeat Répéter - + Time Elapsed Durée Ecoulé - + Time Remaining Durée Restante - + Playing from %1 - + Share Partager - + Love Favori @@ -3477,13 +3477,13 @@ saisissez le numéro PIN ici : - + Hide Menu Bar Masquer la barre de menu - + Show Menu Bar Afficher la barre de menu @@ -3498,136 +3498,136 @@ saisissez le numéro PIN ici : &Menu Principal - - - + + + Connect To Peer Connexion à un pair - + Enter peer address: Adresse du pair : - + Enter peer port: Port du pair : - + Enter peer key: Clé du pair : - + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Droit d'auteur 2010 - 2012 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index c18c01d6dc..d37c1bf8c0 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Ao chou - + Repeat Repetir - + Time Elapsed Tempo transcorrido - + Time Remaining Tempo que falta - + Playing from %1 Reproducindo de %1 - + Share Compartir - + Love gusta @@ -3477,13 +3477,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Agochar a barra de menú - + Show Menu Bar Mostrar a barra de menú @@ -3498,137 +3498,137 @@ enter the displayed PIN number here: Menú &principal - - - + + + Connect To Peer Conectar cun parceiro - + Enter peer address: Introducir a dirección do parceiro: - + Enter peer port: Introducir o porto do parceiro: - + Enter peer key: Introducir a clave do parceiro: - + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autentificación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 796b8ccb27..ed9aada7c3 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index e2893ef0e4..7d5f8199e5 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat Ismétlés - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk Tomahawkról diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 0bd41b80d6..2c318a487e 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Riproduzione casuale - + Repeat Ripeti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer Connettiti al peer - + Enter peer address: Inserisci indirizzo peer: - + Enter peer port: Inserisci porta peer: - + Enter peer key: Inserisce chiave peer: - + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 2875317fc8..f7bb65c9eb 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle シャッフル - + Repeat リピート - + Time Elapsed 再生時間 - + Time Remaining 残り時間 - + Playing from %1 %1から再生中 - + Share シェアー - + Love Love @@ -3481,13 +3481,13 @@ Meta+Ctrl+Z - + Hide Menu Bar メニューバーを隠す - + Show Menu Bar メニューバーを表示 @@ -3502,136 +3502,136 @@ Meta+Ctrl+Z メインメニュー - - - + + + Connect To Peer ピアに接続する - + Enter peer address: ピアのアドレスを入力: - + Enter peer port: ピアのポートを入力: - + Enter peer key: ピアのキーを入力: - + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 79e4be9f1a..cd4eb895c4 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Maišyti - + Repeat Kartoti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Autorinės teisės 2010 - 2012 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 85f80b250f..c7a0ad6eae 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -331,37 +331,37 @@ połączyć się i strumieniować od ciebie? AudioControls - + Shuffle Losowo - + Repeat Powtarzaj - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love Lubię @@ -3477,13 +3477,13 @@ wprowadź pokazany numer PIN tutaj: - + Hide Menu Bar - + Show Menu Bar @@ -3498,136 +3498,136 @@ wprowadź pokazany numer PIN tutaj: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 74aa397b1e..6dd7488c0b 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -331,37 +331,37 @@ se conecte e faça o stream de você? AudioControls - + Shuffle Shuffle - + Repeat Repetir - + Time Elapsed Tempo decorrido - + Time Remaining Tempo restante - + Playing from %1 Reproduzindo de %1 - + Share Compartilhar - + Love Gostar @@ -3477,13 +3477,13 @@ colocar o número PIN mostrado aqui: - + Hide Menu Bar Esconder barra de menu - + Show Menu Bar Mostrar barra de menu @@ -3498,136 +3498,136 @@ colocar o número PIN mostrado aqui: &Menu principal - - - + + + Connect To Peer Conectar-se ao par - + Enter peer address: Coloque o endereço do par: - + Enter peer port: Coloque a porta do par: - + Enter peer key: Coloque a chave do par: - + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index df130f4c12..a412db0650 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -68,18 +68,18 @@ connect and stream from you? Connections - + Соединения Connect &All - + Соединиться со Всеми Disconnect &All - + Отключиться от Всех @@ -171,27 +171,30 @@ connect and stream from you? Load &XSPF... - + Загрузить &XSPF... U&pdate Collection - + Обновить коллекцию + Fully &Rescan Collection - + Полное сканирование коллекции + Show Offline Sources - + Показать содержимое не в сети + &Configure Tomahawk... - + &Настроить Tomahawk... @@ -259,12 +262,12 @@ connect and stream from you? Tracklist - + Треклист Other Albums - + Другие Альбомы @@ -332,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Случаная - + Repeat Повторять - + Time Elapsed - + Прошедшее время - + Time Remaining - + Оставшееся время - + Playing from %1 - + Воспроизводит из %1 - + Share - + Поделиться - + Love Любимый @@ -553,17 +556,17 @@ connect and stream from you? Much less - + Намного менее Less - + Менее A bit less - + Немного менее @@ -573,17 +576,17 @@ connect and stream from you? A bit more - + Немного более More - + Более Much more - + Намного более @@ -623,12 +626,12 @@ connect and stream from you? By Description - + По описанию Enter a description - + Введите описание @@ -654,12 +657,12 @@ connect and stream from you? This playlist is currently empty. - + Этот плейлист пуст. This playlist is currently empty. Add some tracks to it and enjoy the music! - + Этот плейлист пуст. Добавьте какие-нибудь песни и наслаждайтесь музыкой! @@ -854,7 +857,7 @@ connect and stream from you? Track Number: - + Номер Песни: @@ -919,7 +922,7 @@ connect and stream from you? Properties - + Свойства @@ -1023,17 +1026,17 @@ connect and stream from you? Perfect match - + Превосходное совпадение Very good match - + Очень хорошое совпадение Good match - + Хорошое совпадение @@ -1043,17 +1046,17 @@ connect and stream from you? Bad match - + Плохое совпадение Very bad match - + Очень плохое совпадение Not available - + Недоступно @@ -1081,19 +1084,19 @@ connect and stream from you? 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 @@ -1113,13 +1116,13 @@ connect and stream from you? A playlist you created %1. - + Плейлист, который вы создали %1. A playlist by %1, created %2. - + Плейлист %1, создан %2. @@ -1437,7 +1440,7 @@ connect and stream from you? Install from file - + Установить из файла @@ -1480,7 +1483,7 @@ connect and stream from you? Filter by capability: - + Фильтр по возможности: @@ -1488,22 +1491,22 @@ connect and stream from you? Remote Peer Connection Method - + Метод подключения к удаленным пирам None (outgoing connections only) - + Нет (только исходящие соединения) Use UPnP to establish port forward (recommended) - + Использование UPnP для проброса портов (рекомендуется) Use static external IP address/host name and port - + Использовать статический внешний ip адрес/имя хоста и порт @@ -1513,52 +1516,52 @@ connect and stream from you? Static Host Name: - + Статические имя хоста: Static Port: - + Статический порт: SOCKS Proxy - + SOCKS Прокси Use SOCKS Proxy - + Использовать SOCKS Прокси Proxy Settings... - + Настройки Прокси... Other Settings - + Другие Настройки Allow web browsers to interact with Tomahawk (recommended) - + Разрешить взаимодействие браузеров с Tomahawk (Рекомендуется) Send reports after Tomahawk crashed - + Отправлять отчеты при подениях Tomahawk Show notification when a new song starts to play - + Показать уведомление, когда новая песня начинает играть Clear All Access Control Entries - + Очистить все элементы управления доступом @@ -1566,7 +1569,7 @@ connect and stream from you? Path to scan for music files: - + Путь для поиска музыкальных файлов: @@ -1584,12 +1587,12 @@ connect and stream from you? Watch for changes - + Следите за изменениями Time between scans, in seconds: - + Время между проверками в секундах: @@ -1597,12 +1600,12 @@ connect and stream from you? On - + Включить Off - + Выключить @@ -1960,12 +1963,12 @@ connect and stream from you? Select All - + Выбрать все Sync Starred tracks to Loved tracks - + Синхронизировать Отмеченные песни с Любимыми @@ -2101,7 +2104,7 @@ connect and stream from you? Enter Google Address - + Ввести адрес Google @@ -2119,7 +2122,7 @@ connect and stream from you? Scrobble your tracks to last.fm, and find freely downloadable tracks to play - + Скроблинг ваших песен на last.fm и найти свободные песни для скачивания для воспроизведения @@ -2149,7 +2152,7 @@ connect and stream from you? History Incomplete. Resume Text on a button that resumes import - + История не завершена. Продолжить @@ -2208,7 +2211,7 @@ connect and stream from you? Re-enable playlist subscription - + Повторно включить подписку плейлиста @@ -2218,12 +2221,12 @@ connect and stream from you? Enable Spotify collaborations - + Включить сотрудничество с Spotify Disable Spotify collaborations - + Выключить сотрудничество с Spotify @@ -2419,7 +2422,7 @@ You may wish to try re-authenticating. Local Network - + Домашняя сеть @@ -2427,7 +2430,7 @@ You may wish to try re-authenticating. Local Network - + Домашняя сеть @@ -2870,7 +2873,7 @@ Try tweaking the filters for a new set of songs to play. from my radio - + от моего радио @@ -2890,27 +2893,27 @@ Try tweaking the filters for a new set of songs to play. very low - + Очень низкое low - + Низкое moderate - + Умереный high - + Высокое very high - + Очень высокое @@ -2968,7 +2971,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Grooveshark information from the network! - + Ошибка выборки информации из сети Grooveshark! @@ -3264,7 +3267,7 @@ enter the displayed PIN number here: Local Network - + Домашняя сеть @@ -3475,20 +3478,20 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar Search for any artist, album or song... - + Поиск любого исполнителя, альбома или песни ... @@ -3496,136 +3499,136 @@ enter the displayed PIN number here: &Главное меню - - - + + + Connect To Peer Связаться с Peer - + Enter peer address: Введите адрес узла: - + Enter peer port: Введите адрес порта: - + Enter peer key: Введите адрес ключа: - + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Станция - + Create New Station Создать новую станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Авторское право 2010 - 2012 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3812,7 +3815,7 @@ You can re-send a sync message at any time simply by sending another tweet using Enter Twitter username - + Ввести имя пользователя Twitter @@ -3820,7 +3823,7 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + Плейлист пуст. @@ -3878,7 +3881,7 @@ You can re-send a sync message at any time simply by sending another tweet using Recently played tracks - + Недавно воспроизводимые песни @@ -4191,7 +4194,7 @@ Lyrics for "%1" by %2: Enter Jabber ID - + Ввести Jabber ID diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index ccdf4c5c45..33d7e2aad4 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Blanda - + Repeat Upprepa - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3473,13 +3473,13 @@ anger du PIN-koden här: - + Hide Menu Bar - + Show Menu Bar @@ -3494,136 +3494,136 @@ anger du PIN-koden här: - - - + + + Connect To Peer Anslut till klient - + Enter peer address: Ange klientadress: - + Enter peer port: Ange klientport: - + Enter peer key: Ange klientnyckel: - + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist - + Automatic Playlist - + Pause Paus - + &Play - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 0326fe20f7..4d5ca151a2 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Karışık - + Repeat Yenile - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 10dc4c1cf7..c0e7358257 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle 无序播放 - + Repeat 重复播放 - + Time Elapsed 已播放时间 - + Time Remaining 剩余时间 - + Playing from %1 歌曲来自 %1 - + Share 分享 - + Love 喜欢 @@ -3478,13 +3478,13 @@ enter the displayed PIN number here: - + Hide Menu Bar 隐藏菜单栏 - + Show Menu Bar 显示菜单栏 @@ -3499,136 +3499,136 @@ enter the displayed PIN number here: 主菜单 - - - + + + Connect To Peer 连接到客户端 - + Enter peer address: 输入客户端地址: - + Enter peer port: 输入客户端端口: - + Enter peer key: 输入客户端密钥: - + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 版权所有 2010 - 2012 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index b2facadb1b..71b122b7ef 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -330,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle 隨機 - + Repeat 重複 - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3467,13 +3467,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3488,136 +3488,136 @@ enter the displayed PIN number here: - - - + + + Connect To Peer 連接點對點 - + Enter peer address: 輸入對等地址: - + Enter peer port: 輸入對等連接埠: - + Enter peer key: 輸入對等密鑰: - + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk From 4657efe2f3633c61591b8ac297fe36f9e45395e0 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 08:06:50 +0100 Subject: [PATCH 083/310] * Fixed info button being placed too far right. --- src/libtomahawk/playlist/TreeItemDelegate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/TreeItemDelegate.cpp b/src/libtomahawk/playlist/TreeItemDelegate.cpp index de7776f76a..38db070b92 100644 --- a/src/libtomahawk/playlist/TreeItemDelegate.cpp +++ b/src/libtomahawk/playlist/TreeItemDelegate.cpp @@ -131,7 +131,7 @@ TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, if ( m_view->hoveredIndex() == index && !index.data().toString().isEmpty() && index.column() == 0 ) { - o.rect.setWidth( o.rect.width() - 16 ); + o.rect.setWidth( o.rect.width() - o.rect.height() ); QRect arrowRect( o.rect.x() + o.rect.width(), o.rect.y() + 1, o.rect.height() - 2, o.rect.height() - 2 ); QPixmap infoIcon = TomahawkUtils::defaultPixmap( TomahawkUtils::InfoIcon, TomahawkUtils::Original, arrowRect.size() ); From cbf6aa1a29523fa84754aa16656334e8319034ce Mon Sep 17 00:00:00 2001 From: Kilian Lackhove Date: Fri, 4 Jan 2013 10:26:46 +0100 Subject: [PATCH 084/310] fix subscribe and green dot svgs --- data/images/green-dot.svg | 107 +++++++++++++++++++++++++----- data/images/subscribe-off.svg | 84 ++++++++++++++++++++---- data/images/subscribe-on.svg | 120 +++++++++++++++++++++++++++++----- 3 files changed, 265 insertions(+), 46 deletions(-) diff --git a/data/images/green-dot.svg b/data/images/green-dot.svg index c3057e5c21..f8c4686e2d 100644 --- a/data/images/green-dot.svg +++ b/data/images/green-dot.svg @@ -1,18 +1,93 @@ - - green-dot - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - - - - - + + + + + image/svg+xml + + + + + + green-dot + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + - \ No newline at end of file + + diff --git a/data/images/subscribe-off.svg b/data/images/subscribe-off.svg index 141e5f2c83..b663e49208 100644 --- a/data/images/subscribe-off.svg +++ b/data/images/subscribe-off.svg @@ -1,15 +1,75 @@ - - subscribe-off - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - + + + + + image/svg+xml + + + + + + subscribe-off + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + - \ No newline at end of file + + diff --git a/data/images/subscribe-on.svg b/data/images/subscribe-on.svg index 95932bcdb4..1a4d17a8d6 100644 --- a/data/images/subscribe-on.svg +++ b/data/images/subscribe-on.svg @@ -1,20 +1,104 @@ - - subscribe-on - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - - - - - - - + + + + + image/svg+xml + + + + + + subscribe-on + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + + + - \ No newline at end of file + + From f7c616470126a3e5e26339e21c8ae28922c5b4cc Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 10:59:02 +0100 Subject: [PATCH 085/310] * This doesn't make sense to me, but it fixes the play button being off-center. --- src/libtomahawk/widgets/PlayableCover.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index bcd095df1c..3b135edc1c 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -75,7 +75,7 @@ void PlayableCover::resizeEvent( QResizeEvent* event ) { QLabel::resizeEvent( event ); - m_button->move( contentsRect().center() - QPoint( 23, 23 ) ); + m_button->move( contentsRect().center() - QPoint( 22, 23 ) ); } From 8448e46c7eb9f89f9eb1e21068e5d1c90244eff2 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 10:59:23 +0100 Subject: [PATCH 086/310] * Use correct default viewpage image for AlbumInfoWidget. --- src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp index e8e862b9c6..f18fb710bf 100644 --- a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp @@ -81,7 +81,7 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par ui->tracks->setFrameShape( QFrame::StyledPanel ); ui->tracks->setAttribute( Qt::WA_MacShowFocusRect, 0 ); - m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, TomahawkUtils::Original, QSize( 48, 48 ) ); + m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Original, QSize( 48, 48 ) ); ui->cover->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::Grid, ui->cover->size() ) ); ui->cover->setShowText( true ); From 879648627a361767a91f3cd58d90d8772be36b98 Mon Sep 17 00:00:00 2001 From: Kilian Lackhove Date: Fri, 4 Jan 2013 11:11:50 +0100 Subject: [PATCH 087/310] update artist and album search wigets immediately on arbum/track found --- src/libtomahawk/widgets/SearchWidget.cpp | 74 +++++++++++++----------- src/libtomahawk/widgets/SearchWidget.h | 8 +-- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/src/libtomahawk/widgets/SearchWidget.cpp b/src/libtomahawk/widgets/SearchWidget.cpp index 4a3e1e541a..38cbe2122e 100644 --- a/src/libtomahawk/widgets/SearchWidget.cpp +++ b/src/libtomahawk/widgets/SearchWidget.cpp @@ -116,6 +116,8 @@ SearchWidget::jumpToCurrentTrack() void SearchWidget::onResultsFound( const QList& results ) { + QList artists; + QList albums; foreach( const Tomahawk::result_ptr& result, results ) { if ( !result->collection().isNull() && !result->isOnline() ) @@ -129,32 +131,58 @@ SearchWidget::onResultsFound( const QList& results ) m_resultsModel->appendQuery( q ); - m_artists << result->artist(); - m_albums << result->album(); + artists << result->artist(); + albums << result->album(); } + + onArtistsFound( artists ); + onAlbumsFound( albums ); } void SearchWidget::onAlbumsFound( const QList& albums ) { - m_albums << albums; + foreach ( const Tomahawk::album_ptr& album, albums) + { + int distance = TomahawkUtils::levenshtein( m_search, album->name() ); + int maxlen = qMax( m_search.length(), album->name().length() ); + float score = (float)( maxlen - distance ) / maxlen; + + if ( score <= 0.1 ) + continue; + + m_albums.insert( score, album ); + tDebug() << Q_FUNC_INFO << "found album:" << album->name() << "score:" << score; + } + + updateAlbums(); } void SearchWidget::onArtistsFound( const QList& artists ) { - m_artists << artists; + foreach ( const Tomahawk::artist_ptr& artist, artists ) + { + int distance = TomahawkUtils::levenshtein( m_search, artist->name() ); + int maxlen = qMax( m_search.length(), artist->name().length() ); + float score = (float)( maxlen - distance ) / maxlen; + + if ( score <= 0.1 ) + continue; + + m_artists.insert( score, artist ); + tDebug() << Q_FUNC_INFO << "found artist:" << artist->name() << "score:" << score; + } + + updateArtists(); } void SearchWidget::onQueryFinished() { - sortAlbums(); - sortArtists(); - m_artistsModel->finishLoading(); m_albumsModel->finishLoading(); m_resultsModel->finishLoading(); @@ -162,25 +190,15 @@ SearchWidget::onQueryFinished() void -SearchWidget::sortArtists() +SearchWidget::updateArtists() { - QMap< float, Tomahawk::artist_ptr > ars; QList< Tomahawk::artist_ptr > sortedArtists; - foreach ( const Tomahawk::artist_ptr& artist, m_artists ) - { - int distance = TomahawkUtils::levenshtein( m_search, artist->name() ); - int maxlen = qMax( m_search.length(), artist->name().length() ); - float score = (float)( maxlen - distance ) / maxlen; - - ars.insert( score, artist ); - } - - QList< float > floats = ars.keys(); + QList< float > floats = m_artists.keys(); qSort( floats.begin(), floats.end() ); for ( int i = floats.count() - 1; i >= 0; i-- ) { - sortedArtists << ars.value( floats.at( i ) ); + sortedArtists << m_artists.value( floats.at( i ) ); } m_artistsModel->clear(); @@ -189,25 +207,15 @@ SearchWidget::sortArtists() void -SearchWidget::sortAlbums() +SearchWidget::updateAlbums() { - QMap< float, Tomahawk::album_ptr > ars; QList< Tomahawk::album_ptr > sortedAlbums; - foreach ( const Tomahawk::album_ptr& album, m_albums ) - { - int distance = TomahawkUtils::levenshtein( m_search, album->name() ); - int maxlen = qMax( m_search.length(), album->name().length() ); - float score = (float)( maxlen - distance ) / maxlen; - - ars.insert( score, album ); - } - - QList< float > floats = ars.keys(); + QList< float > floats = m_albums.keys(); qSort( floats.begin(), floats.end() ); for ( int i = floats.count() - 1; i >= 0; i-- ) { - sortedAlbums << ars.value( floats.at( i ) ); + sortedAlbums << m_albums.value( floats.at( i ) ); } m_albumsModel->clear(); diff --git a/src/libtomahawk/widgets/SearchWidget.h b/src/libtomahawk/widgets/SearchWidget.h index 8955f8904a..c4da8481ee 100644 --- a/src/libtomahawk/widgets/SearchWidget.h +++ b/src/libtomahawk/widgets/SearchWidget.h @@ -72,8 +72,8 @@ private slots: void onQueryFinished(); private: - void sortArtists(); - void sortAlbums(); + void updateArtists(); + void updateAlbums(); Ui::SearchWidget *ui; @@ -84,8 +84,8 @@ private slots: PlaylistModel* m_resultsModel; QList< Tomahawk::query_ptr > m_queries; - QList< Tomahawk::artist_ptr > m_artists; - QList< Tomahawk::album_ptr > m_albums; + QMap< float, Tomahawk::artist_ptr > m_artists; + QMap< float, Tomahawk::album_ptr > m_albums; }; #endif // NEWPLAYLISTWIDGET_H From 9b9c826f621e89a79b514d862e00746687a92925 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 11:11:51 +0100 Subject: [PATCH 088/310] * Fixed repainting issues with PlayableCover. --- src/libtomahawk/widgets/PlayableCover.cpp | 11 +++++++++++ src/libtomahawk/widgets/PlayableCover.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 3b135edc1c..2c5652f264 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -133,6 +133,7 @@ void PlayableCover::setPixmap( const QPixmap& pixmap ) { m_pixmap = TomahawkUtils::createRoundedImage( pixmap, size() ); + repaint(); } @@ -288,6 +289,7 @@ void PlayableCover::setArtist( const Tomahawk::artist_ptr& artist ) { m_artist = artist; + repaint(); } @@ -295,6 +297,7 @@ void PlayableCover::setAlbum( const Tomahawk::album_ptr& album ) { m_album = album; + repaint(); } @@ -302,4 +305,12 @@ void PlayableCover::setQuery( const Tomahawk::query_ptr& query ) { m_query = query; + repaint(); +} + + +void PlayableCover::setShowText( bool b ) +{ + m_showText = b; + repaint(); } diff --git a/src/libtomahawk/widgets/PlayableCover.h b/src/libtomahawk/widgets/PlayableCover.h index f96f1cba2a..0a07af9e7c 100644 --- a/src/libtomahawk/widgets/PlayableCover.h +++ b/src/libtomahawk/widgets/PlayableCover.h @@ -41,7 +41,7 @@ Q_OBJECT virtual ~PlayableCover(); bool showText() const { return m_showText; } - void setShowText( bool b ) { m_showText = b; } + void setShowText( bool b ); QPixmap pixmap() const { return m_pixmap; } From dec530cc24a8398efc71f3f8168d98ca9cd3f00c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 11:17:59 +0100 Subject: [PATCH 089/310] * Fixed default row sizehints in Album- & PlaylistLargeItemDelegate. --- src/libtomahawk/playlist/AlbumItemDelegate.cpp | 7 ++----- src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/libtomahawk/playlist/AlbumItemDelegate.cpp b/src/libtomahawk/playlist/AlbumItemDelegate.cpp index bdb38681a4..2ba6700e22 100644 --- a/src/libtomahawk/playlist/AlbumItemDelegate.cpp +++ b/src/libtomahawk/playlist/AlbumItemDelegate.cpp @@ -64,11 +64,8 @@ AlbumItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelInd { QSize size = QStyledItemDelegate::sizeHint( option, index ); - if ( index.isValid() ) - { - int rowHeight = option.fontMetrics.height() + 8; - size.setHeight( rowHeight * 1.5 ); - } + int rowHeight = option.fontMetrics.height() + 8; + size.setHeight( rowHeight * 1.5 ); return size; } diff --git a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp index ed3858dbb6..30d248fcfa 100644 --- a/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistLargeItemDelegate.cpp @@ -68,11 +68,8 @@ PlaylistLargeItemDelegate::sizeHint( const QStyleOptionViewItem& option, const Q { QSize size = QStyledItemDelegate::sizeHint( option, index ); - if ( index.isValid() ) - { - int rowHeight = option.fontMetrics.height() + 8; - size.setHeight( rowHeight * 3 ); - } + int rowHeight = option.fontMetrics.height() + 8; + size.setHeight( rowHeight * 3 ); return size; } From 1f966e1566a0d3cb74a4dc7988ca745c2f2321ed Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 11:28:29 +0100 Subject: [PATCH 090/310] * Put About Tomahawk at the bottom of the Help menu. --- src/libtomahawk/ActionCollection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/ActionCollection.cpp b/src/libtomahawk/ActionCollection.cpp index f777be9f9c..ea5f23e2b6 100644 --- a/src/libtomahawk/ActionCollection.cpp +++ b/src/libtomahawk/ActionCollection.cpp @@ -158,12 +158,12 @@ ActionCollection::createMenuBar( QWidget *parent ) QMenu *helpMenu = new QMenu( tr( "&Help" ), menuBar ); helpMenu->addAction( m_actionCollection[ "diagnostics" ] ); - helpMenu->addAction( m_actionCollection[ "aboutTomahawk" ] ); helpMenu->addAction( m_actionCollection[ "legalInfo" ] ); + helpMenu->addAction( m_actionCollection[ "aboutTomahawk" ] ); // Setup update check #ifndef Q_OS_MAC - helpMenu->insertSeparator( m_actionCollection[ "aboutTomahawk" ] ); + helpMenu->insertSeparator( m_actionCollection[ "legalInfo" ] ); #endif #if defined( Q_OS_MAC ) && defined( HAVE_SPARKLE ) From ef108b6a6f1c917a6215a6d68f87e33e3ddd6079 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 11:47:09 +0100 Subject: [PATCH 091/310] * Added openLogfile action to ActionCollection. --- src/libtomahawk/ActionCollection.cpp | 54 ++++++++++++++++------------ 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/libtomahawk/ActionCollection.cpp b/src/libtomahawk/ActionCollection.cpp index ea5f23e2b6..6ce9b0f369 100644 --- a/src/libtomahawk/ActionCollection.cpp +++ b/src/libtomahawk/ActionCollection.cpp @@ -99,44 +99,47 @@ ActionCollection::initActions() connect( m_actionCollection[ "nextTrack" ], SIGNAL( triggered() ), ae, SLOT( next() ), Qt::UniqueConnection ); // main menu actions - m_actionCollection[ "loadXSPF" ] = new QAction( tr( "Load &XSPF..." ), this ); - m_actionCollection[ "updateCollection" ] = new QAction( tr( "U&pdate Collection" ), this ); - m_actionCollection[ "rescanCollection" ] = new QAction( tr( "Fully &Rescan Collection" ), this ); + m_actionCollection[ "loadXSPF" ] = new QAction( tr( "Load &XSPF..." ), this ); + m_actionCollection[ "updateCollection" ] = new QAction( tr( "U&pdate Collection" ), this ); + m_actionCollection[ "rescanCollection" ] = new QAction( tr( "Fully &Rescan Collection" ), this ); m_actionCollection[ "showOfflineSources" ] = new QAction( tr( "Show Offline Sources" ), this ); m_actionCollection[ "showOfflineSources" ]->setCheckable( true ); - m_actionCollection[ "preferences" ] = new QAction( tr( "&Configure Tomahawk..." ), this ); + m_actionCollection[ "preferences" ] = new QAction( tr( "&Configure Tomahawk..." ), this ); m_actionCollection[ "preferences" ]->setIcon( ImageRegistry::instance()->icon( RESPATH "images/configure.svg" ) ); m_actionCollection[ "preferences" ]->setMenuRole( QAction::PreferencesRole ); #ifdef Q_OS_MAC - m_actionCollection[ "minimize" ] = new QAction( tr( "Minimize" ), this ); + m_actionCollection[ "minimize" ] = new QAction( tr( "Minimize" ), this ); m_actionCollection[ "minimize" ]->setShortcut( QKeySequence( "Ctrl+M" ) ); - m_actionCollection[ "zoom" ] = new QAction( tr( "Zoom" ), this ); + m_actionCollection[ "zoom" ] = new QAction( tr( "Zoom" ), this ); m_actionCollection[ "zoom" ]->setShortcut( QKeySequence( "Meta+Ctrl+Z" ) ); #else - m_actionCollection[ "toggleMenuBar" ] = new QAction( tr( "Hide Menu Bar" ), this ); + m_actionCollection[ "toggleMenuBar" ] = new QAction( tr( "Hide Menu Bar" ), this ); m_actionCollection[ "toggleMenuBar" ]->setShortcut( QKeySequence( "Ctrl+M" ) ); m_actionCollection[ "toggleMenuBar" ]->setShortcutContext( Qt::ApplicationShortcut ); #endif - m_actionCollection[ "diagnostics" ] = new QAction( tr( "Diagnostics..." ), this ); + m_actionCollection[ "diagnostics" ] = new QAction( tr( "Diagnostics..." ), this ); m_actionCollection[ "diagnostics" ]->setMenuRole( QAction::ApplicationSpecificRole ); - m_actionCollection[ "aboutTomahawk" ] = new QAction( tr( "About &Tomahawk..." ), this ); + m_actionCollection[ "aboutTomahawk" ] = new QAction( tr( "About &Tomahawk..." ), this ); m_actionCollection[ "aboutTomahawk" ]->setIcon( ImageRegistry::instance()->icon( RESPATH "images/info.svg" ) ); m_actionCollection[ "aboutTomahawk" ]->setMenuRole( QAction::AboutRole ); - m_actionCollection[ "legalInfo" ] = new QAction( tr( "&Legal Information..." ), this ); + m_actionCollection[ "legalInfo" ] = new QAction( tr( "&Legal Information..." ), this ); m_actionCollection[ "legalInfo" ]->setMenuRole( QAction::ApplicationSpecificRole ); -#if defined( Q_OS_MAC ) && defined( HAVE_SPARKLE ) || defined( Q_WS_WIN ) - m_actionCollection[ "checkForUpdates" ] = new QAction( tr( "Check For Updates..." ), this ); + m_actionCollection[ "openLogfile" ] = new QAction( tr( "&View Logfile" ), this ); + m_actionCollection[ "openLogfile" ]->setMenuRole( QAction::ApplicationSpecificRole ); + #if defined( Q_OS_MAC ) && defined( HAVE_SPARKLE ) || defined( Q_WS_WIN ) + m_actionCollection[ "checkForUpdates" ] = new QAction( tr( "Check For Updates..." ), this ); m_actionCollection[ "checkForUpdates" ]->setMenuRole( QAction::ApplicationSpecificRole ); #endif - m_actionCollection[ "crashNow" ] = new QAction( "Crash now...", this ); + m_actionCollection[ "crashNow" ] = new QAction( "Crash now...", this ); } -QMenuBar * + +QMenuBar* ActionCollection::createMenuBar( QWidget *parent ) { - QMenuBar *menuBar = new QMenuBar( parent ); + QMenuBar* menuBar = new QMenuBar( parent ); - QMenu *controlsMenu = new QMenu( tr( "&Controls" ), menuBar ); + QMenu* controlsMenu = new QMenu( tr( "&Controls" ), menuBar ); controlsMenu->addAction( m_actionCollection[ "playPause" ] ); controlsMenu->addAction( m_actionCollection[ "previousTrack" ] ); controlsMenu->addAction( m_actionCollection[ "nextTrack" ] ); @@ -150,14 +153,15 @@ ActionCollection::createMenuBar( QWidget *parent ) controlsMenu->addSeparator(); controlsMenu->addAction( m_actionCollection[ "quit" ] ); - QMenu *settingsMenu = new QMenu( tr( "&Settings" ), menuBar ); + QMenu* settingsMenu = new QMenu( tr( "&Settings" ), menuBar ); #ifndef Q_OS_MAC settingsMenu->addAction( m_actionCollection[ "toggleMenuBar" ] ); #endif settingsMenu->addAction( m_actionCollection[ "preferences" ] ); - QMenu *helpMenu = new QMenu( tr( "&Help" ), menuBar ); + QMenu* helpMenu = new QMenu( tr( "&Help" ), menuBar ); helpMenu->addAction( m_actionCollection[ "diagnostics" ] ); + helpMenu->addAction( m_actionCollection[ "openLogfile" ] ); helpMenu->addAction( m_actionCollection[ "legalInfo" ] ); helpMenu->addAction( m_actionCollection[ "aboutTomahawk" ] ); @@ -180,21 +184,24 @@ ActionCollection::createMenuBar( QWidget *parent ) menuBar->addMenu( controlsMenu ); menuBar->addMenu( settingsMenu ); + #if defined( Q_OS_MAC ) - QMenu *windowMenu = new QMenu( tr( "&Window" ), menuBar ); + QMenu* windowMenu = new QMenu( tr( "&Window" ), menuBar ); windowMenu->addAction( m_actionCollection[ "minimize" ] ); windowMenu->addAction( m_actionCollection[ "zoom" ] ); menuBar->addMenu( windowMenu ); #endif + menuBar->addMenu( helpMenu ); return menuBar; } -QMenu * + +QMenu* ActionCollection::createCompactMenu( QWidget *parent ) { - QMenu *compactMenu = new QMenu( tr( "Main Menu" ), parent ); + QMenu* compactMenu = new QMenu( tr( "Main Menu" ), parent ); compactMenu->addAction( m_actionCollection[ "playPause" ] ); compactMenu->addAction( m_actionCollection[ "previousTrack" ] ); @@ -218,12 +225,13 @@ ActionCollection::createCompactMenu( QWidget *parent ) compactMenu->addSeparator(); compactMenu->addAction( m_actionCollection[ "diagnostics" ] ); - compactMenu->addAction( m_actionCollection[ "aboutTomahawk" ] ); + compactMenu->addAction( m_actionCollection[ "openLogfile" ] ); compactMenu->addAction( m_actionCollection[ "legalInfo" ] ); + compactMenu->addAction( m_actionCollection[ "aboutTomahawk" ] ); // Setup update check #ifndef Q_OS_MAC - compactMenu->insertSeparator( m_actionCollection[ "aboutTomahawk" ] ); + compactMenu->insertSeparator( m_actionCollection[ "legalInfo" ] ); #endif #if defined( Q_OS_MAC ) && defined( HAVE_SPARKLE ) From 4505260061f0d86da4d8676ee19cd5108890e823 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 11:47:48 +0100 Subject: [PATCH 092/310] * Hook up openLogfile action to TomahawkWindow's slot. --- src/TomahawkWindow.cpp | 12 ++++++++++++ src/TomahawkWindow.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index bf083b10ef..bfd10c218e 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -530,6 +530,7 @@ TomahawkWindow::setupSignals() connect( ac->getAction( "preferences" ), SIGNAL( triggered() ), SLOT( showSettingsDialog() ) ); connect( ac->getAction( "diagnostics" ), SIGNAL( triggered() ), SLOT( showDiagnosticsDialog() ) ); connect( ac->getAction( "legalInfo" ), SIGNAL( triggered() ), SLOT( legalInfo() ) ); + connect( ac->getAction( "openLogfile" ), SIGNAL( triggered() ), SLOT( openLogfile() ) ); connect( ac->getAction( "updateCollection" ), SIGNAL( triggered() ), SLOT( updateCollectionManually() ) ); connect( ac->getAction( "rescanCollection" ), SIGNAL( triggered() ), SLOT( rescanCollectionManually() ) ); connect( ac->getAction( "loadXSPF" ), SIGNAL( triggered() ), SLOT( loadSpiff() )); @@ -829,6 +830,17 @@ TomahawkWindow::legalInfo() } +void +TomahawkWindow::openLogfile() +{ +#ifdef WIN32 + ShellExecuteW( 0, 0, (LPCWSTR)Logger::logfilePath().utf16(), 0, 0, SW_SHOWNORMAL ); +#else + QDesktopServices::openUrl( QUrl::fromLocalFile( Logger::logFile() ) ); +#endif +} + + void TomahawkWindow::updateCollectionManually() { diff --git a/src/TomahawkWindow.h b/src/TomahawkWindow.h index 3807869caf..b666d02195 100644 --- a/src/TomahawkWindow.h +++ b/src/TomahawkWindow.h @@ -100,6 +100,7 @@ public slots: void showSettingsDialog(); void showDiagnosticsDialog(); void legalInfo(); + void openLogfile(); void updateCollectionManually(); void rescanCollectionManually(); void showOfflineSources(); From d6115d1b6dc41cfe4e385de6fffe2b4dbc29cd6d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 12:12:21 +0100 Subject: [PATCH 093/310] * Fixed Windows compile. --- src/TomahawkWindow.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index bfd10c218e..d2c58fa8fc 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -84,6 +84,10 @@ #if defined ( WITH_QtSparkle ) #include #endif + + #include + #include + #ifndef THBN_CLICKED #define THBN_CLICKED 0x1800 #endif @@ -834,7 +838,7 @@ void TomahawkWindow::openLogfile() { #ifdef WIN32 - ShellExecuteW( 0, 0, (LPCWSTR)Logger::logfilePath().utf16(), 0, 0, SW_SHOWNORMAL ); + ShellExecuteW( 0, 0, (LPCWSTR)Logger::logFile().utf16(), 0, 0, SW_SHOWNORMAL ); #else QDesktopServices::openUrl( QUrl::fromLocalFile( Logger::logFile() ) ); #endif From ce562aeddf81d5c88ed7daaa0f1588cb9e28c653 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 4 Jan 2013 12:13:51 +0100 Subject: [PATCH 094/310] Remove obsolete actions from ui file. --- src/TomahawkWindow.ui | 136 ------------------------------------------ 1 file changed, 136 deletions(-) diff --git a/src/TomahawkWindow.ui b/src/TomahawkWindow.ui index 665100efb7..3e81ad9658 100644 --- a/src/TomahawkWindow.ui +++ b/src/TomahawkWindow.ui @@ -62,142 +62,6 @@
- - - &Quit - - - Ctrl+Q - - - QAction::QuitRole - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - Update Collection - - - - - &Configure Tomahawk... - - - QAction::PreferencesRole - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - QAction::AboutRole - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - true - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - Ctrl+M - - - - - Zoom - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - QAction::ApplicationSpecificRole - - - - - Diagnostics... - - - QAction::ApplicationSpecificRole - - - - - Fully &Rescan Collection - - - Fully Rescan Collection - - - - - Play - - - Space - - - - - Previous - - - - - Next - - From 5e4b0b96be85a607f7584ef8ce09dfc85ca541ca Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 12:39:00 +0100 Subject: [PATCH 095/310] * Style clean up for TomahawkWindow. --- src/TomahawkWindow.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index d2c58fa8fc..73e4c717ba 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -140,8 +140,7 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) if ( qApp->arguments().contains( "--debug" ) ) { - connect( ActionCollection::instance()->getAction( "crashNow" ), SIGNAL( triggered() ), - this, SLOT( crashNow() ) ); + connect( ActionCollection::instance()->getAction( "crashNow" ), SIGNAL( triggered() ), SLOT( crashNow() ) ); } // set initial state @@ -233,7 +232,7 @@ TomahawkWindow::applyPlatformTweaks() // nothing and in QtCurve does evil things), and avoid forwarding it // to QtCurve. bool isQtCurve = false; - if( QString( qApp->style()->metaObject()->className() ).toLower().contains( "qtcurve" ) ) + if ( QString( qApp->style()->metaObject()->className() ).toLower().contains( "qtcurve" ) ) isQtCurve = true; qApp->setStyle( new ProxyStyle( isQtCurve ) ); @@ -506,7 +505,7 @@ HICON TomahawkWindow::thumbIcon(TomahawkUtils::ImageType type) { static QMap thumbIcons; - if(!thumbIcons.contains( type ) ) + if (!thumbIcons.contains( type ) ) { QPixmap pix ( TomahawkUtils::defaultPixmap(type , TomahawkUtils::Original, QSize( 20, 20 ) ) ); thumbIcons[type] = pix.toWinHICON(); @@ -568,6 +567,7 @@ TomahawkWindow::setupMenuBar() #endif } + void TomahawkWindow::changeEvent( QEvent* e ) { @@ -895,10 +895,10 @@ TomahawkWindow::addPeerManually() void TomahawkWindow::showOfflineSources() { - m_sourcetree->showOfflineSources( ActionCollection::instance() - ->getAction( "showOfflineSources" )->isChecked() ); - TomahawkSettings::instance()->setShowOfflineSources( ActionCollection::instance() - ->getAction( "showOfflineSources" )->isChecked() ); + m_sourcetree->showOfflineSources( + ActionCollection::instance()->getAction( "showOfflineSources" )->isChecked() ); + TomahawkSettings::instance()->setShowOfflineSources( + ActionCollection::instance()->getAction( "showOfflineSources" )->isChecked() ); } @@ -1326,7 +1326,7 @@ void TomahawkWindow::toggleMenuBar() //SLOT { #ifndef Q_OS_MAC - if( menuBar()->isVisible() ) + if ( menuBar()->isVisible() ) { menuBar()->setVisible( false ); ActionCollection::instance()->getAction( "toggleMenuBar" )->setText( tr( "Show Menu Bar" ) ); From c6d8da2e988da75bd0777b7164078cf1bedf6887 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 12:48:19 +0100 Subject: [PATCH 096/310] * AudioEngine shouldn't emit started() until we're really in playing state. --- src/libtomahawk/audio/AudioEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index a196f326cb..c39ad63110 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -496,7 +496,6 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) } m_input = io; queueState( Playing ); - emit started( m_currentTrack ); if ( TomahawkSettings::instance()->privateListeningMode() != TomahawkSettings::FullyPrivate ) { @@ -750,6 +749,7 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) } if ( newState == Phonon::PlayingState ) { + emit started( m_currentTrack ); setState( Playing ); } From 68e3bcb54bb6a94939b34e5ddf28351da17f45bd Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 12:49:06 +0100 Subject: [PATCH 097/310] * More silly style fixes. --- src/TomahawkWindow.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 73e4c717ba..095499b371 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -522,8 +522,8 @@ TomahawkWindow::setupSignals() connect( AudioEngine::instance(), SIGNAL( error( AudioEngine::AudioErrorCode ) ), SLOT( onAudioEngineError( AudioEngine::AudioErrorCode ) ) ); connect( AudioEngine::instance(), SIGNAL( loading( const Tomahawk::result_ptr& ) ), SLOT( onPlaybackLoading( const Tomahawk::result_ptr& ) ) ); connect( AudioEngine::instance(), SIGNAL( started( Tomahawk::result_ptr ) ), SLOT( audioStarted() ) ); - connect( AudioEngine::instance(), SIGNAL( finished(Tomahawk::result_ptr) ), SLOT( audioFinished() ) ); - connect( AudioEngine::instance(), SIGNAL( resumed()), SLOT( audioStarted() ) ); + connect( AudioEngine::instance(), SIGNAL( finished( Tomahawk::result_ptr ) ), SLOT( audioFinished() ) ); + connect( AudioEngine::instance(), SIGNAL( resumed() ), SLOT( audioStarted() ) ); connect( AudioEngine::instance(), SIGNAL( paused() ), SLOT( audioPaused() ) ); connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( audioStopped() ) ); @@ -536,7 +536,7 @@ TomahawkWindow::setupSignals() connect( ac->getAction( "openLogfile" ), SIGNAL( triggered() ), SLOT( openLogfile() ) ); connect( ac->getAction( "updateCollection" ), SIGNAL( triggered() ), SLOT( updateCollectionManually() ) ); connect( ac->getAction( "rescanCollection" ), SIGNAL( triggered() ), SLOT( rescanCollectionManually() ) ); - connect( ac->getAction( "loadXSPF" ), SIGNAL( triggered() ), SLOT( loadSpiff() )); + connect( ac->getAction( "loadXSPF" ), SIGNAL( triggered() ), SLOT( loadSpiff() ) ); connect( ac->getAction( "aboutTomahawk" ), SIGNAL( triggered() ), SLOT( showAboutTomahawk() ) ); connect( ac->getAction( "quit" ), SIGNAL( triggered() ), qApp, SLOT( quit() ) ); connect( ac->getAction( "showOfflineSources" ), SIGNAL( triggered() ), SLOT( showOfflineSources() ) ); @@ -634,7 +634,7 @@ TomahawkWindow::keyPressEvent( QKeyEvent* e ) #if ! defined ( Q_OS_MAC ) #define KEY_PRESSED Q_FUNC_INFO << "Multimedia Key Pressed:" - switch( e->key() ) + switch ( e->key() ) { case Qt::Key_MediaPlay: tLog() << KEY_PRESSED << "Play"; @@ -681,12 +681,12 @@ TomahawkWindow::winEvent( MSG* msg, long* result ) { #define TB_PRESSED Q_FUNC_INFO << "Taskbar Button Pressed:" - switch( msg->message ) + switch ( msg->message ) { case WM_COMMAND: if ( HIWORD( msg->wParam ) == THBN_CLICKED ) { - switch( TB_STATES(LOWORD( msg->wParam )) ) + switch ( TB_STATES( LOWORD( msg->wParam ) ) ) { case TP_PREVIOUS: tLog() << TB_PRESSED << "Previous"; From 4b886a16574ed723316f6df95bc3ca991bfdd6b0 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 14:43:04 +0100 Subject: [PATCH 098/310] * Reset seekbar during loading so items don't move around. --- src/AudioControls.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index c922199947..52752d87fb 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -227,15 +227,12 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result ) ui->seekSlider->setValue( 0 ); ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() ); - m_sliderTimeLine.stop(); m_sliderTimeLine.setDuration( duration ); m_sliderTimeLine.setFrameRange( 0, duration ); m_sliderTimeLine.setCurveShape( QTimeLine::LinearCurve ); m_sliderTimeLine.setCurrentTime( 0 ); m_seeked = false; - ui->seekSlider->setVisible( true ); - int updateRate = (double)1000 / ( (double)ui->seekSlider->contentsRect().width() / (double)( duration / 1000 ) ); m_sliderTimeLine.setUpdateInterval( qBound( 40, updateRate, 500 ) ); @@ -284,6 +281,11 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result ) ui->loveButton->setToolTip( tr( "Love" ) ); ui->ownerButton->setToolTip( QString( tr( "Playing from %1" ) ).arg( result->friendlySource() ) ); + ui->seekSlider->setRange( 0, 0 ); + ui->seekSlider->setValue( 0 ); + ui->seekSlider->setVisible( true ); + m_sliderTimeLine.stop(); + // If the ViewManager doesn't know a page for the current interface, we can't offer the jump link ui->artistTrackLabel->setJumpLinkVisible( ( ViewManager::instance()->pageForInterface( AudioEngine::instance()->currentTrackPlaylist() ) ) ); From c884615ef1e20eca7a1ed49842a2d8adc040350e Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 14:44:06 +0100 Subject: [PATCH 099/310] * Fixed started() being emitted too often and removed obsolete volume hack. --- src/AudioControls.cpp | 1 + src/libtomahawk/audio/AudioEngine.cpp | 21 ++++++++++++++------- src/libtomahawk/audio/AudioEngine.h | 3 +-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index 52752d87fb..6ab220db9e 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -212,6 +212,7 @@ AudioControls::onControlStateChanged() void AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result ) { + tDebug() << "FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"; if ( result.isNull() ) return; diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index c39ad63110..84ae947fd9 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -451,6 +451,7 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) if ( !err ) { tLog() << "Starting new song:" << m_currentTrack->url(); + m_state = Loading; emit loading( m_currentTrack ); if ( !isHttpResult( m_currentTrack->url() ) && !isLocalResult( m_currentTrack->url() ) ) @@ -736,8 +737,17 @@ AudioEngine::onAboutToFinish() void AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) { - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << oldState << newState << m_expectStop; + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << oldState << newState << m_expectStop << state(); + if ( newState == Phonon::LoadingState ) + { + // We don't emit this state to listeners - yet. + m_state = Loading; + } + if ( newState == Phonon::StoppedState ) + { + m_state = Stopped; + } if ( newState == Phonon::ErrorState ) { stop( UnknownError ); @@ -749,7 +759,9 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) } if ( newState == Phonon::PlayingState ) { - emit started( m_currentTrack ); + if ( state() != Paused && state() != Playing ) + emit started( m_currentTrack ); + setState( Playing ); } @@ -982,17 +994,12 @@ AudioEngine::checkStateQueue() { case Playing: { - bool paused = isPaused(); m_mediaObject->play(); - if ( paused ) - setVolume( m_volume ); - break; } case Paused: { - m_volume = volume(); m_mediaObject->pause(); break; } diff --git a/src/libtomahawk/audio/AudioEngine.h b/src/libtomahawk/audio/AudioEngine.h index c169fcff3a..2727608dc0 100644 --- a/src/libtomahawk/audio/AudioEngine.h +++ b/src/libtomahawk/audio/AudioEngine.h @@ -42,7 +42,7 @@ Q_OBJECT public: enum AudioErrorCode { StreamReadError, AudioDeviceError, DecodeError, UnknownError, NoError }; - enum AudioState { Stopped, Playing, Paused, Error }; + enum AudioState { Stopped, Playing, Paused, Error, Loading }; static AudioEngine* instance(); @@ -171,7 +171,6 @@ private slots: bool m_waitingOnNewTrack; mutable QStringList m_supportedMimeTypes; - unsigned int m_volume; AudioState m_state; QQueue< AudioState > m_stateQueue; From 60bd4da78f4cd2ac27536899e5f58e12e8285d22 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 4 Jan 2013 14:45:29 +0100 Subject: [PATCH 100/310] * Oops, removed debug helper :-). --- src/AudioControls.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index 6ab220db9e..52752d87fb 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -212,7 +212,6 @@ AudioControls::onControlStateChanged() void AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result ) { - tDebug() << "FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"; if ( result.isNull() ) return; From 4ec6c1fd828b0069d9882adee39baaacb4bf90a1 Mon Sep 17 00:00:00 2001 From: Kilian Lackhove Date: Fri, 4 Jan 2013 15:12:55 +0100 Subject: [PATCH 101/310] resize resolver icons before storing them --- src/libtomahawk/resolvers/QtScriptResolver.cpp | 12 ++++++++++-- src/libtomahawk/resolvers/ScriptResolver.cpp | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index b722c1eb51..95b14c070a 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -333,14 +333,22 @@ QtScriptResolver::init() icoData = qUncompress( QByteArray::fromBase64( icoData ) ); else icoData = QByteArray::fromBase64( icoData ); - bool success = m_icon.loadFromData( icoData ); + QPixmap ico; + ico.loadFromData( icoData ); + + bool success = false; + if ( !ico.isNull() ) + { + m_icon = ico.scaled( m_icon.size(), Qt::IgnoreAspectRatio ); + success = true; + } // load config widget and apply settings loadUi(); QVariantMap config = resolverUserConfig(); fillDataInWidgets( config ); - qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon found" << success; + qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon received" << success; m_ready = true; } diff --git a/src/libtomahawk/resolvers/ScriptResolver.cpp b/src/libtomahawk/resolvers/ScriptResolver.cpp index e977bce4a7..95fac1c3b9 100644 --- a/src/libtomahawk/resolvers/ScriptResolver.cpp +++ b/src/libtomahawk/resolvers/ScriptResolver.cpp @@ -383,9 +383,17 @@ ScriptResolver::doSetup( const QVariantMap& m ) icoData = qUncompress( QByteArray::fromBase64( icoData ) ); else icoData = QByteArray::fromBase64( icoData ); - bool success = m_icon.loadFromData( icoData ); + QPixmap ico; + ico.loadFromData( icoData ); - qDebug() << "SCRIPT" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon found" << success; + bool success = false; + if ( !ico.isNull() ) + { + m_icon = ico.scaled( m_icon.size(), Qt::IgnoreAspectRatio ); + success = true; + } + + qDebug() << "SCRIPT" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon received" << success; m_ready = true; m_configSent = false; From 9a4cdf1865ef1c97dab90816ee0f4006a49f0adb Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Fri, 4 Jan 2013 11:07:15 -0500 Subject: [PATCH 102/310] Fix green-dot and search icons --- data/images/green-dot.svg | 107 ++++++------------------------------ data/images/search-icon.svg | 8 ++- 2 files changed, 22 insertions(+), 93 deletions(-) diff --git a/data/images/green-dot.svg b/data/images/green-dot.svg index f8c4686e2d..7480c6ba85 100644 --- a/data/images/green-dot.svg +++ b/data/images/green-dot.svg @@ -1,93 +1,18 @@ - - - - - image/svg+xml - - - - - - green-dot - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - - - - + + green-dot + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + + - - + \ No newline at end of file diff --git a/data/images/search-icon.svg b/data/images/search-icon.svg index 7c0cd6d88c..ee32886bfe 100644 --- a/data/images/search-icon.svg +++ b/data/images/search-icon.svg @@ -1,9 +1,13 @@ - + search-icon Created with Sketch (http://www.bohemiancoding.com/sketch) - + + + + + \ No newline at end of file From f64c6428cfa40f76b7f7405b24e5a3adb25bfac3 Mon Sep 17 00:00:00 2001 From: Kilian Lackhove Date: Fri, 4 Jan 2013 18:01:22 +0100 Subject: [PATCH 103/310] Support the legacy api that sends the path to the resolver icon file --- src/libtomahawk/resolvers/QtScriptResolver.cpp | 7 +++++++ src/libtomahawk/resolvers/ScriptResolver.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index 95b14c070a..c0c631e711 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -342,6 +342,13 @@ QtScriptResolver::init() m_icon = ico.scaled( m_icon.size(), Qt::IgnoreAspectRatio ); success = true; } + // see if the resolver sent an icon path to not break the old (unofficial) api. + // TODO: remove this and publish a definitive api + if ( !success ) + { + QString iconPath = QFileInfo( filePath() ).path() + "/" + m.value( "icon" ).toString(); + success = m_icon.load( iconPath ); + } // load config widget and apply settings loadUi(); diff --git a/src/libtomahawk/resolvers/ScriptResolver.cpp b/src/libtomahawk/resolvers/ScriptResolver.cpp index 95fac1c3b9..b254dde32f 100644 --- a/src/libtomahawk/resolvers/ScriptResolver.cpp +++ b/src/libtomahawk/resolvers/ScriptResolver.cpp @@ -392,6 +392,13 @@ ScriptResolver::doSetup( const QVariantMap& m ) m_icon = ico.scaled( m_icon.size(), Qt::IgnoreAspectRatio ); success = true; } + // see if the resolver sent an icon path to not break the old (unofficial) api. + // TODO: remove this and publish a definitive api + if ( !success ) + { + QString iconPath = QFileInfo( filePath() ).path() + "/" + m.value( "icon" ).toString(); + success = m_icon.load( iconPath ); + } qDebug() << "SCRIPT" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon received" << success; From df0563620d7c059d078da336e3f7c81ce91c223f Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sat, 5 Jan 2013 01:16:37 +0100 Subject: [PATCH 104/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 251 +++++++++------------------------ lang/tomahawk_bg.ts | 253 +++++++++------------------------ lang/tomahawk_bn_IN.ts | 251 +++++++++------------------------ lang/tomahawk_ca.ts | 251 +++++++++------------------------ lang/tomahawk_cs.ts | 251 +++++++++------------------------ lang/tomahawk_de.ts | 251 +++++++++------------------------ lang/tomahawk_el.ts | 251 +++++++++------------------------ lang/tomahawk_en.ts | 251 +++++++++------------------------ lang/tomahawk_es.ts | 251 +++++++++------------------------ lang/tomahawk_fi.ts | 251 +++++++++------------------------ lang/tomahawk_fr.ts | 251 +++++++++------------------------ lang/tomahawk_gl.ts | 251 +++++++++------------------------ lang/tomahawk_hi_IN.ts | 251 +++++++++------------------------ lang/tomahawk_hu.ts | 251 +++++++++------------------------ lang/tomahawk_it.ts | 251 +++++++++------------------------ lang/tomahawk_ja.ts | 252 +++++++++------------------------ lang/tomahawk_lt.ts | 251 +++++++++------------------------ lang/tomahawk_pl.ts | 251 +++++++++------------------------ lang/tomahawk_pt_BR.ts | 251 +++++++++------------------------ lang/tomahawk_ru.ts | 313 +++++++++++++---------------------------- lang/tomahawk_sv.ts | 251 +++++++++------------------------ lang/tomahawk_tr.ts | 251 +++++++++------------------------ lang/tomahawk_zh_CN.ts | 251 +++++++++------------------------ lang/tomahawk_zh_TW.ts | 251 +++++++++------------------------ 24 files changed, 1544 insertions(+), 4545 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index c63dc9b293..12aa39786e 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -117,13 +117,13 @@ connect and stream from you? - + &Listen Privately &إستمع بخصوصية - + &Listen Publicly &إستمع علنا @@ -223,32 +223,37 @@ connect and stream from you? معلومات &قانونية... - + + &View Logfile + + + + Check For Updates... تحقق من التحديثات... - + &Controls &ضوابط - + &Settings إ&عدادات - + &Help &مساعدة - + &Window &نافذة - + Main Menu القائمة الرئيسية @@ -331,37 +336,37 @@ connect and stream from you? AudioControls - + Shuffle خلط - + Repeat إعادة - + Time Elapsed الوقت المنقضي - + Time Remaining الوقت المتبقي - + Playing from %1 يتم الاستماع من %1 - + Share شارك - + Love أحب @@ -1077,31 +1082,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 @@ -3327,308 +3332,178 @@ enter the displayed PIN number here: توماهوك - - &Quit - &إنهاء - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - اصبح &متصل - - - - Add &Friend... - أضف &صديق... - - - - U&pdate Collection - &تحديث المجموعة - - - - Update Collection - تحديث المجموعة - - - - &Configure Tomahawk... - &تكوين توماهوك... - - - - Load &XSPF... - تحميل XSPF&... - - - - Create &New Playlist... - إنشاء &قائمة أغاني جديدة... - - - - About &Tomahawk... - عن &توماهوك... - - - - Create New &Automatic Playlist - إنشاء قائمة أغاني جديدة أ&وتوماتيكيا - - - - Create New &Station - إنشاء &قائمة أغاني جديدة - - - - Show Offline Sources - أظهر المصادر الغير متصلة - - - - Hide Offline Sources - إخفي المصادر الغير متصلة - - - - Minimize - خفض - - - - Ctrl+M - Ctrl+M - - - - Zoom - زوم - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - معلومات &قانونية... - - - - Diagnostics... - تشخيص... - - - - Fully &Rescan Collection - إعادة &مسح المجموعة كاملة - - - - Fully Rescan Collection - إعادة مسح المجموعة كاملة - - - - Play - إستمع - - - - Space - مساحة - - - - Previous - سابق - - - - Next - التالي - - - + Back إلى الوراء - + Go back one page العودة صفحة واحدة إلى الوراء - + Forward تقدم - + Go forward one page تقدم صفحة واحدة - - + + Hide Menu Bar إخفي شريط القائمة - - + + Show Menu Bar أظهر شريط القائمة - + Search for any artist, album or song... - + &Main Menu ال&قائمة الرئيسية - - - + + + Connect To Peer ربط بالند - + Enter peer address: أدخل عنوان الند: - + Enter peer port: أدخل بوابة الند: - + Enter peer key: أدخل مفتاح الند: - + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 حقوق الطبع والنشر ٢٠١٠ - ٢٠١٢ - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 5d91270125..6c0a2b2009 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Слушай самостоятелно - + &Listen Publicly &Слушай публично @@ -222,32 +222,37 @@ connect and stream from you? &Правна информация - + + &View Logfile + + + + Check For Updates... Провери за обновления - + &Controls &Контроли - + &Settings &Настройки - + &Help &Помощ - + &Window &Прозорец - + Main Menu Главно меню @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Разбъркано - + Repeat Повтори - + Time Elapsed Изминало време - + Time Remaining Оставащо време - + Playing from %1 Изпълнявам от %1 - + Share Сподели - + Love Харесай @@ -1082,31 +1087,31 @@ Tomahawk създаде доклад относно това и изпращай 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> @@ -3341,311 +3346,181 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Изход - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Свържи се - - - - Add &Friend... - Добави &приятел - - - - U&pdate Collection - О&бнови колекцията - - - - Update Collection - Обнови колекцията - - - - &Configure Tomahawk... - &Настройки на Tomahawk - - - - Load &XSPF... - Зареди &XSPF... - - - - Create &New Playlist... - Зареди &Нов списък - - - - About &Tomahawk... - За &Tomahawk - - - - Create New &Automatic Playlist - Създай нов &Автоматичен списък - - - - Create New &Station - Създай нова &Станция - - - - Show Offline Sources - Покажи източници извън линия - - - - Hide Offline Sources - Скрий източници извън линия - - - - Minimize - Смали - - - - Ctrl+M - Ctrl+M - - - - Zoom - Увеличи - - - - Meta+Ctrl+Z - Mod+Ctrl+Z - - - - &Legal Info... - &Правна инфоормация - - - - Diagnostics... - Диагностика... - - - - Fully &Rescan Collection - Пълно &сканиране на колекцията - - - - Fully Rescan Collection - Пълно сканиране на колекцията - - - - Play - Изпълни - - - - Space - Интервал - - - - Previous - Предишна - - - - Next - Следваща - - - + Back Назад - + Go back one page Една страница назад - + Forward Напред - + Go forward one page Една страница напред - - + + Hide Menu Bar Скрий лентата с менюто - - + + Show Menu Bar Покажи лентата с менюто - + Search for any artist, album or song... - Търси за всеки Артист, Албум или Песен... + Търси всеки Артист, Албум или Песен... - + &Main Menu &Основно меню - - - + + + Connect To Peer Свържи се с друг потребител - + Enter peer address: Въведи адресът на отдалеченият потребител: - + Enter peer port: Въведи порт: - + Enter peer key: Въведи ключът за удостоверяване: - + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Всички права - запазени. 2010 - 2012 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index ef3a9f9f7d..9d6c0e732a 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 763563dc14..0721d1d4d1 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Escolta privada - + &Listen Publicly &Escolta Pública @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Mescla - + Repeat Repeteix - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3325,308 +3330,178 @@ introduïu el PIN aquí: Tomahawk - - &Quit - &Surt - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Connecta't - - - - Add &Friend... - Afegeix un &Amic... - - - - U&pdate Collection - Act&ualitza la Col·lecció - - - - Update Collection - Actualitza la Col·lecció - - - - &Configure Tomahawk... - &Configura Tomahawk... - - - - Load &XSPF... - Carrega una llista &XSPF... - - - - Create &New Playlist... - Crea una &nova llista de reproducció... - - - - About &Tomahawk... - Quant a &Tomahawk... - - - - Create New &Automatic Playlist - Crea una Llista de Reproducció &Automàtica - - - - Create New &Station - Crea una Nova &Emissora - - - - Show Offline Sources - Mostra les fonts fora de línia - - - - Hide Offline Sources - Amaga les fonts fora de línia - - - - Minimize - Minimitza - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Informació &legal - - - - Diagnostics... - Diagnòstics... - - - - Fully &Rescan Collection - &Reescaneja la Col·lecció completament - - - - Fully Rescan Collection - Reescaneja la Col·lecció completament - - - - Play - Reprodueix - - - - Space - Espai - - - - Previous - Anterior - - - - Next - Següent - - - + Back Enrere - + Go back one page Retrocedeix una pàgina - + Forward Endavant - + Go forward one page Avança una pàgina - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Connexió Remota - + Enter peer address: Introduïu l'adreça remota: - + Enter peer port: Introduïu el port remot: - + Enter peer key: Introduïu la clau remota: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index ca69d18b7e..076e7ec024 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index d7e0bb655f..7dac2bb004 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -117,13 +117,13 @@ erlauben sich mit dir zu verbinden? - + &Listen Privately &Privat Modus aktivieren - + &Listen Publicly &Privat Modus verlassen @@ -223,32 +223,37 @@ erlauben sich mit dir zu verbinden? &Rechtliche Informationen... - + + &View Logfile + &Log anzeigen + + + Check For Updates... Nach Updates suchen... - + &Controls S&teuerung - + &Settings &Einstellungen - + &Help &Hilfe - + &Window &Fenster - + Main Menu Hauptmenü @@ -331,37 +336,37 @@ erlauben sich mit dir zu verbinden? AudioControls - + Shuffle Zufall - + Repeat Wiederholen - + Time Elapsed Abgelaufene Zeit - + Time Remaining Verbleibende Zeit - + Playing from %1 Wiedergabe von %1 - + Share Teilen - + Love Lieben @@ -1077,31 +1082,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> @@ -3324,308 +3329,178 @@ Tomahawk auf Twitter's Website authentifiziert hast: Tomahawk - - &Quit - &Verlassen - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Verbinden - - - - Add &Friend... - Freund &hinzufügen… - - - - U&pdate Collection - Sammlung &aktualisieren - - - - Update Collection - Sammlung aktualisieren - - - - &Configure Tomahawk... - Tomahawk &einrichten… - - - - Load &XSPF... - &XSPF laden… - - - - Create &New Playlist... - Neue &Playlist erstellen… - - - - About &Tomahawk... - Über &Tomahawk… - - - - Create New &Automatic Playlist - Neue &automatische Playlist erstellen - - - - Create New &Station - Neue &Station erstellen - - - - Show Offline Sources - Nicht-Verfügbare Quellen anzeigen - - - - Hide Offline Sources - Nicht-Verfügbare Quellen ausblenden - - - - Minimize - Minimieren - - - - Ctrl+M - Strg+M - - - - Zoom - Vergrößern - - - - Meta+Ctrl+Z - Strg+Meta+Z - - - - &Legal Info... - Rechtliche Informationen... - - - - Diagnostics... - Diagnose Tool... - - - - Fully &Rescan Collection - Sammlung neu du&rchsuchen - - - - Fully Rescan Collection - Sammlung neu durchsuchen - - - - Play - Abspielen - - - - Space - Leertaste - - - - Previous - Zurück - - - - Next - Weiter - - - + Back Zurück - + Go back one page Gehe eine Seite zurück - + Forward Vorwärts - + Go forward one page Gehe eine Seite vorwärts - - + + Hide Menu Bar Menüleiste ausblenden - - + + Show Menu Bar Menüleiste einblenden - + Search for any artist, album or song... Suche nach Künstler, Album oder Lied... - + &Main Menu Haupt&menü - - - + + + Connect To Peer Mit anderem Tomahawk verbinden - + Enter peer address: Gib die Adresse der Gegenstelle ein: - + Enter peer port: Gib den Port der Gegenstelle ein: - + Enter peer key: Gib den Schlüssel der Gegenstelle ein: - + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copright 2010 - 2012 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index b690fcd648..88109d01e0 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Ιδιωτική Ακρόαση - + &Listen Publicly &Δημόσια Ακρόαση @@ -222,32 +222,37 @@ connect and stream from you? &Νομικές Πληροφορίες - + + &View Logfile + + + + Check For Updates... Έλεγχος Για Ενημερώσεις - + &Controls &Χειριστήρια - + &Settings &Ρυθμίσεις - + &Help &Βοήθεια - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Τυχαία σειρά - + Repeat Επανάληψη - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3324,308 +3329,178 @@ enter the displayed PIN number here: - - &Quit - &Έξοδος - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Συνδεθείτε - - - - Add &Friend... - Προσθήκη &Φίλου... - - - - U&pdate Collection - Ε&νημέρωση Συλλογής - - - - Update Collection - Ενημέρωση Συλλογής - - - - &Configure Tomahawk... - &Ρύθμιση Tomahawk... - - - - Load &XSPF... - Φόρτωση &XSPF... - - - - Create &New Playlist... - Δημιουργία &Νέας Λίστας Αναπαραγωγής - - - - About &Tomahawk... - Σχετικά με το &Tomahawk - - - - Create New &Automatic Playlist - Δημιουργία Νέας &Αυτόματης Λίστας Αναπαραγής - - - - Create New &Station - Δημιουργία Νέου &Σταθμού - - - - Show Offline Sources - Προβολή Πηγών Εκτός Σύνδεσης - - - - Hide Offline Sources - Απόκρυψη Πηγών Εκτός Σύνδεσης - - - - Minimize - Ελαχιστοποίηση - - - - Ctrl+M - Ctrl+M - - - - Zoom - Μεγέθυνση - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - - - - - Diagnostics... - Διαγνωστικά... - - - - Fully &Rescan Collection - Πλήρης &Επανασάρωση Συλλογής - - - - Fully Rescan Collection - Πλήρης Επανασάρωση Συλλογής - - - - Play - Αναπαραγωγή - - - - Space - Κενό - - - - Previous - Προηγούμενο - - - - Next - Επόμενο - - - + Back Πίσω - + Go back one page Πήγαινε πίσω μία σελίδα - + Forward Μπροστά - + Go forward one page Πήγαινε μπροστά μία σελίδα - - + + Hide Menu Bar Απόκρυψη Γραμμής Μενού - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Σύνδεση Σε Ομότιμο Κόμβο - + Enter peer address: Εισαγωγή διεύθυνσης ομότιμου κόμβου: - + Enter peer port: Εισαγωγή θύρας ομότιμου κόμβου: - + Enter peer key: Εισαγωγή κλειδιού ομότιμου κόμβου: - + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 19301ea9f7..dc443bbda5 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -117,13 +117,13 @@ connect and stream from you? - + &Listen Privately &Listen Privately - + &Listen Publicly &Listen Publicly @@ -223,32 +223,37 @@ connect and stream from you? &Legal Information... - + + &View Logfile + &View Logfile + + + Check For Updates... Check For Updates... - + &Controls &Controls - + &Settings &Settings - + &Help &Help - + &Window &Window - + Main Menu Main Menu @@ -331,37 +336,37 @@ connect and stream from you? AudioControls - + Shuffle Shuffle - + Repeat Repeat - + Time Elapsed Time Elapsed - + Time Remaining Time Remaining - + Playing from %1 Playing from %1 - + Share Share - + Love Love @@ -1077,31 +1082,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> @@ -3329,308 +3334,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Quit - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Go &Online - - - - Add &Friend... - Add &Friend... - - - - U&pdate Collection - U&pdate Collection - - - - Update Collection - Update Collection - - - - &Configure Tomahawk... - &Configure Tomahawk... - - - - Load &XSPF... - Load &XSPF... - - - - Create &New Playlist... - Create &New Playlist... - - - - About &Tomahawk... - About &Tomahawk... - - - - Create New &Automatic Playlist - Create New &Automatic Playlist - - - - Create New &Station - Create New &Station - - - - Show Offline Sources - Show Offline Sources - - - - Hide Offline Sources - Hide Offline Sources - - - - Minimize - Minimize - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Legal Info... - - - - Diagnostics... - Diagnostics... - - - - Fully &Rescan Collection - Fully &Rescan Collection - - - - Fully Rescan Collection - Fully Rescan Collection - - - - Play - Play - - - - Space - Space - - - - Previous - Previous - - - - Next - Next - - - + Back Back - + Go back one page Go back one page - + Forward Forward - + Go forward one page Go forward one page - - + + Hide Menu Bar Hide Menu Bar - - + + Show Menu Bar Show Menu Bar - + Search for any artist, album or song... Search for any artist, album or song... - + &Main Menu &Main Menu - - - + + + Connect To Peer Connect To Peer - + Enter peer address: Enter peer address: - + Enter peer port: Enter peer port: - + Enter peer key: Enter peer key: - + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 40eb9e4ae8..706fa3e3a6 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -117,13 +117,13 @@ conectarse a usted y transmitir música? - + &Listen Privately &Modo privado - + &Listen Publicly &Escuchar públicamente @@ -223,32 +223,37 @@ conectarse a usted y transmitir música? Información &legal - + + &View Logfile + + + + Check For Updates... Buscar actualizaciones... - + &Controls &Controles - + &Settings &Configuración - + &Help &Ayuda - + &Window &Ventana - + Main Menu Menú principal @@ -331,37 +336,37 @@ conectarse a usted y transmitir música? AudioControls - + Shuffle Aleatorio - + Repeat Repetir - + Time Elapsed Tiempo transcurrido - + Time Remaining Tiempo restante - + Playing from %1 Reproduciendo de %1 - + Share Compartir - + Love Favorito @@ -1077,31 +1082,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 @@ -3329,308 +3334,178 @@ introduzca su número PIN aquí: Tomahawk - - &Quit - &Salir - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Conectarse - - - - Add &Friend... - Añadir &amigo... - - - - U&pdate Collection - A&ctualizar colección - - - - Update Collection - Actualizar colección - - - - &Configure Tomahawk... - &Configurar Tomahawk... - - - - Load &XSPF... - Cargar &XSPF... - - - - Create &New Playlist... - Crear una &nueva lista de reproducción... - - - - About &Tomahawk... - Acerca de &Tomahawk... - - - - Create New &Automatic Playlist - Crear nueva &lista de reproducción automática - - - - Create New &Station - Crear nueva &estación - - - - Show Offline Sources - Mostrar fuentes fuera de línea - - - - Hide Offline Sources - Ocultar fuentes fuera de línea - - - - Minimize - Minimizar - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Información &legal... - - - - Diagnostics... - Diagnósticos... - - - - Fully &Rescan Collection - &Re-escanear completamente la colección - - - - Fully Rescan Collection - Re-escanear completamente la colección - - - - Play - Reproducir - - - - Space - Espacio - - - - Previous - Anterior - - - - Next - Siguiente - - - + Back Atrás - + Go back one page Ir atrás una página - + Forward Adelante - + Go forward one page Ir adelante una página - - + + Hide Menu Bar Esconder barra de menú - - + + Show Menu Bar Mostrar barra de menú - + Search for any artist, album or song... Buscar un artista, álbum o pista... - + &Main Menu &Menú principal - - - + + + Connect To Peer Conectar a un par - + Enter peer address: Introducir dirección del par: - + Enter peer port: Introducir puerto del par: - + Enter peer key: Introducir contraseña del par: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Nueva estación - + Create New Station Crear nueva estación - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010-2012 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index b963927a54..79767f313c 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -117,13 +117,13 @@ yhdistää ja toistaa sinulta virtaa? - + &Listen Privately &Kuuntele yksityisesti - + &Listen Publicly &Kuuntele julkisesti @@ -223,32 +223,37 @@ yhdistää ja toistaa sinulta virtaa? Lakitiet&oa... - + + &View Logfile + + + + Check For Updates... Tarkista päivitykset... - + &Controls &Ohjaus - + &Settings &Asetukset - + &Help O&hje - + &Window &Ikkuna - + Main Menu Päävalikko @@ -331,37 +336,37 @@ yhdistää ja toistaa sinulta virtaa? AudioControls - + Shuffle Sekoita - + Repeat Toista - + Time Elapsed Kulunut aika - + Time Remaining Jäljellä oleva aika - + Playing from %1 Soitetaan lähteestä %1 - + Share Jaa - + Love Tykkää @@ -1077,31 +1082,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> @@ -3332,308 +3337,178 @@ anna siellä näytetty PIN-koodi tähän: Tomahawk - - &Quit - &Lopeta - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Mene &verkkoon - - - - Add &Friend... - Lisää &kaveri... - - - - U&pdate Collection - P&äivitä kokoelma - - - - Update Collection - Päivitä kokoelma - - - - &Configure Tomahawk... - Tomahawkin &asetukset... - - - - Load &XSPF... - Lataa &XSPF... - - - - Create &New Playlist... - Luo &uusi soittolista... - - - - About &Tomahawk... - &Tietoa Tomahawkista... - - - - Create New &Automatic Playlist - Luo uusi &automaattinen soittolista - - - - Create New &Station - Luo uusi a&sema - - - - Show Offline Sources - Näytä verkottomat lähteet - - - - Hide Offline Sources - Piilota verkottomat lähteet - - - - Minimize - Pienennä - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoomaa - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Lakitiet&oa... - - - - Diagnostics... - Diagnostiikka... - - - - Fully &Rescan Collection - &Muodosta kokoelma alusta alkaen - - - - Fully Rescan Collection - Muodosta kokoelma alusta alkaen - - - - Play - Soita - - - - Space - Space - - - - Previous - Edellinen - - - - Next - Seuraava - - - + Back Takaisin - + Go back one page Mene yksi sivu takaisin - + Forward Eteenpäin - + Go forward one page Mene yksi sivu eteenpäin - - + + Hide Menu Bar Piilota valikkorivi - - + + Show Menu Bar Näytä valikkorivi - + Search for any artist, album or song... Etsi mitä tahansa artistia, albumia tai kappaletta... - + &Main Menu &Päävalikko - - - + + + Connect To Peer Yhdistä vertaiseen - + Enter peer address: Anna vertaisen osoite: - + Enter peer port: Anna vertaisen portti: - + Enter peer key: Anna vertaisen avain: - + XSPF Error XSPF-virhe - + This is not a valid XSPF playlist. Tämä ei ole kelvollinen XSPF-soittolista. - + Failed to save tracks Kappaleiden tallentaminen epäonnistui - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010–2012 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index bc95756382..e97303bc3d 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -117,13 +117,13 @@ de se connecter et streamer de vous? - + &Listen Privately &Ecouter en privé - + &Listen Publicly &Ecouter publiquement @@ -223,32 +223,37 @@ de se connecter et streamer de vous? &Informations Légales... - + + &View Logfile + + + + Check For Updates... Rechercher une mis à jour... - + &Controls &Contrôles - + &Settings &Paramètres - + &Help &Aide - + &Window &Fenêtre - + Main Menu Menu Principal @@ -331,37 +336,37 @@ de se connecter et streamer de vous? AudioControls - + Shuffle Lecture Aléatoire - + Repeat Répéter - + Time Elapsed Durée Ecoulé - + Time Remaining Durée Restante - + Playing from %1 - + Share Partager - + Love Favori @@ -1077,31 +1082,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 @@ -3326,308 +3331,178 @@ saisissez le numéro PIN ici : Tomahawk - - &Quit - &Quitter - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Se c&onnecter - - - - Add &Friend... - Ajouter un &ami... - - - - U&pdate Collection - Mettre à Jo&ur la Collection - - - - Update Collection - Mettre à Jour la Collection - - - - &Configure Tomahawk... - &Configurer Tomahawk... - - - - Load &XSPF... - Charger &XSPF... - - - - Create &New Playlist... - Créer une &nouvelle liste de lecture... - - - - About &Tomahawk... - A propos de &Tomahawk... - - - - Create New &Automatic Playlist - Créer une nouvelle liste de lecture &automatique - - - - Create New &Station - Créer une nouvelle &Station - - - - Show Offline Sources - Afficher les sources hors ligne - - - - Hide Offline Sources - Masquer les sources hors ligne - - - - Minimize - Réduire - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Informations Légales... - - - - Diagnostics... - Diagnostics... - - - - Fully &Rescan Collection - &Rescanner la collection entièrement - - - - Fully Rescan Collection - Rescanner la collection entièrement - - - - Play - Lecture - - - - Space - Espace - - - - Previous - Précédent - - - - Next - Suivant - - - + Back Retour - + Go back one page Reculer d'une page - + Forward Avancer - + Go forward one page Avancer d'une page - - + + Hide Menu Bar Masquer la barre de menu - - + + Show Menu Bar Afficher la barre de menu - + Search for any artist, album or song... Chercher un artiste, un album, ou un morceau - + &Main Menu &Menu Principal - - - + + + Connect To Peer Connexion à un pair - + Enter peer address: Adresse du pair : - + Enter peer port: Port du pair : - + Enter peer key: Clé du pair : - + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Droit d'auteur 2010 - 2012 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index d37c1bf8c0..20d3add403 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Escoitar en privado - + &Listen Publicly &Escoutar en público @@ -222,32 +222,37 @@ connect and stream from you? &Información legal... - + + &View Logfile + + + + Check For Updates... Buscar actualizacións... - + &Controls &Controis - + &Settings &Configuración - + &Help &Axuda - + &Window &Xanela - + Main Menu Menú principal @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Ao chou - + Repeat Repetir - + Time Elapsed Tempo transcorrido - + Time Remaining Tempo que falta - + Playing from %1 Reproducindo de %1 - + Share Compartir - + Love gusta @@ -1076,31 +1081,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 @@ -3326,309 +3331,179 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Saír - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Pórse en &liña - - - - Add &Friend... - Engadir a un &amigo... - - - - U&pdate Collection - &Actualizar a colección - - - - Update Collection - Actualizar a colección - - - - &Configure Tomahawk... - &Configurar Tomahawk... - - - - Load &XSPF... - Cargar &XSPF... - - - - Create &New Playlist... - Crear unha &lista de temas nova... - - - - About &Tomahawk... - Acerca de &Tomahawk... - - - - Create New &Automatic Playlist - Crear unha nova lista de reproducción &automática - - - - Create New &Station - Crear unha nova &emisora - - - - Show Offline Sources - Mostrar as fontes fóra de liña - - - - Hide Offline Sources - Agochar as fontes fóra de liña - - - - Minimize - Minimizar - - - - Ctrl+M - Ctrl+M - - - - Zoom - Ampliación - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Información &legal... - - - - Diagnostics... - Diagnóstico... - - - - Fully &Rescan Collection - Rescanear a colección ao &completo - - - - Fully Rescan Collection - Rescanear a colección ao completo - - - - Play - Reproducir - - - - Space - Espazo - - - - Previous - Anterior - - - - Next - Seguinte - - - + Back Atrás - + Go back one page Ir unha páxina atrás - + Forward Adiante - + Go forward one page Ir unha páxian adiante - - + + Hide Menu Bar Agochar a barra de menú - - + + Show Menu Bar Mostrar a barra de menú - + Search for any artist, album or song... - + &Main Menu Menú &principal - - - + + + Connect To Peer Conectar cun parceiro - + Enter peer address: Introducir a dirección do parceiro: - + Enter peer port: Introducir o porto do parceiro: - + Enter peer key: Introducir a clave do parceiro: - + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autentificación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index ed9aada7c3..e06b43fbb4 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 7d5f8199e5..b661f3bcb6 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? Jogi információk - + + &View Logfile + + + + Check For Updates... Frissítések ellenőrzése - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat Ismétlés - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - Kiléps - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - - - - - Add &Friend... - Barát hozzáadása - - - - U&pdate Collection - Kollekció frissítése - - - - Update Collection - Kollekció frissítése - - - - &Configure Tomahawk... - Tomahawk beállítása - - - - Load &XSPF... - &XSPF betöltése... - - - - Create &New Playlist... - Új lejátszólista létrehozása - - - - About &Tomahawk... - &Tomahawkról - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - Nem elérhető források mutatása - - - - Hide Offline Sources - Nem elérhető források elrejtése - - - - Minimize - Minimalizálás - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - - - - - Diagnostics... - Diagnosztizálás... - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - Lejátszás - - - - Space - Szóköz - - - - Previous - Előző - - - - Next - Következő - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk Tomahawkról diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 2c318a487e..ba7facd299 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Ascolta in privato - + &Listen Publicly &Ascolta pubblicamente @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Riproduzione casuale - + Repeat Ripeti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Spegni - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Connettiti &online - - - - Add &Friend... - Aggiungi un &amico... - - - - U&pdate Collection - Aggiorna collezione - - - - Update Collection - Aggiorna collezione - - - - &Configure Tomahawk... - &Configura Tomahawk... - - - - Load &XSPF... - Carica &XSPF... - - - - Create &New Playlist... - Crea una &nuova playlist... - - - - About &Tomahawk... - Info su &Tomahawk - - - - Create New &Automatic Playlist - Crea una nuova playlist &automatica - - - - Create New &Station - Crea una nuova &stazione - - - - Show Offline Sources - Mostra risorse non connesse - - - - Hide Offline Sources - Nascondi risorse non connesse - - - - Minimize - Minimizza - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zomma - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Informazioni &legali... - - - - Diagnostics... - Diagnostica... - - - - Fully &Rescan Collection - Nuova &scansione della collezione - - - - Fully Rescan Collection - Nuova scansione della collezione - - - - Play - Play - - - - Space - Spazio - - - - Previous - Precedente - - - - Next - Prossima - - - + Back Indietro - + Go back one page Vai indietro di una pagina - + Forward Avanti - + Go forward one page Vai avanti di una pagina - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Connettiti al peer - + Enter peer address: Inserisci indirizzo peer: - + Enter peer port: Inserisci porta peer: - + Enter peer key: Inserisce chiave peer: - + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index f7bb65c9eb..83f37e51a6 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately 非公開で聴く - + &Listen Publicly 公開で聴く @@ -222,32 +222,37 @@ connect and stream from you? 法定情報... - + + &View Logfile + + + + Check For Updates... 更新を確認... - + &Controls 制御 - + &Settings 設定 - + &Help ヘルプ - + &Window ウインドウ - + Main Menu メインメニュー @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle シャッフル - + Repeat リピート - + Time Elapsed 再生時間 - + Time Remaining 残り時間 - + Playing from %1 %1から再生中 - + Share シェアー - + Love Love @@ -1077,31 +1082,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> @@ -3329,309 +3334,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - 終了 - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - オンライン化する - - - - Add &Friend... - 友達を追加... - - - - U&pdate Collection - コレクションを更新 - - - - Update Collection - コレクションを更新 - - - - &Configure Tomahawk... - Tomahawkを設定... - - - - Load &XSPF... - XSPFを読み込み... - - - - Create &New Playlist... - 新規プレイリストを作成... - - - - About &Tomahawk... - Tomahawk について... - - - - Create New &Automatic Playlist - 新規自動でプレイリストを作成する - - - - Create New &Station - 新規ステーションを作成 - - - - Show Offline Sources - オフラインのソースを表示 - - - - Hide Offline Sources - オフラインのソースを隠す - - - - Minimize - 最小化 - - - - Ctrl+M - Ctrl+M - - - - Zoom - ズーム - - - - Meta+Ctrl+Z - -Meta+Ctrl+Z - - - - &Legal Info... - 法定情報... - - - - Diagnostics... - 診断... - - - - Fully &Rescan Collection - すべてのコレクションを再スキャンする - - - - Fully Rescan Collection - すべてのコレクションを再スキャンする - - - - Play - 再生 - - - - Space - スペース - - - - Previous - 前へ - - - - Next - 次へ - - - + Back プレイリスト - + Go back one page 前のページ - + Forward 次へ - + Go forward one page 次のページ - - + + Hide Menu Bar メニューバーを隠す - - + + Show Menu Bar メニューバーを表示 - + Search for any artist, album or song... アーティスト、又はアルバムや曲で検索して下さい - + &Main Menu メインメニュー - - - + + + Connect To Peer ピアに接続する - + Enter peer address: ピアのアドレスを入力: - + Enter peer port: ピアのポートを入力: - + Enter peer key: ピアのキーを入力: - + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index cd4eb895c4..a0c3fae3d3 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately K&lausytis privačiai - + &Listen Publicly K&lausytis viešai @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Maišyti - + Repeat Kartoti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Baigti darbą - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Prisi&jungti - - - - Add &Friend... - Pridėti &draugą... - - - - U&pdate Collection - At&naujinti kolekciją - - - - Update Collection - Atnaujinti kolekciją - - - - &Configure Tomahawk... - &Konfigūruoti Tomahawk... - - - - Load &XSPF... - Įkelti &XSPF... - - - - Create &New Playlist... - Sukurti naują &grojaraštį - - - - About &Tomahawk... - Apie &Tomahawk... - - - - Create New &Automatic Playlist - Sukurti naują &automatinį grojaraštį - - - - Create New &Station - Sukurti naują &stotį - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - Sumažinti - - - - Ctrl+M - Ctrl+M - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - &Teisinė informacija... - - - - Diagnostics... - Diagnostika... - - - - Fully &Rescan Collection - Pilnai pe&ržvelgti kolekciją - - - - Fully Rescan Collection - Pilnai peržvelgti kolekciją - - - - Play - Groti - - - - Space - Tarpas - - - - Previous - Ankstesnis - - - - Next - Kitas - - - + Back Atgal - + Go back one page Grįžti vienu puslapiu atgal - + Forward Pirmyn - + Go forward one page Eiti vienu puslapiu pirmyn - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Autorinės teisės 2010 - 2012 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index c7a0ad6eae..a2d5d04a88 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -117,13 +117,13 @@ połączyć się i strumieniować od ciebie? - + &Listen Privately &Słuchaj Prywatnie - + &Listen Publicly &Słuchaj Publicznie @@ -223,32 +223,37 @@ połączyć się i strumieniować od ciebie? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -331,37 +336,37 @@ połączyć się i strumieniować od ciebie? AudioControls - + Shuffle Losowo - + Repeat Powtarzaj - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love Lubię @@ -1077,31 +1082,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 @@ -3326,308 +3331,178 @@ wprowadź pokazany numer PIN tutaj: Tomahawk - - &Quit - &Zakończ - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Przejdź do trybu &Online - - - - Add &Friend... - Dodaj &Znajomego... - - - - U&pdate Collection - U&aktualnij Kolekcję - - - - Update Collection - Uaktualnij Kolekcję - - - - &Configure Tomahawk... - &Konfiguruj Tomahawk... - - - - Load &XSPF... - Załaduj &XSPF... - - - - Create &New Playlist... - Utwórz &Nową Listę... - - - - About &Tomahawk... - O &Tomahawk... - - - - Create New &Automatic Playlist - Utwórz Nową &Automatyczną Listę - - - - Create New &Station - Utwórz Nową &Stację - - - - Show Offline Sources - Pokaż Źródła Offline - - - - Hide Offline Sources - Ukryj Źródła Offline - - - - Minimize - Minimalizuj - - - - Ctrl+M - Ctrl+M - - - - Zoom - Powiększenie - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Informacje prawne (&L) - - - - Diagnostics... - Diagnostyka... - - - - Fully &Rescan Collection - Kompletnie &Przeskanuj Kolekcję - - - - Fully Rescan Collection - Kompletnie Przeskanuj Kolekcję - - - - Play - Odtwarzaj - - - - Space - Spacja - - - - Previous - Poprzedni - - - - Next - Następny - - - + Back Wstecz - + Go back one page Cofnij o jedną stronę - + Forward Naprzód - + Go forward one page Przejdź naprzód o jedną stronę - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 6dd7488c0b..30d2dadade 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -117,13 +117,13 @@ se conecte e faça o stream de você? - + &Listen Privately &Ouvir Privadamente - + &Listen Publicly &Ouvir Publicamente @@ -223,32 +223,37 @@ se conecte e faça o stream de você? Informação &legal... - + + &View Logfile + + + + Check For Updates... Verificar atualizações... - + &Controls &Controles - + &Settings C&onfigurações - + &Help &Ajuda - + &Window &Janela - + Main Menu Menu principal @@ -331,37 +336,37 @@ se conecte e faça o stream de você? AudioControls - + Shuffle Shuffle - + Repeat Repetir - + Time Elapsed Tempo decorrido - + Time Remaining Tempo restante - + Playing from %1 Reproduzindo de %1 - + Share Compartilhar - + Love Gostar @@ -1077,31 +1082,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> @@ -3326,308 +3331,178 @@ colocar o número PIN mostrado aqui: Tomahawk - - &Quit - &Sair - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Co&nectar - - - - Add &Friend... - Adicionar A&migo... - - - - U&pdate Collection - A&tualizar biblioteca - - - - Update Collection - Atualizar biblioteca - - - - &Configure Tomahawk... - Configurar To&mahawk... - - - - Load &XSPF... - Abrir &XSPF... - - - - Create &New Playlist... - Criar nova &lista de reprodução... - - - - About &Tomahawk... - Sobre Tomaha&wk... - - - - Create New &Automatic Playlist - Criar no&va lista Automática - - - - Create New &Station - Criar n&ova estação - - - - Show Offline Sources - Mostrar origens desconectadas - - - - Hide Offline Sources - Ocultar origens desconectadas - - - - Minimize - Minimizar - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Informação Legal - - - - Diagnostics... - Diagnósticos... - - - - Fully &Rescan Collection - Escanear &toda a biblioteca - - - - Fully Rescan Collection - Escanear toda biblioteca novamente - - - - Play - Reporduzir - - - - Space - Espaço - - - - Previous - Anterior - - - - Next - Próximo - - - + Back Voltar - + Go back one page Voltar uma página - + Forward Avançar - + Go forward one page Avançar uma página - - + + Hide Menu Bar Esconder barra de menu - - + + Show Menu Bar Mostrar barra de menu - + Search for any artist, album or song... Pesquisar por qualquer artista, álbum ou música... - + &Main Menu &Menu principal - - - + + + Connect To Peer Conectar-se ao par - + Enter peer address: Coloque o endereço do par: - + Enter peer port: Coloque a porta do par: - + Enter peer key: Coloque a chave do par: - + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index a412db0650..2a72f6082e 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -74,12 +74,12 @@ connect and stream from you? Connect &All - Соединиться со Всеми + Включить Все Disconnect &All - Отключиться от Всех + Выключить Всё @@ -118,13 +118,13 @@ connect and stream from you? - + &Listen Privately &Слушать Cамому - + &Listen Publicly &Слушать со всеми @@ -209,7 +209,7 @@ connect and stream from you? Hide Menu Bar - + Спрятать строку меню приложения @@ -227,32 +227,37 @@ connect and stream from you? &Юридическая информация - + + &View Logfile + &Показать Логи + + + Check For Updates... Проверить обновление... - + &Controls &Управление - + &Settings &Настройки - + &Help &Помощь - + &Window &Окно - + Main Menu Главное меню @@ -335,37 +340,37 @@ connect and stream from you? AudioControls - + Shuffle Случаная - + Repeat Повторять - + Time Elapsed Прошедшее время - + Time Remaining Оставшееся время - + Playing from %1 Воспроизводит из %1 - + Share Поделиться - + Love Любимый @@ -375,17 +380,17 @@ connect and stream from you? Sorry, Tomahawk couldn't find the track '%1' by %2 - К сожалению, Tomahawk не мог найти песню '%1' %2 + К сожалению, Tomahawk не смог найти песню '%1' %2 Sorry, Tomahawk couldn't find the artist '%1' - К сожалению, Tomahawk не мог найти исполнителя '%1' + К сожалению, Tomahawk не смог найти исполнителя '%1' Sorry, Tomahawk couldn't find the album '%1' by %2 - К сожалению, Tomahawk не мог найти альбом '%1' %2 + К сожалению, Tomahawk не смог найти альбом '%1' %2 @@ -551,7 +556,7 @@ connect and stream from you? Steer this station: - + Управлять этой станцией: @@ -571,7 +576,7 @@ connect and stream from you? Keep at current - + Оставить на текущей @@ -1041,7 +1046,7 @@ connect and stream from you? Vague match - + Расплывчатое совпадение @@ -1081,34 +1086,34 @@ 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 Воспроизводилась %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> @@ -1332,13 +1337,13 @@ connect and stream from you? %1 Config - + %1 Настройка %1 Configuration - + %1 Настройка @@ -1445,7 +1450,7 @@ connect and stream from you? Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Настройка аккаунтов и сервисов используемых Tomahawk для поиска и извлечения музыки, найти друзей и обновить статус. @@ -1455,7 +1460,7 @@ connect and stream from you? Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Настройка дополнительных возможносте Tomahawk в том числе подключения к сети, интеграцию с браузером, другие. @@ -1511,7 +1516,7 @@ connect and stream from you? Set this to your external IP address or host name. Make sure to forward the port to this host! - + Установите это на ваш внешний ip адресс или имени хоста. Убедитесь в том что проброс портов осуществляется к этому хосту! @@ -1600,12 +1605,12 @@ connect and stream from you? On - Включить + Вкл Off - Выключить + Выкл @@ -2206,7 +2211,7 @@ connect and stream from you? Subscribe to playlist changes - + Следить за изменением плейлиста @@ -2216,7 +2221,7 @@ connect and stream from you? Stop subscribing to changes - + Прекратить следить за изменением плейлиста @@ -2473,14 +2478,14 @@ You may wish to try re-authenticating. &Go to "%1" - + &Перейти к "%1" Go to "%1" - + Перейти к "%1" @@ -2615,7 +2620,7 @@ Please change the filters or try again. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - + Станция не может найти песни!⏎ ⏎Попытайтесь изменить настройки фильтра, для нового набора песен. @@ -2979,7 +2984,7 @@ Try tweaking the filters for a new set of songs to play. Top Overall - + Самые популярные @@ -3169,7 +3174,7 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! - + Ошибка сети при создании короткой ссылки! @@ -3177,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Track '%1' by %2 is not streamable. - + Песня %1 %2 не потоковая. @@ -3327,308 +3332,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - Выйти - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Стать онлайн - - - - Add &Friend... - Добавить друга - - - - U&pdate Collection - Обновить коллекцию - - - - Update Collection - Обновить коллекцию - - - - &Configure Tomahawk... - Настроить Tomahawk... - - - - Load &XSPF... - Загрузить XSPF - - - - Create &New Playlist... - Создать Новый Плейлист - - - - About &Tomahawk... - О Tomahawk - - - - Create New &Automatic Playlist - Создать новый автоматический плейлист - - - - Create New &Station - Создать Новую Станцию - - - - Show Offline Sources - Показать офлайн содержимое - - - - Hide Offline Sources - Скрыть офлайн содержимое - - - - Minimize - Скрыть - - - - Ctrl+M - Ctrl+M - - - - Zoom - Увеличить - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Юридическая информация... - - - - Diagnostics... - Диагностика - - - - Fully &Rescan Collection - Заново &проверить коллекцию - - - - Fully Rescan Collection - Заново проверить коллекцию - - - - Play - Играть - - - - Space - Пауза - - - - Previous - Предыдущая - - - - Next - Следующая - - - + Back Назад - + Go back one page Перейти на предыдущую страницу - + Forward Вперед - + Go forward one page Перейдите на следующую страницу - - + + Hide Menu Bar - + Спрятать строку меню приложения - - + + Show Menu Bar - + Показать строку меню приложения - + Search for any artist, album or song... Поиск любого исполнителя, альбома или песни ... - + &Main Menu &Главное меню - - - + + + Connect To Peer Связаться с Peer - + Enter peer address: Введите адрес узла: - + Enter peer port: Введите адрес порта: - + Enter peer key: Введите адрес ключа: - + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. Убедитесь, что у вас есть подходящий Phonon backend и необходимые плагины установлены. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. - + Station Станция - + Create New Station Создать новую станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Авторское право 2010 - 2012 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3964,7 +3839,7 @@ Lyrics for "%1" by %2: Some playlist entries were found without artist and track name, they will be omitted - + Некоторые песни в плейлисте были найдены без название песни и исполнителя, они будет пропушены diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 33d7e2aad4..6251f7859e 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Lyssna privat - + &Listen Publicly &Lyssna publikt @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Blanda - + Repeat Upprepa - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3322,308 +3327,178 @@ anger du PIN-koden här: Tomahawk - - &Quit - A&vsluta - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - A&nslut - - - - Add &Friend... - Lägg till &vän... - - - - U&pdate Collection - U&ppdatera samling - - - - Update Collection - Uppdatera samling - - - - &Configure Tomahawk... - &Konfigurera Tomahawk... - - - - Load &XSPF... - Läs in &XSPF... - - - - Create &New Playlist... - Skapa &ny spellista... - - - - About &Tomahawk... - Om &Tomahawk... - - - - Create New &Automatic Playlist - Skapa ny a&utomatisk spellista - - - - Create New &Station - Skapa ny &station - - - - Show Offline Sources - Visa frånkopplade källor - - - - Hide Offline Sources - Dölj frånkopplade källor - - - - Minimize - Minimera - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - - - - - Diagnostics... - Diagnostik... - - - - Fully &Rescan Collection - Sök &igenom hela samlingen igen - - - - Fully Rescan Collection - Sök igenom hela samlingen igen - - - - Play - Spela upp - - - - Space - Blanksteg - - - - Previous - Föregående - - - - Next - Nästa - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Anslut till klient - + Enter peer address: Ange klientadress: - + Enter peer port: Ange klientport: - + Enter peer key: Ange klientnyckel: - + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist - + Automatic Playlist - + Pause Paus - + &Play - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 4d5ca151a2..5a13c979bd 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Gizli Dinle - + &Listen Publicly &Yayınlayarak Dinle @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Karışık - + Repeat Yenile - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index c0e7358257..60c66e8b6e 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately 私下收听 - + &Listen Publicly 公开收听 @@ -222,32 +222,37 @@ connect and stream from you? 法律信息... - + + &View Logfile + + + + Check For Updates... 检查更新... - + &Controls 控制 - + &Settings 设置 - + &Help 帮助 - + &Window 窗口 - + Main Menu 主菜单 @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle 无序播放 - + Repeat 重复播放 - + Time Elapsed 已播放时间 - + Time Remaining 剩余时间 - + Playing from %1 歌曲来自 %1 - + Share 分享 - + Love 喜欢 @@ -1076,31 +1081,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 @@ -3327,308 +3332,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - 退出 - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - 上线 - - - - Add &Friend... - 添加朋友... - - - - U&pdate Collection - 更新收藏 - - - - Update Collection - 更新收藏 - - - - &Configure Tomahawk... - 配置 Tomahawk... - - - - Load &XSPF... - 载入 XSPF... - - - - Create &New Playlist... - 创建新的播放列表... - - - - About &Tomahawk... - 关于 Tomahawk... - - - - Create New &Automatic Playlist - 创建新自动播放列表 - - - - Create New &Station - 创建新电台 - - - - Show Offline Sources - 显示离线资源 - - - - Hide Offline Sources - 隐藏离线资源 - - - - Minimize - 最小化 - - - - Ctrl+M - Ctrl+M - - - - Zoom - 放大 - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - 法律信息... - - - - Diagnostics... - 诊断... - - - - Fully &Rescan Collection - 重新完整扫描收藏 - - - - Fully Rescan Collection - 重新完整扫描收藏 - - - - Play - 播放 - - - - Space - Space - - - - Previous - 上一首 - - - - Next - 下一首 - - - + Back 后退 - + Go back one page 转向上一页 - + Forward 下一个 - + Go forward one page 转向下一页 - - + + Hide Menu Bar 隐藏菜单栏 - - + + Show Menu Bar 显示菜单栏 - + Search for any artist, album or song... - + &Main Menu 主菜单 - - - + + + Connect To Peer 连接到客户端 - + Enter peer address: 输入客户端地址: - + Enter peer port: 输入客户端端口: - + Enter peer key: 输入客户端密钥: - + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 版权所有 2010 - 2012 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 71b122b7ef..6dedcd01ca 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately 私下聆聽 - + &Listen Publicly 公開聆聽 @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle 隨機 - + Repeat 重複 - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - 結束 - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - 上網 - - - - Add &Friend... - - - - - U&pdate Collection - 更新收藏 - - - - Update Collection - 更新收藏 - - - - &Configure Tomahawk... - 配置 Tomahawk ... - - - - Load &XSPF... - - - - - Create &New Playlist... - 建立新的播放清單... - - - - About &Tomahawk... - 關於 Tomahawk... - - - - Create New &Automatic Playlist - 建立新的自動播放清單 - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - 最小化 - - - - Ctrl+M - Ctrl+M - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - 診斷... - - - - Fully &Rescan Collection - 徹底地重新掃描收藏 - - - - Fully Rescan Collection - 徹底地重新掃描收藏 - - - - Play - 播放 - - - - Space - - - - - Previous - 前一首 - - - - Next - 下一首 - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer 連接點對點 - + Enter peer address: 輸入對等地址: - + Enter peer port: 輸入對等連接埠: - + Enter peer key: 輸入對等密鑰: - + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk From 623b5866edde54c922a7ac009cedb02afcfe2999 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 02:17:09 +0100 Subject: [PATCH 105/310] * Added new color roles for selection foreground / background. --- src/libtomahawk/utils/TomahawkUtilsGui.cpp | 10 +++++++--- src/libtomahawk/utils/TomahawkUtilsGui.h | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 7bc172d6fe..c0db158946 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -200,11 +200,15 @@ drawBackgroundAndNumbers( QPainter* painter, const QString& text, const QRect& f void -drawQueryBackground( QPainter* p, const QPalette& palette, const QRect& r, qreal lightnessFactor ) +drawQueryBackground( QPainter* p, const QRect& r ) { - p->setPen( palette.highlight().color().lighter( lightnessFactor * 100 ) ); - p->setBrush( palette.highlight().color().lighter( lightnessFactor * 100 ) ); + p->save(); + + p->setPen( Colors::SELECTION_BACKGROUND ); + p->setBrush( Colors::SELECTION_BACKGROUND ); p->drawRoundedRect( r, 4.0, 4.0 ); + + p->restore(); } diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.h b/src/libtomahawk/utils/TomahawkUtilsGui.h index 206a016cd6..5544a2ee18 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.h +++ b/src/libtomahawk/utils/TomahawkUtilsGui.h @@ -41,7 +41,7 @@ class QScrollBar; namespace TomahawkUtils { - DLLEXPORT void drawQueryBackground( QPainter* p, const QPalette& palette, const QRect& r, qreal lightnessFactor = 1 ); + DLLEXPORT void drawQueryBackground( QPainter* p, const QRect& r ); DLLEXPORT QWidget* tomahawkWindow(); /// Platform-specific bringing tomahawk mainwindow to front, b/c qt's activate() and such don't seem to work well enough for us DLLEXPORT void bringToFront(); @@ -82,6 +82,8 @@ namespace TomahawkUtils static const QColor GROUP_HEADER = QColor( "#637180" ); static const QColor NOW_PLAYING_ITEM = QColor( "#962c26" ); static const QColor NOW_PLAYING_ITEM_TEXT = QColor( "#ffffff" ); + static const QColor SELECTION_BACKGROUND = QColor( "#962c26" ); + static const QColor SELECTION_FOREGROUND = QColor( "#ffffff" ); } static const int POPUP_ROUNDING_RADIUS = 6; From 929a98c21a842690cda6e7b6fa56b4ace81b41d0 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 02:17:32 +0100 Subject: [PATCH 106/310] * Use new color roles. --- src/libtomahawk/playlist/GridItemDelegate.cpp | 6 +++--- src/libtomahawk/widgets/PlayableCover.cpp | 4 ++-- src/libtomahawk/widgets/QueryLabel.cpp | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/GridItemDelegate.cpp b/src/libtomahawk/playlist/GridItemDelegate.cpp index 9271dac32f..cfc074d062 100644 --- a/src/libtomahawk/playlist/GridItemDelegate.cpp +++ b/src/libtomahawk/playlist/GridItemDelegate.cpp @@ -198,7 +198,7 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, painter->drawRect( gradientRect ); painter->restore(); - painter->setPen( Qt::white ); + painter->setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); QRect textRect = option.rect.adjusted( 6, option.rect.height() - frameHeight, -6, -6 ); bool oneLiner = false; @@ -225,8 +225,8 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, r.adjust( 4, 0, -4, -1 ); if ( m_hoveringOver == index ) { - TomahawkUtils::drawQueryBackground( painter, opt.palette, r, 1.1 ); - painter->setPen( opt.palette.color( QPalette::HighlightedText ) ); + TomahawkUtils::drawQueryBackground( painter, r ); + painter->setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); } to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom ); diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 2c5652f264..016f19b895 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -251,8 +251,8 @@ PlayableCover::paintEvent( QPaintEvent* event ) if ( m_hoveredRect == r ) { - TomahawkUtils::drawQueryBackground( &bufpainter, palette(), r, 1.1 ); - bufpainter.setPen( Qt::white ); + TomahawkUtils::drawQueryBackground( &bufpainter, r ); + bufpainter.setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); } to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom ); diff --git a/src/libtomahawk/widgets/QueryLabel.cpp b/src/libtomahawk/widgets/QueryLabel.cpp index 35b11628c8..efa6cede4d 100644 --- a/src/libtomahawk/widgets/QueryLabel.cpp +++ b/src/libtomahawk/widgets/QueryLabel.cpp @@ -387,21 +387,22 @@ QueryLabel::paintEvent( QPaintEvent* event ) m_hoverType = Track; } - TomahawkUtils::drawQueryBackground( &p, palette(), m_hoverArea ); + TomahawkUtils::drawQueryBackground( &p, m_hoverArea ); } if ( elidedText != s || ( m_result.isNull() && m_query.isNull() && m_artist.isNull() && m_album.isNull() ) ) { if ( m_hoverArea.width() ) { - p.setPen( palette().highlightedText().color() ); - p.setBrush( palette().highlight() ); + p.setBrush( TomahawkUtils::Colors::SELECTION_BACKGROUND ); + p.setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); } else { p.setBrush( palette().window() ); p.setPen( palette().color( foregroundRole() ) ); } + p.drawText( r, m_align, elidedText ); } else From c98803b5316b3649ba9ba1e5a3db24a160939d4f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 02:26:43 +0100 Subject: [PATCH 107/310] * Added context menu to PlayableCover. --- src/libtomahawk/widgets/PlayableCover.cpp | 21 +++++++++++++++++++++ src/libtomahawk/widgets/PlayableCover.h | 9 +++++++++ 2 files changed, 30 insertions(+) diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 016f19b895..9f5a140e4c 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -20,6 +20,7 @@ #include "Artist.h" #include "Album.h" +#include "ContextMenu.h" #include "ViewManager.h" #include "audio/AudioEngine.h" #include "widgets/ImageButton.h" @@ -28,6 +29,7 @@ #include +using namespace Tomahawk; PlayableCover::PlayableCover( QWidget* parent ) : QLabel( parent ) @@ -45,6 +47,9 @@ PlayableCover::PlayableCover( QWidget* parent ) m_button->hide(); connect( m_button, SIGNAL( clicked( bool ) ), SLOT( onClicked() ) ); + + m_contextMenu = new ContextMenu( this ); + m_contextMenu->setSupportedActions( ContextMenu::ActionQueue | ContextMenu::ActionCopyLink | ContextMenu::ActionStopAfter | ContextMenu::ActionLove | ContextMenu::ActionPage ); } @@ -129,6 +134,22 @@ PlayableCover::mouseReleaseEvent( QMouseEvent* event ) } +void +PlayableCover::contextMenuEvent( QContextMenuEvent* event ) +{ + m_contextMenu->clear(); + + if ( m_artist ) + m_contextMenu->setArtist( m_artist ); + else if ( m_album ) + m_contextMenu->setAlbum( m_album ); + else + m_contextMenu->setQuery( m_query ); + + m_contextMenu->exec( event->globalPos() ); +} + + void PlayableCover::setPixmap( const QPixmap& pixmap ) { diff --git a/src/libtomahawk/widgets/PlayableCover.h b/src/libtomahawk/widgets/PlayableCover.h index 0a07af9e7c..770351a4ba 100644 --- a/src/libtomahawk/widgets/PlayableCover.h +++ b/src/libtomahawk/widgets/PlayableCover.h @@ -28,6 +28,11 @@ class ImageButton; +namespace Tomahawk +{ + class ContextMenu; +}; + /** * \class PlayableCover * \brief QLabel which shows a play/pause button on hovering. @@ -58,6 +63,8 @@ public slots: virtual void mouseMoveEvent( QMouseEvent* event ); virtual void mouseReleaseEvent( QMouseEvent* event ); + + virtual void contextMenuEvent( QContextMenuEvent* event ); void leaveEvent( QEvent* event ); void enterEvent( QEvent* event ); @@ -69,6 +76,8 @@ private slots: QPixmap m_pixmap; ImageButton* m_button; + Tomahawk::ContextMenu* m_contextMenu; + Tomahawk::artist_ptr m_artist; Tomahawk::album_ptr m_album; Tomahawk::query_ptr m_query; From 17a9ec4e20e57df227afabbf5f156d0af4f1febe Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 00:55:53 +0100 Subject: [PATCH 108/310] qt5: don't use QWeakPointer to track QObject* anymore --- src/AudioControls.h | 2 +- src/SettingsDialog.cpp | 2 +- src/TomahawkApp.cpp | 18 +++---- src/TomahawkApp.h | 19 ++++---- src/TomahawkWindow.cpp | 2 +- src/accounts/twitter/TwitterAccount.cpp | 10 ++-- src/accounts/twitter/TwitterAccount.h | 10 ++-- src/accounts/twitter/TwitterInfoPlugin.cpp | 2 +- src/accounts/twitter/TwitterInfoPlugin.h | 2 +- src/accounts/twitter/sip/TwitterSip.cpp | 14 +++--- src/accounts/twitter/sip/TwitterSip.h | 16 +++---- src/accounts/xmpp/XmppAccount.cpp | 4 +- src/accounts/xmpp/XmppAccount.h | 6 +-- src/accounts/xmpp/XmppInfoPlugin.h | 2 +- .../xmpp/googlewrapper/GoogleWrapper.cpp | 2 +- .../xmpp/googlewrapper/GoogleWrapper.h | 2 +- src/accounts/xmpp/sip/XmppSip.cpp | 2 +- src/accounts/xmpp/sip/XmppSip.h | 2 +- src/accounts/zeroconf/ZeroconfAccount.cpp | 2 +- src/accounts/zeroconf/ZeroconfAccount.h | 2 +- src/infoplugins/generic/charts/ChartsPlugin.h | 2 +- .../generic/newreleases/NewReleasesPlugin.h | 2 +- src/infoplugins/mac/adium/AdiumPlugin.h | 4 +- src/libtomahawk/AlbumPlaylistInterface.cpp | 8 ++-- src/libtomahawk/AlbumPlaylistInterface.h | 4 +- src/libtomahawk/ArtistPlaylistInterface.cpp | 8 ++-- src/libtomahawk/ArtistPlaylistInterface.h | 4 +- src/libtomahawk/FuncTimeout.cpp | 2 +- src/libtomahawk/FuncTimeout.h | 4 +- src/libtomahawk/GlobalActionManager.h | 2 - src/libtomahawk/LatchManager.cpp | 2 +- src/libtomahawk/Pipeline.cpp | 12 ++--- src/libtomahawk/Pipeline.h | 4 +- src/libtomahawk/PlaylistPlaylistInterface.cpp | 2 +- src/libtomahawk/PlaylistPlaylistInterface.h | 4 +- src/libtomahawk/Query.cpp | 2 +- src/libtomahawk/Query.h | 4 +- src/libtomahawk/Result.cpp | 4 +- src/libtomahawk/Result.h | 2 +- src/libtomahawk/SourcePlaylistInterface.cpp | 4 +- src/libtomahawk/SourcePlaylistInterface.h | 6 +-- src/libtomahawk/Typedefs.h | 4 +- src/libtomahawk/ViewManager.cpp | 4 +- src/libtomahawk/ViewManager.h | 14 +++--- src/libtomahawk/accounts/ResolverAccount.cpp | 2 +- src/libtomahawk/accounts/ResolverAccount.h | 4 +- .../accounts/lastfm/LastFmAccount.cpp | 6 +-- .../accounts/lastfm/LastFmAccount.h | 6 +-- .../accounts/lastfm/LastFmInfoPlugin.h | 2 +- .../accounts/spotify/SpotifyAccount.cpp | 8 ++-- .../accounts/spotify/SpotifyAccount.h | 8 ++-- .../accounts/spotify/SpotifyInfoPlugin.cpp | 3 +- .../accounts/spotify/SpotifyInfoPlugin.h | 5 +- .../accounts/spotify/SpotifyPlaylistUpdater.h | 4 +- src/libtomahawk/database/Database.cpp | 10 ++-- src/libtomahawk/database/Database.h | 4 +- .../DatabaseCommand_UpdateSearchIndex.h | 3 +- src/libtomahawk/database/DatabaseWorker.cpp | 6 +-- src/libtomahawk/database/DatabaseWorker.h | 8 ++-- src/libtomahawk/filemetadata/MusicScanner.cpp | 2 +- src/libtomahawk/filemetadata/MusicScanner.h | 5 +- src/libtomahawk/filemetadata/ScanManager.cpp | 2 +- src/libtomahawk/filemetadata/ScanManager.h | 4 +- src/libtomahawk/infosystem/InfoSystem.cpp | 10 ++-- src/libtomahawk/infosystem/InfoSystem.h | 8 ++-- src/libtomahawk/infosystem/InfoSystemWorker.h | 1 - src/libtomahawk/jobview/LatchedStatusItem.cpp | 4 +- src/libtomahawk/jobview/LatchedStatusItem.h | 2 +- .../jobview/PipelineStatusItem.cpp | 2 +- src/libtomahawk/jobview/PipelineStatusItem.h | 3 +- .../jobview/TransferStatusItem.cpp | 2 +- src/libtomahawk/jobview/TransferStatusItem.h | 4 +- src/libtomahawk/network/PortFwdThread.cpp | 4 +- src/libtomahawk/network/PortFwdThread.h | 6 +-- src/libtomahawk/network/Servent.cpp | 8 ++-- src/libtomahawk/network/Servent.h | 6 +-- .../PlayableProxyModelPlaylistInterface.cpp | 2 +- .../PlayableProxyModelPlaylistInterface.h | 7 +-- .../TreeProxyModelPlaylistInterface.cpp | 2 +- .../TreeProxyModelPlaylistInterface.h | 2 +- .../dynamic/database/DatabaseControl.h | 4 +- .../dynamic/echonest/EchonestControl.cpp | 48 +++++++++---------- .../dynamic/echonest/EchonestControl.h | 5 +- .../dynamic/widgets/DynamicControlWrapper.cpp | 10 ++-- .../dynamic/widgets/DynamicControlWrapper.h | 7 +-- .../resolvers/QtScriptResolver.cpp | 2 +- src/libtomahawk/resolvers/QtScriptResolver.h | 2 +- src/libtomahawk/resolvers/ScriptResolver.cpp | 2 +- src/libtomahawk/resolvers/ScriptResolver.h | 2 +- .../thirdparty/Qocoa/qtoolbartabdialog.cpp | 5 +- .../utils/BinaryInstallerHelper.cpp | 2 +- src/libtomahawk/utils/BinaryInstallerHelper.h | 4 +- src/libtomahawk/utils/GuiHelpers.cpp | 4 +- src/libtomahawk/utils/PixmapDelegateFader.cpp | 6 +-- src/libtomahawk/utils/PixmapDelegateFader.h | 8 ++-- src/libtomahawk/utils/WidgetDragFilter.cpp | 2 +- src/libtomahawk/utils/WidgetDragFilter.h | 9 ++-- .../widgets/AnimatedCounterLabel.h | 4 +- src/libtomahawk/widgets/FadingPixmap.cpp | 6 +-- src/libtomahawk/widgets/FadingPixmap.h | 6 +-- src/sourcetree/SourceTreeView.cpp | 2 +- src/sourcetree/SourceTreeView.h | 2 +- src/widgets/SlideSwitchButton.cpp | 6 +-- src/widgets/SlideSwitchButton.h | 8 ++-- src/xmppbot/XmppBot.h | 2 +- 105 files changed, 282 insertions(+), 270 deletions(-) diff --git a/src/AudioControls.h b/src/AudioControls.h index 00cc1e9da1..a4797c7aa5 100644 --- a/src/AudioControls.h +++ b/src/AudioControls.h @@ -95,7 +95,7 @@ private slots: Ui::AudioControls* ui; - QWeakPointer m_socialWidget; + QPointer m_socialWidget; Tomahawk::result_ptr m_currentTrack; Tomahawk::PlaylistModes::RepeatMode m_repeatMode; diff --git a/src/SettingsDialog.cpp b/src/SettingsDialog.cpp index 932fd61ecd..3da35d3003 100644 --- a/src/SettingsDialog.cpp +++ b/src/SettingsDialog.cpp @@ -423,7 +423,7 @@ SettingsDialog::openAccountFactoryConfig( AccountFactory* factory ) #ifndef Q_OS_MAC AccountFactoryWrapper dialog( factory, 0 ); - QWeakPointer< AccountFactoryWrapper > watcher( &dialog ); + QPointer< AccountFactoryWrapper > watcher( &dialog ); dialog.exec(); #else diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index 7ab3ef2123..964641f74e 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -185,18 +185,18 @@ TomahawkApp::init() // Cause the creation of the nam, but don't need to address it directly, so prevent warning Q_UNUSED( TomahawkUtils::nam() ); - m_audioEngine = QWeakPointer( new AudioEngine ); + m_audioEngine = QPointer( new AudioEngine ); // init pipeline and resolver factories new Pipeline(); - m_servent = QWeakPointer( new Servent( this ) ); + m_servent = QPointer( new Servent( this ) ); connect( m_servent.data(), SIGNAL( ready() ), SLOT( initSIP() ) ); tDebug() << "Init Database."; initDatabase(); - m_scanManager = QWeakPointer( new ScanManager( this ) ); + m_scanManager = QPointer( new ScanManager( this ) ); #ifndef ENABLE_HEADLESS Pipeline::instance()->addExternalResolverFactory( boost::bind( &QtScriptResolver::factory, _1 ) ); @@ -221,7 +221,7 @@ TomahawkApp::init() // Register shortcut handler for this platform #ifdef Q_WS_MAC - m_shortcutHandler = QWeakPointer( new MacShortcutHandler( this ) ); + m_shortcutHandler = QPointer( new MacShortcutHandler( this ) ); Tomahawk::setShortcutHandler( static_cast( m_shortcutHandler.data() ) ); Tomahawk::setApplicationHandler( this ); @@ -242,10 +242,10 @@ TomahawkApp::init() } tDebug() << "Init InfoSystem."; - m_infoSystem = QWeakPointer( Tomahawk::InfoSystem::InfoSystem::instance() ); + m_infoSystem = QPointer( Tomahawk::InfoSystem::InfoSystem::instance() ); tDebug() << "Init AccountManager."; - m_accountManager = QWeakPointer< Tomahawk::Accounts::AccountManager >( new Tomahawk::Accounts::AccountManager( this ) ); + m_accountManager = QPointer< Tomahawk::Accounts::AccountManager >( new Tomahawk::Accounts::AccountManager( this ) ); connect( m_accountManager.data(), SIGNAL( ready() ), SLOT( accountManagerReady() ) ); Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() ); @@ -517,7 +517,7 @@ TomahawkApp::initDatabase() } tDebug( LOGEXTRA ) << "Using database:" << dbpath; - m_database = QWeakPointer( new Database( dbpath, this ) ); + m_database = QPointer( new Database( dbpath, this ) ); Pipeline::instance()->databaseReady(); } @@ -541,8 +541,8 @@ TomahawkApp::initHTTP() return; } - m_session = QWeakPointer< QxtHttpSessionManager >( new QxtHttpSessionManager() ); - m_connector = QWeakPointer< QxtHttpServerConnector >( new QxtHttpServerConnector ); + m_session = QPointer< QxtHttpSessionManager >( new QxtHttpSessionManager() ); + m_connector = QPointer< QxtHttpServerConnector >( new QxtHttpServerConnector ); if ( m_session.isNull() || m_connector.isNull() ) { if ( !m_session.isNull() ) diff --git a/src/TomahawkApp.h b/src/TomahawkApp.h index 5eb342d294..628a74e2d6 100644 --- a/src/TomahawkApp.h +++ b/src/TomahawkApp.h @@ -39,6 +39,7 @@ #include #include #include +#include class AudioEngine; class Database; @@ -124,13 +125,13 @@ private slots: void initLocalCollection(); void initPipeline(); - QWeakPointer m_database; - QWeakPointer m_scanManager; - QWeakPointer m_audioEngine; - QWeakPointer m_servent; - QWeakPointer m_infoSystem; - QWeakPointer m_shortcutHandler; - QWeakPointer< Tomahawk::Accounts::AccountManager > m_accountManager; + QPointer m_database; + QPointer m_scanManager; + QPointer m_audioEngine; + QPointer m_servent; + QPointer m_infoSystem; + QPointer m_shortcutHandler; + QPointer< Tomahawk::Accounts::AccountManager > m_accountManager; bool m_scrubFriendlyName; #ifdef LIBLASTFM_FOUND @@ -143,8 +144,8 @@ private slots: bool m_headless, m_loaded; - QWeakPointer< QxtHttpServerConnector > m_connector; - QWeakPointer< QxtHttpSessionManager > m_session; + QPointer< QxtHttpServerConnector > m_connector; + QPointer< QxtHttpSessionManager > m_session; }; Q_DECLARE_METATYPE( PairList ) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 095499b371..c0b7532b46 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -924,7 +924,7 @@ TomahawkWindow::loadSpiff() connect( diag, SIGNAL( finished( int ) ), this, SLOT( loadXspfFinished( int ) ) ); diag->show(); #else - QWeakPointer< LoadXSPFDialog > safe( diag ); + QPointer< LoadXSPFDialog > safe( diag ); int ret = diag->exec(); if ( !safe.isNull() && ret == QDialog::Accepted ) diff --git a/src/accounts/twitter/TwitterAccount.cpp b/src/accounts/twitter/TwitterAccount.cpp index cd6859f170..842448539b 100644 --- a/src/accounts/twitter/TwitterAccount.cpp +++ b/src/accounts/twitter/TwitterAccount.cpp @@ -54,10 +54,10 @@ TwitterAccount::TwitterAccount( const QString &accountId ) qDebug() << "Got cached peers:" << configuration() << configuration()[ "cachedpeers" ]; - m_configWidget = QWeakPointer< TwitterConfigWidget >( new TwitterConfigWidget( this, 0 ) ); + m_configWidget = QPointer< TwitterConfigWidget >( new TwitterConfigWidget( this, 0 ) ); connect( m_configWidget.data(), SIGNAL( twitterAuthed( bool ) ), SLOT( configDialogAuthedSignalSlot( bool ) ) ); - m_twitterAuth = QWeakPointer< TomahawkOAuthTwitter >( new TomahawkOAuthTwitter( TomahawkUtils::nam(), this ) ); + m_twitterAuth = QPointer< TomahawkOAuthTwitter >( new TomahawkOAuthTwitter( TomahawkUtils::nam(), this ) ); m_onlinePixmap = QPixmap( ":/twitter-icon.png" ); m_offlinePixmap = QPixmap( ":/twitter-offline-icon.png" ); @@ -97,7 +97,7 @@ TwitterAccount::sipPlugin() if ( m_twitterSipPlugin.isNull() ) { qDebug() << "CHECKING:" << configuration() << configuration()[ "cachedpeers" ]; - m_twitterSipPlugin = QWeakPointer< TwitterSipPlugin >( new TwitterSipPlugin( this ) ); + m_twitterSipPlugin = QPointer< TwitterSipPlugin >( new TwitterSipPlugin( this ) ); connect( m_twitterSipPlugin.data(), SIGNAL( stateChanged( Tomahawk::Accounts::Account::ConnectionState ) ), this, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) ); return m_twitterSipPlugin.data(); @@ -110,7 +110,7 @@ Tomahawk::InfoSystem::InfoPluginPtr TwitterAccount::infoPlugin() { if ( m_twitterInfoPlugin.isNull() ) - m_twitterInfoPlugin = QWeakPointer< Tomahawk::InfoSystem::TwitterInfoPlugin >( new Tomahawk::InfoSystem::TwitterInfoPlugin( this ) ); + m_twitterInfoPlugin = QPointer< Tomahawk::InfoSystem::TwitterInfoPlugin >( new Tomahawk::InfoSystem::TwitterInfoPlugin( this ) ); return Tomahawk::InfoSystem::InfoPluginPtr( m_twitterInfoPlugin.data() ); } @@ -191,7 +191,7 @@ TwitterAccount::refreshTwitterAuth() Q_ASSERT( TomahawkUtils::nam() != 0 ); tDebug() << Q_FUNC_INFO << " with nam " << TomahawkUtils::nam(); - m_twitterAuth = QWeakPointer< TomahawkOAuthTwitter >( new TomahawkOAuthTwitter( TomahawkUtils::nam(), this ) ); + m_twitterAuth = QPointer< TomahawkOAuthTwitter >( new TomahawkOAuthTwitter( TomahawkUtils::nam(), this ) ); if( m_twitterAuth.isNull() ) return false; diff --git a/src/accounts/twitter/TwitterAccount.h b/src/accounts/twitter/TwitterAccount.h index 14f7602cb5..490f68e4f0 100644 --- a/src/accounts/twitter/TwitterAccount.h +++ b/src/accounts/twitter/TwitterAccount.h @@ -80,7 +80,7 @@ class ACCOUNTDLLEXPORT TwitterAccount : public Account TomahawkOAuthTwitter* twitterAuth() const { return m_twitterAuth.data(); } signals: - void nowAuthenticated( const QWeakPointer< TomahawkOAuthTwitter >&, const QTweetUser &user ); + void nowAuthenticated( const QPointer< TomahawkOAuthTwitter >&, const QTweetUser &user ); void nowDeauthenticated(); private slots: @@ -92,10 +92,10 @@ private slots: QIcon m_icon; bool m_isAuthenticated; bool m_isAuthenticating; - QWeakPointer< TomahawkOAuthTwitter > m_twitterAuth; - QWeakPointer< TwitterConfigWidget > m_configWidget; - QWeakPointer< TwitterSipPlugin > m_twitterSipPlugin; - QWeakPointer< Tomahawk::InfoSystem::TwitterInfoPlugin > m_twitterInfoPlugin; + QPointer< TomahawkOAuthTwitter > m_twitterAuth; + QPointer< TwitterConfigWidget > m_configWidget; + QPointer< TwitterSipPlugin > m_twitterSipPlugin; + QPointer< Tomahawk::InfoSystem::TwitterInfoPlugin > m_twitterInfoPlugin; // for settings access friend class TwitterConfigWidget; diff --git a/src/accounts/twitter/TwitterInfoPlugin.cpp b/src/accounts/twitter/TwitterInfoPlugin.cpp index a77846f48e..c78cc630b8 100644 --- a/src/accounts/twitter/TwitterInfoPlugin.cpp +++ b/src/accounts/twitter/TwitterInfoPlugin.cpp @@ -82,7 +82,7 @@ TwitterInfoPlugin::refreshTwitterAuth() Q_ASSERT( TomahawkUtils::nam() != 0 ); tDebug() << Q_FUNC_INFO << "with nam" << TomahawkUtils::nam() << this; - m_twitterAuth = QWeakPointer< TomahawkOAuthTwitter >( new TomahawkOAuthTwitter( TomahawkUtils::nam(), this ) ); + m_twitterAuth = QPointer< TomahawkOAuthTwitter >( new TomahawkOAuthTwitter( TomahawkUtils::nam(), this ) ); if ( m_twitterAuth.isNull() ) return false; diff --git a/src/accounts/twitter/TwitterInfoPlugin.h b/src/accounts/twitter/TwitterInfoPlugin.h index 0919515b79..893249a840 100644 --- a/src/accounts/twitter/TwitterInfoPlugin.h +++ b/src/accounts/twitter/TwitterInfoPlugin.h @@ -68,7 +68,7 @@ namespace Tomahawk { bool isValid() const; Tomahawk::Accounts::TwitterAccount* m_account; - QWeakPointer< TomahawkOAuthTwitter > m_twitterAuth; + QPointer< TomahawkOAuthTwitter > m_twitterAuth; }; } diff --git a/src/accounts/twitter/sip/TwitterSip.cpp b/src/accounts/twitter/sip/TwitterSip.cpp index 8c59e6a5e5..4364199d45 100644 --- a/src/accounts/twitter/sip/TwitterSip.cpp +++ b/src/accounts/twitter/sip/TwitterSip.cpp @@ -60,7 +60,7 @@ TwitterSipPlugin::TwitterSipPlugin( Tomahawk::Accounts::Account* account ) { qDebug() << Q_FUNC_INFO; - connect( account, SIGNAL( nowAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ), SLOT( accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ) ); + connect( account, SIGNAL( nowAuthenticated( const QPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ), SLOT( accountAuthenticated( const QPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ) ); m_configuration = account->configuration(); qDebug() << "SIP configuration:" << m_configuration << m_configuration[ "cachedpeers" ]; @@ -165,7 +165,7 @@ TwitterSipPlugin::disconnectPlugin() } void -TwitterSipPlugin::accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &twitterAuth, const QTweetUser &user ) +TwitterSipPlugin::accountAuthenticated( const QPointer< TomahawkOAuthTwitter > &twitterAuth, const QTweetUser &user ) { Q_UNUSED( user ); @@ -174,11 +174,11 @@ TwitterSipPlugin::accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter m_cachedTwitterAuth = twitterAuth; - m_friendsTimeline = QWeakPointer( new QTweetFriendsTimeline( m_cachedTwitterAuth.data(), this ) ); - m_mentions = QWeakPointer( new QTweetMentions( m_cachedTwitterAuth.data(), this ) ); - m_directMessages = QWeakPointer( new QTweetDirectMessages( m_cachedTwitterAuth.data(), this ) ); - m_directMessageNew = QWeakPointer( new QTweetDirectMessageNew( m_cachedTwitterAuth.data(), this ) ); - m_directMessageDestroy = QWeakPointer( new QTweetDirectMessageDestroy( m_cachedTwitterAuth.data(), this ) ); + m_friendsTimeline = QPointer( new QTweetFriendsTimeline( m_cachedTwitterAuth.data(), this ) ); + m_mentions = QPointer( new QTweetMentions( m_cachedTwitterAuth.data(), this ) ); + m_directMessages = QPointer( new QTweetDirectMessages( m_cachedTwitterAuth.data(), this ) ); + m_directMessageNew = QPointer( new QTweetDirectMessageNew( m_cachedTwitterAuth.data(), this ) ); + m_directMessageDestroy = QPointer( new QTweetDirectMessageDestroy( m_cachedTwitterAuth.data(), this ) ); connect( m_friendsTimeline.data(), SIGNAL( parsedStatuses(const QList< QTweetStatus > &) ), SLOT( friendsTimelineStatuses(const QList &) ) ); connect( m_mentions.data(), SIGNAL( parsedStatuses(const QList< QTweetStatus > &) ), SLOT( mentionsStatuses(const QList &) ) ); connect( m_directMessages.data(), SIGNAL( parsedDirectMessages(const QList &)), SLOT( directMessages(const QList &) ) ); diff --git a/src/accounts/twitter/sip/TwitterSip.h b/src/accounts/twitter/sip/TwitterSip.h index 325a761811..7086cb21ed 100644 --- a/src/accounts/twitter/sip/TwitterSip.h +++ b/src/accounts/twitter/sip/TwitterSip.h @@ -36,7 +36,7 @@ #include #include -#include +#include #include @@ -81,7 +81,7 @@ public slots: void checkSettings(); private slots: - void accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &twitterAuth, const QTweetUser &user ); + void accountAuthenticated( const QPointer< TomahawkOAuthTwitter > &twitterAuth, const QTweetUser &user ); void checkTimerFired(); void connectTimerFired(); void friendsTimelineStatuses( const QList< QTweetStatus > &statuses ); @@ -104,13 +104,13 @@ private slots: bool refreshTwitterAuth(); void parseGotTomahawk( const QRegExp ®ex, const QString &screenName, const QString &text ); - QWeakPointer< TomahawkOAuthTwitter > m_cachedTwitterAuth; + QPointer< TomahawkOAuthTwitter > m_cachedTwitterAuth; - QWeakPointer< QTweetFriendsTimeline > m_friendsTimeline; - QWeakPointer< QTweetMentions > m_mentions; - QWeakPointer< QTweetDirectMessages > m_directMessages; - QWeakPointer< QTweetDirectMessageNew > m_directMessageNew; - QWeakPointer< QTweetDirectMessageDestroy > m_directMessageDestroy; + QPointer< QTweetFriendsTimeline > m_friendsTimeline; + QPointer< QTweetMentions > m_mentions; + QPointer< QTweetDirectMessages > m_directMessages; + QPointer< QTweetDirectMessageNew > m_directMessageNew; + QPointer< QTweetDirectMessageDestroy > m_directMessageDestroy; QVariantHash m_configuration; diff --git a/src/accounts/xmpp/XmppAccount.cpp b/src/accounts/xmpp/XmppAccount.cpp index d6ee0cf94d..b1ae9f2783 100644 --- a/src/accounts/xmpp/XmppAccount.cpp +++ b/src/accounts/xmpp/XmppAccount.cpp @@ -44,7 +44,7 @@ XmppAccount::XmppAccount( const QString &accountId ) setAccountServiceName( "Jabber (XMPP)" ); setTypes( SipType ); - m_configWidget = QWeakPointer< QWidget >( new XmppConfigWidget( this, 0 ) ); + m_configWidget = QPointer< QWidget >( new XmppConfigWidget( this, 0 ) ); m_onlinePixmap = QPixmap( ":/xmpp-icon.png" ); m_offlinePixmap = QPixmap( ":/xmpp-offline-icon.png" ); @@ -119,7 +119,7 @@ XmppAccount::sipPlugin() { if ( m_xmppSipPlugin.isNull() ) { - m_xmppSipPlugin = QWeakPointer< XmppSipPlugin >( new XmppSipPlugin( this ) ); + m_xmppSipPlugin = QPointer< XmppSipPlugin >( new XmppSipPlugin( this ) ); connect( m_xmppSipPlugin.data(), SIGNAL( stateChanged( Tomahawk::Accounts::Account::ConnectionState ) ), this, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) ); connect( m_xmppSipPlugin.data(), SIGNAL( error( int, QString ) ), this, SIGNAL( error( int, QString ) ) ); diff --git a/src/accounts/xmpp/XmppAccount.h b/src/accounts/xmpp/XmppAccount.h index 08b5705fda..999a77f6f3 100644 --- a/src/accounts/xmpp/XmppAccount.h +++ b/src/accounts/xmpp/XmppAccount.h @@ -80,9 +80,9 @@ class ACCOUNTDLLEXPORT XmppAccount : public Account virtual Tomahawk::Accounts::Account::ConnectionState connectionState() const; protected: - QWeakPointer< QWidget > m_configWidget; // so the google wrapper can change the config dialog a bit - QWeakPointer< XmppSipPlugin > m_xmppSipPlugin; - QWeakPointer< Tomahawk::InfoSystem::XmppInfoPlugin > m_xmppInfoPlugin; + QPointer< QWidget > m_configWidget; // so the google wrapper can change the config dialog a bit + QPointer< XmppSipPlugin > m_xmppSipPlugin; + QPointer< Tomahawk::InfoSystem::XmppInfoPlugin > m_xmppInfoPlugin; QPixmap m_onlinePixmap; QPixmap m_offlinePixmap; diff --git a/src/accounts/xmpp/XmppInfoPlugin.h b/src/accounts/xmpp/XmppInfoPlugin.h index cbb248e6db..84c6c55553 100644 --- a/src/accounts/xmpp/XmppInfoPlugin.h +++ b/src/accounts/xmpp/XmppInfoPlugin.h @@ -55,7 +55,7 @@ namespace Tomahawk { void audioPaused(); private: - QWeakPointer< XmppSipPlugin > m_sipPlugin; + QPointer< XmppSipPlugin > m_sipPlugin; QTimer m_pauseTimer; }; diff --git a/src/accounts/xmpp/googlewrapper/GoogleWrapper.cpp b/src/accounts/xmpp/googlewrapper/GoogleWrapper.cpp index b001f58a35..705f35fd80 100644 --- a/src/accounts/xmpp/googlewrapper/GoogleWrapper.cpp +++ b/src/accounts/xmpp/googlewrapper/GoogleWrapper.cpp @@ -109,7 +109,7 @@ GoogleWrapper::sipPlugin() { if ( m_xmppSipPlugin.isNull() ) { - m_xmppSipPlugin = QWeakPointer< XmppSipPlugin >( new GoogleWrapperSip( const_cast< GoogleWrapper* >( this ) ) ); + m_xmppSipPlugin = QPointer< XmppSipPlugin >( new GoogleWrapperSip( const_cast< GoogleWrapper* >( this ) ) ); connect( m_xmppSipPlugin.data(), SIGNAL( stateChanged( Tomahawk::Accounts::Account::ConnectionState ) ), this, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) ); connect( m_xmppSipPlugin.data(), SIGNAL( error( int, QString ) ), this, SIGNAL( error( int, QString ) ) ); diff --git a/src/accounts/xmpp/googlewrapper/GoogleWrapper.h b/src/accounts/xmpp/googlewrapper/GoogleWrapper.h index 171ad9f194..718d125af1 100644 --- a/src/accounts/xmpp/googlewrapper/GoogleWrapper.h +++ b/src/accounts/xmpp/googlewrapper/GoogleWrapper.h @@ -73,7 +73,7 @@ class ACCOUNTDLLEXPORT GoogleWrapper : public XmppAccount virtual SipPlugin* sipPlugin(); private: - QWeakPointer< GoogleWrapperSip > m_sipPlugin; + QPointer< GoogleWrapperSip > m_sipPlugin; }; } diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index affa153212..646ca3d33f 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -202,7 +202,7 @@ InfoSystem::InfoPluginPtr XmppSipPlugin::infoPlugin() { if ( m_infoPlugin.isNull() ) - m_infoPlugin = QWeakPointer< Tomahawk::InfoSystem::XmppInfoPlugin >( new Tomahawk::InfoSystem::XmppInfoPlugin( this ) ); + m_infoPlugin = QPointer< Tomahawk::InfoSystem::XmppInfoPlugin >( new Tomahawk::InfoSystem::XmppInfoPlugin( this ) ); return InfoSystem::InfoPluginPtr( m_infoPlugin.data() ); } diff --git a/src/accounts/xmpp/sip/XmppSip.h b/src/accounts/xmpp/sip/XmppSip.h index 3e244a9755..f48f03f14b 100644 --- a/src/accounts/xmpp/sip/XmppSip.h +++ b/src/accounts/xmpp/sip/XmppSip.h @@ -132,7 +132,7 @@ private slots: int m_currentPort; QString m_currentResource; - QWeakPointer< Tomahawk::InfoSystem::XmppInfoPlugin > m_infoPlugin; + QPointer< Tomahawk::InfoSystem::XmppInfoPlugin > m_infoPlugin; Tomahawk::Accounts::Account::ConnectionState m_state; // sort out diff --git a/src/accounts/zeroconf/ZeroconfAccount.cpp b/src/accounts/zeroconf/ZeroconfAccount.cpp index e2cf9a6749..0a86fb3d1a 100644 --- a/src/accounts/zeroconf/ZeroconfAccount.cpp +++ b/src/accounts/zeroconf/ZeroconfAccount.cpp @@ -120,7 +120,7 @@ SipPlugin* ZeroconfAccount::sipPlugin() { if ( m_sipPlugin.isNull() ) - m_sipPlugin = QWeakPointer< ZeroconfPlugin >( new ZeroconfPlugin( this ) ); + m_sipPlugin = QPointer< ZeroconfPlugin >( new ZeroconfPlugin( this ) ); return m_sipPlugin.data(); } diff --git a/src/accounts/zeroconf/ZeroconfAccount.h b/src/accounts/zeroconf/ZeroconfAccount.h index fc7a939ae9..644e1cc3f4 100644 --- a/src/accounts/zeroconf/ZeroconfAccount.h +++ b/src/accounts/zeroconf/ZeroconfAccount.h @@ -72,7 +72,7 @@ class ACCOUNTDLLEXPORT ZeroconfAccount : public Account QWidget* aclWidget() { return 0; } private: - QWeakPointer< ZeroconfPlugin > m_sipPlugin; + QPointer< ZeroconfPlugin > m_sipPlugin; }; } diff --git a/src/infoplugins/generic/charts/ChartsPlugin.h b/src/infoplugins/generic/charts/ChartsPlugin.h index 07003a1d98..a4c506f151 100644 --- a/src/infoplugins/generic/charts/ChartsPlugin.h +++ b/src/infoplugins/generic/charts/ChartsPlugin.h @@ -111,7 +111,7 @@ protected slots: uint m_chartsFetchJobs; QList< InfoRequestData > m_cachedRequests; QHash< QString, QString > m_cachedCountries; - QWeakPointer< QNetworkAccessManager > m_nam; + QPointer< QNetworkAccessManager > m_nam; }; } diff --git a/src/infoplugins/generic/newreleases/NewReleasesPlugin.h b/src/infoplugins/generic/newreleases/NewReleasesPlugin.h index 86f0cfbfb6..884fac9017 100644 --- a/src/infoplugins/generic/newreleases/NewReleasesPlugin.h +++ b/src/infoplugins/generic/newreleases/NewReleasesPlugin.h @@ -92,7 +92,7 @@ protected slots: uint m_nrFetchJobs; QList< InfoRequestData > m_cachedRequests; QHash< QString, QString > m_cachedCountries; - QWeakPointer< QNetworkAccessManager > m_nam; + QPointer< QNetworkAccessManager > m_nam; }; } diff --git a/src/infoplugins/mac/adium/AdiumPlugin.h b/src/infoplugins/mac/adium/AdiumPlugin.h index a4d3d50bf1..3687f1ab9e 100644 --- a/src/infoplugins/mac/adium/AdiumPlugin.h +++ b/src/infoplugins/mac/adium/AdiumPlugin.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include class QTimer; @@ -80,7 +80,7 @@ private slots: QUrl m_currentLongUrl; QTimer* m_pauseTimer; - QWeakPointer m_nam; + QPointer m_nam; }; diff --git a/src/libtomahawk/AlbumPlaylistInterface.cpp b/src/libtomahawk/AlbumPlaylistInterface.cpp index d2290e297c..aef2aefcdf 100644 --- a/src/libtomahawk/AlbumPlaylistInterface.cpp +++ b/src/libtomahawk/AlbumPlaylistInterface.cpp @@ -40,14 +40,14 @@ AlbumPlaylistInterface::AlbumPlaylistInterface( Tomahawk::Album* album, Tomahawk , m_databaseLoaded( false ) , m_mode( mode ) , m_collection( collection ) - , m_album( QWeakPointer< Tomahawk::Album >( album ) ) + , m_album( QPointer< Tomahawk::Album >( album ) ) { } AlbumPlaylistInterface::~AlbumPlaylistInterface() { - m_album.clear(); + m_album = 0; } @@ -133,7 +133,7 @@ AlbumPlaylistInterface::tracks() const else if ( m_mode == DatabaseMode && !m_databaseLoaded ) { DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); - cmd->setAlbum( m_album ); + cmd->setAlbum( m_album->weakRef() ); cmd->setSortOrder( DatabaseCommand_AllTracks::AlbumPosition ); connect( cmd, SIGNAL( tracks( QList, QVariant ) ), @@ -216,7 +216,7 @@ AlbumPlaylistInterface::infoSystemFinished( const QString& infoId ) if ( m_queries.isEmpty() && m_mode == Mixed ) { DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); - cmd->setAlbum( m_album ); + cmd->setAlbum( m_album->weakRef() ); //this takes discnumber into account as well cmd->setSortOrder( DatabaseCommand_AllTracks::AlbumPosition ); diff --git a/src/libtomahawk/AlbumPlaylistInterface.h b/src/libtomahawk/AlbumPlaylistInterface.h index a63f41f17e..8f6e40c7e2 100644 --- a/src/libtomahawk/AlbumPlaylistInterface.h +++ b/src/libtomahawk/AlbumPlaylistInterface.h @@ -21,7 +21,7 @@ #define TOMAHAWKALBUMPLAYLISTINTERFACE_H #include -#include +#include #include "Album.h" #include "Typedefs.h" @@ -81,7 +81,7 @@ private slots: Tomahawk::ModelMode m_mode; Tomahawk::collection_ptr m_collection; - QWeakPointer< Tomahawk::Album > m_album; + QPointer< Tomahawk::Album > m_album; }; }; // ns diff --git a/src/libtomahawk/ArtistPlaylistInterface.cpp b/src/libtomahawk/ArtistPlaylistInterface.cpp index 451764fe54..f595b8a9c9 100644 --- a/src/libtomahawk/ArtistPlaylistInterface.cpp +++ b/src/libtomahawk/ArtistPlaylistInterface.cpp @@ -39,14 +39,14 @@ ArtistPlaylistInterface::ArtistPlaylistInterface( Tomahawk::Artist* artist, Toma , m_databaseLoaded( false ) , m_mode( mode ) , m_collection( collection ) - , m_artist( QWeakPointer< Tomahawk::Artist >( artist ) ) + , m_artist( QPointer< Tomahawk::Artist >( artist ) ) { } ArtistPlaylistInterface::~ArtistPlaylistInterface() { - m_artist.clear(); + m_artist = 0; } @@ -114,7 +114,7 @@ ArtistPlaylistInterface::tracks() const else if ( m_mode == DatabaseMode && !m_databaseLoaded ) { DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); - cmd->setArtist( m_artist ); + cmd->setArtist( m_artist->weakRef() ); cmd->setSortOrder( DatabaseCommand_AllTracks::AlbumPosition ); connect( cmd, SIGNAL( tracks( QList, QVariant ) ), @@ -196,7 +196,7 @@ ArtistPlaylistInterface::infoSystemFinished( const QString &infoId ) if ( m_queries.isEmpty() && m_mode == Mixed ) { DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); - cmd->setArtist( m_artist ); + cmd->setArtist( m_artist->weakRef() ); //this takes discnumber into account as well cmd->setSortOrder( DatabaseCommand_AllTracks::AlbumPosition ); diff --git a/src/libtomahawk/ArtistPlaylistInterface.h b/src/libtomahawk/ArtistPlaylistInterface.h index c728f1c2a0..5c2e8d89c4 100644 --- a/src/libtomahawk/ArtistPlaylistInterface.h +++ b/src/libtomahawk/ArtistPlaylistInterface.h @@ -21,7 +21,7 @@ #define TOMAHAWKARTISTPLAYLISTINTERFACE_H #include -#include +#include #include "Artist.h" #include "Typedefs.h" @@ -80,7 +80,7 @@ private slots: Tomahawk::ModelMode m_mode; Tomahawk::collection_ptr m_collection; - QWeakPointer< Tomahawk::Artist > m_artist; + QPointer< Tomahawk::Artist > m_artist; }; }; // ns diff --git a/src/libtomahawk/FuncTimeout.cpp b/src/libtomahawk/FuncTimeout.cpp index fb4359fdec..3014bc309b 100644 --- a/src/libtomahawk/FuncTimeout.cpp +++ b/src/libtomahawk/FuncTimeout.cpp @@ -27,7 +27,7 @@ using namespace Tomahawk; FuncTimeout::FuncTimeout( int ms, boost::function< void() > func, QObject* besafe ) : m_func( func ) - , m_watch( QWeakPointer< QObject >( besafe ) ) + , m_watch( QPointer< QObject >( besafe ) ) { //qDebug() << Q_FUNC_INFO; QTimer::singleShot( ms, this, SLOT( exec() ) ); diff --git a/src/libtomahawk/FuncTimeout.h b/src/libtomahawk/FuncTimeout.h index 83f6f581b0..93b5e025a0 100644 --- a/src/libtomahawk/FuncTimeout.h +++ b/src/libtomahawk/FuncTimeout.h @@ -20,7 +20,7 @@ #define FUNCTIMEOUT_H #include -#include +#include #include "boost/function.hpp" #include "boost/bind.hpp" @@ -51,7 +51,7 @@ public slots: private: boost::function m_func; - QWeakPointer< QObject > m_watch; + QPointer< QObject > m_watch; }; }; // ns diff --git a/src/libtomahawk/GlobalActionManager.h b/src/libtomahawk/GlobalActionManager.h index 643832b5f3..9da83d216d 100644 --- a/src/libtomahawk/GlobalActionManager.h +++ b/src/libtomahawk/GlobalActionManager.h @@ -29,8 +29,6 @@ #include #include #include -#include - /** * Handles global actions such as parsing and creation of links, mime data handling, etc diff --git a/src/libtomahawk/LatchManager.cpp b/src/libtomahawk/LatchManager.cpp index 7ceb3594dc..a329c39c63 100644 --- a/src/libtomahawk/LatchManager.cpp +++ b/src/libtomahawk/LatchManager.cpp @@ -95,7 +95,7 @@ LatchManager::playlistChanged( Tomahawk::playlistinterface_ptr ) // We're current latched, and the user changed playlist, so stop SourcePlaylistInterface* origsourcepi = dynamic_cast< SourcePlaylistInterface* >( m_latchedInterface.data() ); Q_ASSERT( origsourcepi ); - const source_ptr source = origsourcepi->source(); + const source_ptr source = SourceList::instance()->get( origsourcepi->source()->id() ); DatabaseCommand_SocialAction* cmd = new DatabaseCommand_SocialAction(); cmd->setSource( SourceList::instance()->getLocal() ); diff --git a/src/libtomahawk/Pipeline.cpp b/src/libtomahawk/Pipeline.cpp index a974a8e156..dfd7bd07b3 100644 --- a/src/libtomahawk/Pipeline.cpp +++ b/src/libtomahawk/Pipeline.cpp @@ -68,7 +68,7 @@ Pipeline::~Pipeline() m_running = false; // stop script resolvers - foreach ( QWeakPointer< ExternalResolver > r, m_scriptResolvers ) + foreach ( QPointer< ExternalResolver > r, m_scriptResolvers ) if ( !r.isNull() ) r.data()->deleteLater(); @@ -141,7 +141,7 @@ Pipeline::addScriptResolver( const QString& path ) if ( !res ) continue; - m_scriptResolvers << QWeakPointer< ExternalResolver >( res ); + m_scriptResolvers << QPointer< ExternalResolver > ( res ); break; } @@ -153,7 +153,7 @@ Pipeline::addScriptResolver( const QString& path ) void Pipeline::stopScriptResolver( const QString& path ) { - foreach ( QWeakPointer< ExternalResolver > res, m_scriptResolvers ) + foreach ( QPointer< ExternalResolver > res, m_scriptResolvers ) { if ( res.data()->filePath() == path ) res.data()->stop(); @@ -164,8 +164,8 @@ Pipeline::stopScriptResolver( const QString& path ) void Pipeline::removeScriptResolver( const QString& scriptPath ) { - QWeakPointer< ExternalResolver > r; - foreach ( QWeakPointer< ExternalResolver > res, m_scriptResolvers ) + QPointer< ExternalResolver > r; + foreach ( QPointer< ExternalResolver > res, m_scriptResolvers ) { if ( res.isNull() ) continue; @@ -186,7 +186,7 @@ Pipeline::removeScriptResolver( const QString& scriptPath ) ExternalResolver* Pipeline::resolverForPath( const QString& scriptPath ) { - foreach ( QWeakPointer< ExternalResolver > res, m_scriptResolvers ) + foreach ( QPointer< ExternalResolver > res, m_scriptResolvers ) { if ( res.data()->filePath() == scriptPath ) return res.data(); diff --git a/src/libtomahawk/Pipeline.h b/src/libtomahawk/Pipeline.h index f06103bded..a1dcb72587 100644 --- a/src/libtomahawk/Pipeline.h +++ b/src/libtomahawk/Pipeline.h @@ -61,7 +61,7 @@ Q_OBJECT Tomahawk::ExternalResolver* addScriptResolver( const QString& scriptPath ); void stopScriptResolver( const QString& scriptPath ); void removeScriptResolver( const QString& scriptPath ); - QList< QWeakPointer< ExternalResolver > > scriptResolvers() const { return m_scriptResolvers; } + QList< QPointer< ExternalResolver > > scriptResolvers() const { return m_scriptResolvers; } Tomahawk::ExternalResolver* resolverForPath( const QString& scriptPath ); void addResolver( Resolver* r ); @@ -110,7 +110,7 @@ private slots: int decQIDState( const Tomahawk::query_ptr& query ); QList< Resolver* > m_resolvers; - QList< QWeakPointer > m_scriptResolvers; + QList< QPointer > m_scriptResolvers; QList< ResolverFactoryFunc > m_resolverFactories; QMap< QID, bool > m_qidsTimeout; QMap< QID, unsigned int > m_qidsState; diff --git a/src/libtomahawk/PlaylistPlaylistInterface.cpp b/src/libtomahawk/PlaylistPlaylistInterface.cpp index 7809d6915a..490838d524 100644 --- a/src/libtomahawk/PlaylistPlaylistInterface.cpp +++ b/src/libtomahawk/PlaylistPlaylistInterface.cpp @@ -36,7 +36,7 @@ PlaylistPlaylistInterface::PlaylistPlaylistInterface( Tomahawk::Playlist* playli PlaylistPlaylistInterface::~PlaylistPlaylistInterface() { - m_playlist.clear(); + m_playlist = 0; } diff --git a/src/libtomahawk/PlaylistPlaylistInterface.h b/src/libtomahawk/PlaylistPlaylistInterface.h index ff0387ae38..ce5be82e54 100644 --- a/src/libtomahawk/PlaylistPlaylistInterface.h +++ b/src/libtomahawk/PlaylistPlaylistInterface.h @@ -22,7 +22,7 @@ #include #include -#include +#include #include "Typedefs.h" #include "Result.h" @@ -66,7 +66,7 @@ public slots: PlaylistPlaylistInterface(); Q_DISABLE_COPY( PlaylistPlaylistInterface ) - QWeakPointer< Tomahawk::Playlist > m_playlist; + QPointer< Tomahawk::Playlist > m_playlist; result_ptr m_currentItem; }; diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp index 47e5852fc6..62dcc9ee6b 100644 --- a/src/libtomahawk/Query.cpp +++ b/src/libtomahawk/Query.cpp @@ -389,7 +389,7 @@ Query::currentResolver() const int x = m_resolvers.count(); while ( --x ) { - QWeakPointer< Resolver > r = m_resolvers.at( x ); + QPointer< Resolver > r = m_resolvers.at( x ); if ( r.isNull() ) continue; diff --git a/src/libtomahawk/Query.h b/src/libtomahawk/Query.h index dc9899ed21..956152c479 100644 --- a/src/libtomahawk/Query.h +++ b/src/libtomahawk/Query.h @@ -111,7 +111,7 @@ friend class Pipeline; QPair< Tomahawk::source_ptr, unsigned int > playedBy() const; Tomahawk::Resolver* currentResolver() const; - QList< QWeakPointer< Tomahawk::Resolver > > resolvedBy() const { return m_resolvers; } + QList< QPointer< Tomahawk::Resolver > > resolvedBy() const { return m_resolvers; } void setArtist( const QString& artist ) { m_artist = artist; updateSortNames(); } void setComposer( const QString& composer ) { m_composer = composer; updateSortNames(); } @@ -255,7 +255,7 @@ private slots: mutable Tomahawk::album_ptr m_albumPtr; QPair< Tomahawk::source_ptr, unsigned int > m_playedBy; - QList< QWeakPointer< Tomahawk::Resolver > > m_resolvers; + QList< QPointer< Tomahawk::Resolver > > m_resolvers; bool m_saveResultHint; diff --git a/src/libtomahawk/Result.cpp b/src/libtomahawk/Result.cpp index dfd2cbd787..d4c08e7a6a 100644 --- a/src/libtomahawk/Result.cpp +++ b/src/libtomahawk/Result.cpp @@ -117,7 +117,7 @@ Result::onResolverRemoved( Tomahawk::Resolver* resolver ) { if ( m_resolvedBy.data() == resolver ) { - m_resolvedBy.clear(); + m_resolvedBy = 0; emit statusChanged(); } } @@ -384,7 +384,7 @@ Result::resolvedBy() const void Result::setResolvedBy( Tomahawk::Resolver* resolver ) { - m_resolvedBy = QWeakPointer< Tomahawk::Resolver >( resolver ); + m_resolvedBy = QPointer< Tomahawk::Resolver >( resolver ); } diff --git a/src/libtomahawk/Result.h b/src/libtomahawk/Result.h index 3a51430170..18c96632be 100644 --- a/src/libtomahawk/Result.h +++ b/src/libtomahawk/Result.h @@ -141,7 +141,7 @@ private slots: mutable RID m_rid; collection_ptr m_collection; Tomahawk::query_ptr m_query; - QWeakPointer< Tomahawk::Resolver > m_resolvedBy; + QPointer< Tomahawk::Resolver > m_resolvedBy; Tomahawk::artist_ptr m_artist; Tomahawk::album_ptr m_album; diff --git a/src/libtomahawk/SourcePlaylistInterface.cpp b/src/libtomahawk/SourcePlaylistInterface.cpp index 444ab1d229..1688a6cab7 100644 --- a/src/libtomahawk/SourcePlaylistInterface.cpp +++ b/src/libtomahawk/SourcePlaylistInterface.cpp @@ -46,7 +46,7 @@ SourcePlaylistInterface::SourcePlaylistInterface( Tomahawk::Source* source, Toma SourcePlaylistInterface::~SourcePlaylistInterface() { - m_source.clear(); + m_source = 0; } @@ -146,7 +146,7 @@ SourcePlaylistInterface::tracks() const } -QWeakPointer< Tomahawk::Source > +QPointer< Tomahawk::Source > SourcePlaylistInterface::source() const { return m_source; diff --git a/src/libtomahawk/SourcePlaylistInterface.h b/src/libtomahawk/SourcePlaylistInterface.h index 4d0193afe2..38fb20cad8 100644 --- a/src/libtomahawk/SourcePlaylistInterface.h +++ b/src/libtomahawk/SourcePlaylistInterface.h @@ -21,7 +21,7 @@ #define TOMAHAWKSOURCEPLAYLISTINTERFACE_H #include -#include +#include #include "Typedefs.h" #include "PlaylistInterface.h" @@ -65,7 +65,7 @@ Q_OBJECT virtual bool shuffled() const { return false; } - virtual QWeakPointer< Tomahawk::Source > source() const; + virtual QPointer< Tomahawk::Source > source() const; virtual void reset(); @@ -79,7 +79,7 @@ private slots: void resolvingFinished( bool hasResults ); private: - QWeakPointer< Tomahawk::Source > m_source; + QPointer< Tomahawk::Source > m_source; mutable Tomahawk::result_ptr m_currentItem; mutable bool m_gotNextItem; }; diff --git a/src/libtomahawk/Typedefs.h b/src/libtomahawk/Typedefs.h index 763ae8d324..ebccd41fba 100644 --- a/src/libtomahawk/Typedefs.h +++ b/src/libtomahawk/Typedefs.h @@ -21,9 +21,11 @@ #define TYPEDEFS_H #include +#include #include #include #include + #include //template class QSharedPointer; @@ -203,7 +205,7 @@ namespace Tomahawk typedef QHash< QString, QString > InfoStringHash; typedef QPair< QVariantMap, QVariant > PushInfoPair; - typedef QWeakPointer< InfoPlugin > InfoPluginPtr; + typedef QPointer< InfoPlugin > InfoPluginPtr; } }; // ns diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index 387f9eb536..9356e86972 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -739,7 +739,7 @@ ViewManager::currentPage() const Tomahawk::playlist_ptr ViewManager::playlistForInterface( Tomahawk::playlistinterface_ptr interface ) const { - foreach ( QWeakPointer view, m_playlistViews.values() ) + foreach ( QPointer view, m_playlistViews.values() ) { if ( !view.isNull() && view.data()->playlistInterface() == interface ) { @@ -754,7 +754,7 @@ ViewManager::playlistForInterface( Tomahawk::playlistinterface_ptr interface ) c Tomahawk::dynplaylist_ptr ViewManager::dynamicPlaylistForInterface( Tomahawk::playlistinterface_ptr interface ) const { - foreach ( QWeakPointer view, m_dynamicWidgets.values() ) + foreach ( QPointer view, m_dynamicWidgets.values() ) { if ( !view.isNull() && view.data()->playlistInterface() == interface ) { diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h index d42c25b34d..d8466a6013 100644 --- a/src/libtomahawk/ViewManager.h +++ b/src/libtomahawk/ViewManager.h @@ -188,13 +188,13 @@ private slots: QList< Tomahawk::collection_ptr > m_superCollections; - QHash< Tomahawk::dynplaylist_ptr, QWeakPointer > m_dynamicWidgets; - QHash< Tomahawk::collection_ptr, QWeakPointer > m_treeViews; - QHash< Tomahawk::artist_ptr, QWeakPointer > m_artistViews; - QHash< Tomahawk::album_ptr, QWeakPointer > m_albumViews; - QHash< Tomahawk::query_ptr, QWeakPointer > m_trackViews; - QHash< Tomahawk::playlist_ptr, QWeakPointer > m_playlistViews; - QHash< Tomahawk::source_ptr, QWeakPointer > m_sourceViews; + QHash< Tomahawk::dynplaylist_ptr, QPointer > m_dynamicWidgets; + QHash< Tomahawk::collection_ptr, QPointer > m_treeViews; + QHash< Tomahawk::artist_ptr, QPointer > m_artistViews; + QHash< Tomahawk::album_ptr, QPointer > m_albumViews; + QHash< Tomahawk::query_ptr, QPointer > m_trackViews; + QHash< Tomahawk::playlist_ptr, QPointer > m_playlistViews; + QHash< Tomahawk::source_ptr, QPointer > m_sourceViews; QList m_pageHistoryBack; QList m_pageHistoryFwd; diff --git a/src/libtomahawk/accounts/ResolverAccount.cpp b/src/libtomahawk/accounts/ResolverAccount.cpp index 26b38eea33..caf25c4ebf 100644 --- a/src/libtomahawk/accounts/ResolverAccount.cpp +++ b/src/libtomahawk/accounts/ResolverAccount.cpp @@ -127,7 +127,7 @@ ResolverAccount::hookupResolver() { tDebug() << "Hooking up resolver:" << configuration().value( "path" ).toString() << enabled(); - m_resolver = QWeakPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( configuration().value( "path" ).toString() ) ) ); + m_resolver = QPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( configuration().value( "path" ).toString() ) ) ); connect( m_resolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); // What resolver do we have here? Should only be types that are 'real' resolvers diff --git a/src/libtomahawk/accounts/ResolverAccount.h b/src/libtomahawk/accounts/ResolverAccount.h index e977931f55..83b005c76b 100644 --- a/src/libtomahawk/accounts/ResolverAccount.h +++ b/src/libtomahawk/accounts/ResolverAccount.h @@ -22,6 +22,8 @@ #include "accounts/Account.h" #include "DllMacro.h" +#include + namespace Tomahawk { class ExternalResolverGui; @@ -93,7 +95,7 @@ private slots: void hookupResolver(); - QWeakPointer m_resolver; + QPointer m_resolver; private: void init( const QString& path ); diff --git a/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp b/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp index 5712d692c2..54d1cad939 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp @@ -141,7 +141,7 @@ QWidget* LastFmAccount::configurationWidget() { if ( m_configWidget.isNull() ) - m_configWidget = QWeakPointer( new LastFmConfig( this ) ); + m_configWidget = QPointer( new LastFmConfig( this ) ); return m_configWidget.data(); } @@ -165,7 +165,7 @@ InfoPluginPtr LastFmAccount::infoPlugin() { if ( m_infoPlugin.isNull() ) - m_infoPlugin = QWeakPointer< LastFmInfoPlugin >( new LastFmInfoPlugin( this ) ); + m_infoPlugin = QPointer< LastFmInfoPlugin >( new LastFmInfoPlugin( this ) ); return InfoPluginPtr( m_infoPlugin.data() ); } @@ -286,7 +286,7 @@ LastFmAccount::hookupResolver() const AtticaManager::Resolver data = AtticaManager::instance()->resolverData( res.id() ); - m_resolver = QWeakPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( data.scriptPath ) ) ); + m_resolver = QPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( data.scriptPath ) ) ); connect( m_resolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); } diff --git a/src/libtomahawk/accounts/lastfm/LastFmAccount.h b/src/libtomahawk/accounts/lastfm/LastFmAccount.h index 2be052cb0f..50d9fe8f0b 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmAccount.h +++ b/src/libtomahawk/accounts/lastfm/LastFmAccount.h @@ -104,9 +104,9 @@ private slots: private: void hookupResolver(); - QWeakPointer m_resolver; - QWeakPointer m_infoPlugin; - QWeakPointer m_configWidget; + QPointer m_resolver; + QPointer m_infoPlugin; + QPointer m_configWidget; }; } diff --git a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h index a6bce22c24..3df617da69 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h +++ b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h @@ -87,7 +87,7 @@ protected slots: void dataError( Tomahawk::InfoSystem::InfoRequestData requestData ); - QWeakPointer< Accounts::LastFmAccount > m_account; + QPointer< Accounts::LastFmAccount > m_account; QList parseTrackList( QNetworkReply* reply ); lastfm::MutableTrack m_track; diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index 99701a7645..08c5308825 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -217,7 +217,7 @@ SpotifyAccount::hookupResolver() // Since the resolver in 0.4.x used an incompatible version of kdsingleappguard, we can't auto-kill old resolvers on the // 0.4.x->0.5.x upgrade. So we do it manually for a while killExistingResolvers(); - m_spotifyResolver = QWeakPointer< ScriptResolver >( qobject_cast< ScriptResolver* >( Pipeline::instance()->addScriptResolver( path ) ) ); + m_spotifyResolver = QPointer< ScriptResolver >( qobject_cast< ScriptResolver* >( Pipeline::instance()->addScriptResolver( path ) ) ); m_spotifyResolver.data()->setIcon( TomahawkUtils::defaultPixmap( TomahawkUtils::SpotifyIcon ) ); connect( m_spotifyResolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); @@ -352,7 +352,7 @@ SpotifyAccount::infoPlugin() { if ( m_infoPlugin.isNull() ) { - m_infoPlugin = QWeakPointer< InfoSystem::SpotifyInfoPlugin >( new InfoSystem::SpotifyInfoPlugin( this ) ); + m_infoPlugin = QPointer< InfoSystem::SpotifyInfoPlugin >( new InfoSystem::SpotifyInfoPlugin( this ) ); } return InfoSystem::InfoPluginPtr( m_infoPlugin.data() ); @@ -1112,7 +1112,7 @@ SpotifyAccount::configurationWidget() { if ( m_configWidget.isNull() ) { - m_configWidget = QWeakPointer< SpotifyAccountConfig >( new SpotifyAccountConfig( this ) ); + m_configWidget = QPointer< SpotifyAccountConfig >( new SpotifyAccountConfig( this ) ); connect( m_configWidget.data(), SIGNAL( login( QString,QString ) ), this, SLOT( login( QString,QString ) ) ); connect( m_configWidget.data(), SIGNAL( logout() ), this, SLOT( logout() ) ); m_configWidget.data()->setPlaylists( m_allSpotifyPlaylists.values() ); @@ -1141,7 +1141,7 @@ SpotifyAccount::aboutWidget() l->addWidget( pm ); l->addWidget( text ); w->setLayout( l ); - m_aboutWidget = QWeakPointer< QWidget >( w ); + m_aboutWidget = QPointer< QWidget >( w ); } return m_aboutWidget.data(); diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.h b/src/libtomahawk/accounts/spotify/SpotifyAccount.h index 59527afe25..0e2f7041a9 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.h @@ -163,10 +163,10 @@ private slots: SpotifyPlaylistUpdater* getPlaylistUpdater( QObject* sender ); static SpotifyAccount* s_instance; - QWeakPointer m_configWidget; - QWeakPointer m_aboutWidget; - QWeakPointer m_spotifyResolver; - QWeakPointer< InfoSystem::SpotifyInfoPlugin > m_infoPlugin; + QPointer m_configWidget; + QPointer m_aboutWidget; + QPointer m_spotifyResolver; + QPointer< InfoSystem::SpotifyInfoPlugin > m_infoPlugin; QMap > m_qidToSlotMap; QMap m_qidToExtraData; diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp index 60872a9cc4..150a19ffc1 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp @@ -22,13 +22,14 @@ #include "utils/Closure.h" #include "utils/Logger.h" + using namespace Tomahawk; using namespace Tomahawk::InfoSystem; SpotifyInfoPlugin::SpotifyInfoPlugin( Accounts::SpotifyAccount* account ) : InfoPlugin() - , m_account( QWeakPointer< Accounts::SpotifyAccount >( account ) ) + , m_account( QPointer< Accounts::SpotifyAccount >( account ) ) { if ( !m_account.isNull() ) { diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h index 26757cac24..4383df5b18 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h @@ -22,7 +22,7 @@ #include "infosystem/InfoSystem.h" #include "DllMacro.h" -#include +#include class QNetworkReply; @@ -62,7 +62,8 @@ private slots: void dataError( InfoRequestData ); void trackListResult( const QStringList& trackNameList, const Tomahawk::InfoSystem::InfoRequestData& requestData ); void sendLoveSong( const InfoType type, QVariant input ); - QWeakPointer< Tomahawk::Accounts::SpotifyAccount > m_account; + + QPointer< Tomahawk::Accounts::SpotifyAccount > m_account; }; } diff --git a/src/libtomahawk/accounts/spotify/SpotifyPlaylistUpdater.h b/src/libtomahawk/accounts/spotify/SpotifyPlaylistUpdater.h index bcd7c7f36a..df1320a3da 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyPlaylistUpdater.h +++ b/src/libtomahawk/accounts/spotify/SpotifyPlaylistUpdater.h @@ -109,7 +109,7 @@ private slots: static QVariant queryToVariant( const Tomahawk::query_ptr& query ); static QList< Tomahawk::query_ptr > variantToQueries( const QVariantList& list ); - QWeakPointer m_spotify; + QPointer m_spotify; QString m_latestRev, m_spotifyId; QList< Tomahawk::plentry_ptr > m_waitingForIds; @@ -137,7 +137,7 @@ class DLLEXPORT SpotifyUpdaterFactory : public Tomahawk::PlaylistUpdaterFactory virtual QString type() const { return "spotify"; } private: - QWeakPointer m_account; + QPointer m_account; }; #endif // SPOTIFYPLAYLISTUPDATER_H diff --git a/src/libtomahawk/database/Database.cpp b/src/libtomahawk/database/Database.cpp index a730724736..016702bfdd 100644 --- a/src/libtomahawk/database/Database.cpp +++ b/src/libtomahawk/database/Database.cpp @@ -64,7 +64,7 @@ Database::Database( const QString& dbname, QObject* parent ) while ( m_workerThreads.count() < m_maxConcurrentThreads ) { - QWeakPointer< DatabaseWorkerThread > workerThread( new DatabaseWorkerThread( this, false ) ); + QPointer< DatabaseWorkerThread > workerThread( new DatabaseWorkerThread( this, false ) ); Q_ASSERT( workerThread ); workerThread.data()->start(); m_workerThreads << workerThread; @@ -82,7 +82,7 @@ Database::~Database() if ( m_workerRW ) m_workerRW.data()->quit(); - foreach ( QWeakPointer< DatabaseWorkerThread > workerThread, m_workerThreads ) + foreach ( QPointer< DatabaseWorkerThread > workerThread, m_workerThreads ) { if ( workerThread && workerThread.data()->worker() ) workerThread.data()->quit(); @@ -93,7 +93,7 @@ Database::~Database() m_workerRW.data()->wait( 60000 ); delete m_workerRW.data(); } - foreach ( QWeakPointer< DatabaseWorkerThread > workerThread, m_workerThreads ) + foreach ( QPointer< DatabaseWorkerThread > workerThread, m_workerThreads ) { if ( workerThread ) { @@ -140,8 +140,8 @@ Database::enqueue( const QSharedPointer& lc ) { // find thread for commandname with lowest amount of outstanding jobs and enqueue job int busyThreads = 0; - QWeakPointer< DatabaseWorkerThread > workerThread; - QWeakPointer< DatabaseWorker > happyWorker; + QPointer< DatabaseWorkerThread > workerThread; + QPointer< DatabaseWorker > happyWorker; for ( int i = 0; i < m_workerThreads.count(); i++ ) { workerThread = m_workerThreads.at( i ); diff --git a/src/libtomahawk/database/Database.h b/src/libtomahawk/database/Database.h index f499e8b987..73b2ea3686 100644 --- a/src/libtomahawk/database/Database.h +++ b/src/libtomahawk/database/Database.h @@ -77,8 +77,8 @@ private slots: bool m_ready; DatabaseImpl* m_impl; - QWeakPointer< DatabaseWorkerThread > m_workerRW; - QList< QWeakPointer< DatabaseWorkerThread > > m_workerThreads; + QPointer< DatabaseWorkerThread > m_workerRW; + QList< QPointer< DatabaseWorkerThread > > m_workerThreads; IdThreadWorker* m_idWorker; int m_maxConcurrentThreads; diff --git a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.h b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.h index 6353aeffbe..90537b9988 100644 --- a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.h +++ b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.h @@ -21,6 +21,7 @@ #include "DatabaseCommand.h" #include "DllMacro.h" +#include class IndexingJobItem; @@ -36,7 +37,7 @@ Q_OBJECT virtual void exec( DatabaseImpl* db ); private: - QWeakPointer m_statusJob; + QPointer m_statusJob; }; #endif // DATABASECOMMAND_UPDATESEARCHINDEX_H diff --git a/src/libtomahawk/database/DatabaseWorker.cpp b/src/libtomahawk/database/DatabaseWorker.cpp index 48fee65b9c..0e9c010444 100644 --- a/src/libtomahawk/database/DatabaseWorker.cpp +++ b/src/libtomahawk/database/DatabaseWorker.cpp @@ -47,8 +47,8 @@ void DatabaseWorkerThread::run() { tDebug() << Q_FUNC_INFO << "DatabaseWorkerThread starting..."; - m_worker = QWeakPointer< DatabaseWorker >( new DatabaseWorker( m_db, m_mutates ) ); - exec(); + m_worker = QPointer< DatabaseWorker >( new DatabaseWorker( m_db, m_mutates ) ); + exec(); tDebug() << Q_FUNC_INFO << "DatabaseWorkerThread finishing..."; if ( m_worker ) delete m_worker.data(); @@ -60,7 +60,7 @@ DatabaseWorkerThread::~DatabaseWorkerThread() } -QWeakPointer< DatabaseWorker > +QPointer< DatabaseWorker > DatabaseWorkerThread::worker() const { return m_worker; diff --git a/src/libtomahawk/database/DatabaseWorker.h b/src/libtomahawk/database/DatabaseWorker.h index cccfddf589..6f2caf12da 100644 --- a/src/libtomahawk/database/DatabaseWorker.h +++ b/src/libtomahawk/database/DatabaseWorker.h @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include @@ -71,13 +71,13 @@ Q_OBJECT DatabaseWorkerThread( Database* db, bool mutates ); ~DatabaseWorkerThread(); - QWeakPointer< DatabaseWorker > worker() const; - + QPointer< DatabaseWorker > worker() const; + protected: void run(); private: - QWeakPointer< DatabaseWorker > m_worker; + QPointer< DatabaseWorker > m_worker; Database* m_db; bool m_mutates; }; diff --git a/src/libtomahawk/filemetadata/MusicScanner.cpp b/src/libtomahawk/filemetadata/MusicScanner.cpp index 2a2fd65e3f..5f90dfcbbc 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.cpp +++ b/src/libtomahawk/filemetadata/MusicScanner.cpp @@ -184,7 +184,7 @@ MusicScanner::scan() m_dirListerThreadController = new QThread( this ); - m_dirLister = QWeakPointer< DirLister >( new DirLister( m_paths ) ); + m_dirLister = QPointer< DirLister >( new DirLister( m_paths ) ); m_dirLister.data()->moveToThread( m_dirListerThreadController ); connect( m_dirLister.data(), SIGNAL( fileToScan( QFileInfo ) ), diff --git a/src/libtomahawk/filemetadata/MusicScanner.h b/src/libtomahawk/filemetadata/MusicScanner.h index 7c95f79ec8..029d52852e 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.h +++ b/src/libtomahawk/filemetadata/MusicScanner.h @@ -37,7 +37,6 @@ #include #include #include -#include #include // descend dir tree comparing dir mtimes to last known mtime @@ -109,7 +108,7 @@ private slots: private: void scanFilePaths(); - + ScanManager::ScanMode m_scanMode; QStringList m_paths; QMap m_ext2mime; // eg: mp3 -> audio/mpeg @@ -125,7 +124,7 @@ private slots: QVariantList m_filesToDelete; quint32 m_batchsize; - QWeakPointer< DirLister > m_dirLister; + QPointer< DirLister > m_dirLister; QThread* m_dirListerThreadController; }; diff --git a/src/libtomahawk/filemetadata/ScanManager.cpp b/src/libtomahawk/filemetadata/ScanManager.cpp index ec0f3ae28a..4feeaf55f9 100644 --- a/src/libtomahawk/filemetadata/ScanManager.cpp +++ b/src/libtomahawk/filemetadata/ScanManager.cpp @@ -255,7 +255,7 @@ ScanManager::runScan() if ( m_musicScannerThreadController && m_scanner.isNull() ) { - m_scanner = QWeakPointer< MusicScanner >( new MusicScanner( m_currScanMode, paths ) ); + m_scanner = QPointer< MusicScanner >( new MusicScanner( m_currScanMode, paths ) ); m_scanner.data()->moveToThread( m_musicScannerThreadController ); connect( m_scanner.data(), SIGNAL( finished() ), SLOT( scannerFinished() ) ); m_musicScannerThreadController->start( QThread::IdlePriority ); diff --git a/src/libtomahawk/filemetadata/ScanManager.h b/src/libtomahawk/filemetadata/ScanManager.h index 1c4a5105d4..564b64f8de 100644 --- a/src/libtomahawk/filemetadata/ScanManager.h +++ b/src/libtomahawk/filemetadata/ScanManager.h @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include class MusicScanner; @@ -72,7 +72,7 @@ private slots: static ScanManager* s_instance; ScanMode m_currScanMode; - QWeakPointer< MusicScanner > m_scanner; + QPointer< MusicScanner > m_scanner; QThread* m_musicScannerThreadController; QSet< QString > m_currScannerPaths; QStringList m_cachedScannerDirs; diff --git a/src/libtomahawk/infosystem/InfoSystem.cpp b/src/libtomahawk/infosystem/InfoSystem.cpp index af5a06b254..dcfd8aa2f0 100644 --- a/src/libtomahawk/infosystem/InfoSystem.cpp +++ b/src/libtomahawk/infosystem/InfoSystem.cpp @@ -294,13 +294,13 @@ InfoSystem::removeInfoPlugin( Tomahawk::InfoSystem::InfoPluginPtr plugin ) } -QWeakPointer< QThread > +QPointer< QThread > InfoSystem::workerThread() const { if ( m_infoSystemWorkerThreadController->isRunning() && m_infoSystemWorkerThreadController->worker() ) - return QWeakPointer< QThread >( m_infoSystemWorkerThreadController->worker()->thread() ); + return QPointer< QThread >( m_infoSystemWorkerThreadController->worker()->thread() ); - return QWeakPointer< QThread >(); + return QPointer< QThread >(); } @@ -320,7 +320,7 @@ InfoSystemCacheThread::~InfoSystemCacheThread() void InfoSystemCacheThread::InfoSystemCacheThread::run() { - m_cache = QWeakPointer< InfoSystemCache >( new InfoSystemCache() ); + m_cache = QPointer< InfoSystemCache >( new InfoSystemCache() ); exec(); if ( !m_cache.isNull() ) delete m_cache.data(); @@ -350,7 +350,7 @@ InfoSystemWorkerThread::~InfoSystemWorkerThread() void InfoSystemWorkerThread::InfoSystemWorkerThread::run() { - m_worker = QWeakPointer< InfoSystemWorker >( new InfoSystemWorker() ); + m_worker = QPointer< InfoSystemWorker >( new InfoSystemWorker() ); exec(); if( !m_worker.isNull() ) delete m_worker.data(); diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index b5376c7989..08fa9cf7b7 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include @@ -153,7 +153,7 @@ class InfoSystemCacheThread : public QThread InfoSystemCache* cache() const; private: - QWeakPointer< InfoSystemCache > m_cache; + QPointer< InfoSystemCache > m_cache; }; @@ -169,7 +169,7 @@ class InfoSystemWorkerThread : public QThread InfoSystemWorker* worker() const; private: - QWeakPointer< InfoSystemWorker > m_worker; + QPointer< InfoSystemWorker > m_worker; }; @@ -189,7 +189,7 @@ class DLLEXPORT InfoSystem : public QObject bool pushInfo( InfoPushData pushData ); bool pushInfo( const QString &caller, const InfoTypeMap &input, const PushInfoFlags pushFlags ); - QWeakPointer< QThread > workerThread() const; + QPointer< QThread > workerThread() const; public slots: // InfoSystem takes ownership of InfoPlugins diff --git a/src/libtomahawk/infosystem/InfoSystemWorker.h b/src/libtomahawk/infosystem/InfoSystemWorker.h index 930f0d2e49..e19bd0179d 100644 --- a/src/libtomahawk/infosystem/InfoSystemWorker.h +++ b/src/libtomahawk/infosystem/InfoSystemWorker.h @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/src/libtomahawk/jobview/LatchedStatusItem.cpp b/src/libtomahawk/jobview/LatchedStatusItem.cpp index c87e586323..3759cd730d 100644 --- a/src/libtomahawk/jobview/LatchedStatusItem.cpp +++ b/src/libtomahawk/jobview/LatchedStatusItem.cpp @@ -92,7 +92,7 @@ LatchedStatusManager::sourceOffline() if ( m_jobs.contains( s->userName() ) ) { - QWeakPointer< LatchedStatusItem> job = m_jobs.take( s->userName() ).data(); + QPointer< LatchedStatusItem> job = m_jobs.take( s->userName() ).data(); if ( !job.isNull() ) job.data()->stop(); } @@ -107,7 +107,7 @@ LatchedStatusManager::latchedOff( const Tomahawk::source_ptr& from, const Tomaha if ( to->isLocal() && m_jobs.contains( from->userName() ) ) { - QWeakPointer< LatchedStatusItem > item = m_jobs.take( from->userName() ); + QPointer< LatchedStatusItem > item = m_jobs.take( from->userName() ); if ( !item.isNull() ) item.data()->stop(); } diff --git a/src/libtomahawk/jobview/LatchedStatusItem.h b/src/libtomahawk/jobview/LatchedStatusItem.h index 5d6560007a..3509e24668 100644 --- a/src/libtomahawk/jobview/LatchedStatusItem.h +++ b/src/libtomahawk/jobview/LatchedStatusItem.h @@ -61,7 +61,7 @@ private slots: void sourceOffline(); private: - QHash< QString, QWeakPointer< LatchedStatusItem > > m_jobs; + QHash< QString, QPointer< LatchedStatusItem > > m_jobs; }; #endif // LATCHEDSTATUSITEM_H diff --git a/src/libtomahawk/jobview/PipelineStatusItem.cpp b/src/libtomahawk/jobview/PipelineStatusItem.cpp index d343e88b4b..874e7d3186 100644 --- a/src/libtomahawk/jobview/PipelineStatusItem.cpp +++ b/src/libtomahawk/jobview/PipelineStatusItem.cpp @@ -101,7 +101,7 @@ PipelineStatusManager::resolving( const Tomahawk::query_ptr& p ) if ( m_curItem.isNull() ) { // No current query item and we're resolving something, so show it - m_curItem = QWeakPointer< PipelineStatusItem >( new PipelineStatusItem( p ) ); + m_curItem = QPointer< PipelineStatusItem >( new PipelineStatusItem( p ) ); JobStatusView::instance()->model()->addJob( m_curItem.data() ); } } diff --git a/src/libtomahawk/jobview/PipelineStatusItem.h b/src/libtomahawk/jobview/PipelineStatusItem.h index 5a37a5d778..75ebef3487 100644 --- a/src/libtomahawk/jobview/PipelineStatusItem.h +++ b/src/libtomahawk/jobview/PipelineStatusItem.h @@ -23,6 +23,7 @@ #include "Query.h" #include +#include class PipelineStatusItem : public JobStatusItem { @@ -58,7 +59,7 @@ private slots: void resolving( const Tomahawk::query_ptr& p ); private: - QWeakPointer m_curItem; + QPointer m_curItem; }; diff --git a/src/libtomahawk/jobview/TransferStatusItem.cpp b/src/libtomahawk/jobview/TransferStatusItem.cpp index ea6fa319d1..0bb9f5ef82 100644 --- a/src/libtomahawk/jobview/TransferStatusItem.cpp +++ b/src/libtomahawk/jobview/TransferStatusItem.cpp @@ -30,7 +30,7 @@ TransferStatusItem::TransferStatusItem( TransferStatusManager* p, StreamConnection* sc ) : m_parent( p ) - , m_stream( QWeakPointer< StreamConnection >( sc ) ) + , m_stream( QPointer< StreamConnection >( sc ) ) { if ( m_stream.data()->type() == StreamConnection::RECEIVING ) m_type = "receive"; diff --git a/src/libtomahawk/jobview/TransferStatusItem.h b/src/libtomahawk/jobview/TransferStatusItem.h index 4b916a72b0..ecbb652d65 100644 --- a/src/libtomahawk/jobview/TransferStatusItem.h +++ b/src/libtomahawk/jobview/TransferStatusItem.h @@ -22,6 +22,8 @@ #include "JobStatusItem.h" #include +#include + class StreamConnection; @@ -58,7 +60,7 @@ private slots: private: TransferStatusManager* m_parent; QString m_type, m_main, m_right; - QWeakPointer< StreamConnection > m_stream; + QPointer< StreamConnection > m_stream; }; #endif // TRANSFERSTATUSITEM_H diff --git a/src/libtomahawk/network/PortFwdThread.cpp b/src/libtomahawk/network/PortFwdThread.cpp index c42cf0ad5a..e1fcfbaf17 100644 --- a/src/libtomahawk/network/PortFwdThread.cpp +++ b/src/libtomahawk/network/PortFwdThread.cpp @@ -45,7 +45,7 @@ PortFwdThread::~PortFwdThread() void PortFwdThread::run() { - m_worker = QWeakPointer< PortFwdWorker >( new PortFwdWorker( m_port ) ); + m_worker = QPointer< PortFwdWorker >( new PortFwdWorker( m_port ) ); Q_ASSERT( m_worker ); connect( m_worker.data(), SIGNAL( externalAddressDetected( QHostAddress, unsigned int ) ), this, SIGNAL( externalAddressDetected( QHostAddress, unsigned int ) ) ); QTimer::singleShot( 0, m_worker.data(), SLOT( work() ) ); @@ -62,7 +62,7 @@ PortFwdThread::run() } -QWeakPointer< PortFwdWorker > +QPointer< PortFwdWorker > PortFwdThread::worker() const { return m_worker; diff --git a/src/libtomahawk/network/PortFwdThread.h b/src/libtomahawk/network/PortFwdThread.h index 093065ff7d..cbcdb1e176 100644 --- a/src/libtomahawk/network/PortFwdThread.h +++ b/src/libtomahawk/network/PortFwdThread.h @@ -22,7 +22,7 @@ #include #include #include -#include +#include class Portfwd; @@ -59,7 +59,7 @@ Q_OBJECT explicit PortFwdThread( unsigned int port ); ~PortFwdThread(); - QWeakPointer< PortFwdWorker > worker() const; + QPointer< PortFwdWorker > worker() const; signals: void externalAddressDetected( QHostAddress ha, unsigned int port ); @@ -68,7 +68,7 @@ Q_OBJECT void run(); private: - QWeakPointer< PortFwdWorker > m_worker; + QPointer< PortFwdWorker > m_worker; unsigned int m_port; }; diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index 148f0c1738..48ec76f261 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -150,7 +150,7 @@ Servent::startListening( QHostAddress ha, bool upnp, int port ) } // TODO check if we have a public/internet IP on this machine directly tLog() << "External address mode set to upnp..."; - m_portfwd = QWeakPointer< PortFwdThread >( new PortFwdThread( m_port ) ); + m_portfwd = QPointer< PortFwdThread >( new PortFwdThread( m_port ) ); Q_ASSERT( m_portfwd ); connect( m_portfwd.data(), SIGNAL( externalAddressDetected( QHostAddress, unsigned int ) ), SLOT( setExternalAddress( QHostAddress, unsigned int ) ) ); @@ -243,7 +243,7 @@ Servent::setExternalAddress( QHostAddress ha, unsigned int port ) void Servent::registerOffer( const QString& key, Connection* conn ) { - m_offers[key] = QWeakPointer(conn); + m_offers[key] = QPointer(conn); } @@ -304,7 +304,7 @@ void Servent::readyRead() { Q_ASSERT( this->thread() == QThread::currentThread() ); - QWeakPointer< QTcpSocketExtra > sock = (QTcpSocketExtra*)sender(); + QPointer< QTcpSocketExtra > sock = (QTcpSocketExtra*)sender(); if( sock.isNull() || sock.data()->_disowned ) { @@ -667,7 +667,7 @@ Servent::claimOffer( ControlConnection* cc, const QString &nodeid, const QString if( m_offers.contains( key ) ) { - QWeakPointer conn = m_offers.value( key ); + QPointer conn = m_offers.value( key ); if( conn.isNull() ) { // This can happen if it's a streamconnection, but the audioengine has diff --git a/src/libtomahawk/network/Servent.h b/src/libtomahawk/network/Servent.h index 8fa679a6de..7608da544c 100644 --- a/src/libtomahawk/network/Servent.h +++ b/src/libtomahawk/network/Servent.h @@ -64,7 +64,7 @@ Q_OBJECT QTimer::singleShot( AUTH_TIMEOUT, this, SLOT( authTimeout() ) ) ; } - QWeakPointer _conn; + QPointer _conn; bool _outbound; bool _disowned; msg_ptr _msg; @@ -159,7 +159,7 @@ private slots: QJson::Parser parser; QList< ControlConnection* > m_controlconnections; // canonical list of authed peers - QMap< QString, QWeakPointer< Connection > > m_offers; + QMap< QString, QPointer< Connection > > m_offers; QStringList m_connectedNodes; int m_port, m_externalPort; @@ -174,7 +174,7 @@ private slots: QMap< QString,boost::function< QSharedPointer< QIODevice >(Tomahawk::result_ptr) > > m_iofactories; - QWeakPointer< PortFwdThread > m_portfwd; + QPointer< PortFwdThread > m_portfwd; static Servent* s_instance; }; diff --git a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp index 218e070896..86d1cf2890 100644 --- a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp @@ -46,7 +46,7 @@ PlayableProxyModelPlaylistInterface::PlayableProxyModelPlaylistInterface( Playab PlayableProxyModelPlaylistInterface::~PlayableProxyModelPlaylistInterface() { tDebug() << Q_FUNC_INFO; - m_proxyModel.clear(); + m_proxyModel = 0; } diff --git a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h index f134d2293e..1f57a1db29 100644 --- a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h +++ b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.h @@ -20,13 +20,14 @@ #ifndef TRACKPROXYMODELPLAYLISTINTERFACE_H #define TRACKPROXYMODELPLAYLISTINTERFACE_H -#include - #include "PlaylistInterface.h" #include "playlist/PlayableModel.h" #include "DllMacro.h" +#include +#include + class PlayableProxyModel; namespace Tomahawk { @@ -65,7 +66,7 @@ private slots: void onCurrentIndexChanged(); protected: - QWeakPointer< PlayableProxyModel > m_proxyModel; + QPointer< PlayableProxyModel > m_proxyModel; PlaylistModes::RepeatMode m_repeatMode; bool m_shuffled; diff --git a/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.cpp b/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.cpp index 079b4821f3..cfe4e6a088 100644 --- a/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.cpp +++ b/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.cpp @@ -43,7 +43,7 @@ TreeProxyModelPlaylistInterface::TreeProxyModelPlaylistInterface( TreeProxyModel TreeProxyModelPlaylistInterface::~TreeProxyModelPlaylistInterface() { - m_proxyModel.clear(); + m_proxyModel = 0; } diff --git a/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.h b/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.h index b026962399..f87d7f95d0 100644 --- a/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.h +++ b/src/libtomahawk/playlist/TreeProxyModelPlaylistInterface.h @@ -67,7 +67,7 @@ public slots: virtual void setShuffled( bool enabled ) { m_shuffled = enabled; emit shuffleModeChanged( enabled ); } private: - QWeakPointer< TreeProxyModel > m_proxyModel; + QPointer< TreeProxyModel > m_proxyModel; PlaylistModes::RepeatMode m_repeatMode; bool m_shuffled; diff --git a/src/libtomahawk/playlist/dynamic/database/DatabaseControl.h b/src/libtomahawk/playlist/dynamic/database/DatabaseControl.h index 257b50c14e..dca17b0c9f 100644 --- a/src/libtomahawk/playlist/dynamic/database/DatabaseControl.h +++ b/src/libtomahawk/playlist/dynamic/database/DatabaseControl.h @@ -62,8 +62,8 @@ namespace Tomahawk // utility void calculateSummary(); - QWeakPointer< QWidget > m_input; - QWeakPointer< QWidget > m_match; + QPointer< QWidget > m_input; + QPointer< QWidget > m_match; QString m_matchData; QString m_matchString; QString m_summary; diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index 2320c4dfe0..158087b557 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -181,8 +181,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); input->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( input ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( input ); m_data.first = m_currentType; } else if( selectedType() == "Artist Description" ) { m_currentType = Echonest::DynamicPlaylist::Description; @@ -200,8 +200,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); input->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( input ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( input ); m_data.first = m_currentType; } else if( selectedType() == "User Radio" ) { m_currentType = Echonest::DynamicPlaylist::SourceCatalog; @@ -229,8 +229,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); combo->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( combo ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( combo ); } else if( selectedType() == "Song" ) { m_currentType = Echonest::DynamicPlaylist::SongId; @@ -248,8 +248,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); input->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( input ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( input ); m_data.first = m_currentType; } else if( selectedType() == "Variety" ) { m_currentType = Echonest::DynamicPlaylist::Variety; @@ -269,8 +269,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); input->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( input ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( input ); m_data.first = m_currentType; } else if( selectedType() == "Adventurousness" ) { m_currentType = Echonest::DynamicPlaylist::Adventurousness; @@ -291,8 +291,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); input->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( input ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( input ); m_data.first = m_currentType; } else if( selectedType() == "Tempo" ) { m_currentType = Echonest::DynamicPlaylist::MinTempo; @@ -354,8 +354,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); combo->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( combo ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( combo ); } else if( selectedType() == "Key" ) { m_currentType = Echonest::DynamicPlaylist::Key; @@ -383,8 +383,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); combo->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( combo ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( combo ); } else if( selectedType() == "Sorting" ) { m_currentType = Echonest::DynamicPlaylist::Sort; @@ -416,8 +416,8 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); combo->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( combo ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( combo ); } else if( selectedType() == "Mood" || selectedType() == "Style" ) { if( selectedType() == "Mood" ) m_currentType = Echonest::DynamicPlaylist::Mood; @@ -437,13 +437,13 @@ Tomahawk::EchonestControl::updateWidgets() match->hide(); combo->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( combo ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( combo ); insertMoodsAndStyles(); } else { - m_match = QWeakPointer( new QWidget ); - m_input = QWeakPointer( new QWidget ); + m_match = QPointer( new QWidget ); + m_input = QPointer( new QWidget ); } updateData(); calculateSummary(); @@ -472,8 +472,8 @@ Tomahawk::EchonestControl::setupMinMaxWidgets( Echonest::DynamicPlaylist::Playli match->hide(); input->hide(); - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( input ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( input ); } diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.h b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.h index b4839834fa..d40a87c5e6 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.h +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.h @@ -24,6 +24,7 @@ #include #include +#include namespace Tomahawk { @@ -81,8 +82,8 @@ private slots: Echonest::DynamicPlaylist::PlaylistParam m_currentType; int m_overrideType; - QWeakPointer< QWidget > m_input; - QWeakPointer< QWidget > m_match; + QPointer< QWidget > m_input; + QPointer< QWidget > m_match; QString m_matchData; QString m_matchString; QString m_summary; diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp index 6a412dd0af..30e7c79415 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp @@ -40,12 +40,12 @@ DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& co , m_minusButton( 0 ) , m_control( control ) , m_typeSelector( 0 ) - , m_layout( QWeakPointer< QGridLayout >( layout ) ) + , m_layout( QPointer< QGridLayout >( layout ) ) { m_typeSelector = new QComboBox( m_parent ); - m_matchSelector = QWeakPointer( control->matchSelector() ); - m_entryWidget = QWeakPointer( control->inputField() ); + m_matchSelector = QPointer( control->matchSelector() ); + m_entryWidget = QPointer( control->inputField() ); m_minusButton = initButton( m_parent ); m_minusButton->setIcon( TomahawkUtils::defaultPixmap( TomahawkUtils::ListRemove ) ); @@ -157,12 +157,12 @@ DynamicControlWrapper::typeSelectorChanged( const QString& type, bool firstLoad if( m_control->matchSelector() ) { - m_matchSelector = QWeakPointer( m_control->matchSelector() ); + m_matchSelector = QPointer( m_control->matchSelector() ); m_layout.data()->addWidget( m_matchSelector.data(), m_row, 1, Qt::AlignCenter ); m_matchSelector.data()->show(); } if( m_control->inputField() ) { - m_entryWidget = QWeakPointer( m_control->inputField() ); + m_entryWidget = QPointer( m_control->inputField() ); m_layout.data()->addWidget( m_entryWidget.data(), m_row, 2 ); m_entryWidget.data()->show(); } diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h index 7fc2f4537c..ed70f08e31 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h @@ -20,6 +20,7 @@ #define DYNAMIC_CONTROL_WRAPPER_H #include +#include #include "Typedefs.h" @@ -70,9 +71,9 @@ private slots: dyncontrol_ptr m_control; QComboBox* m_typeSelector; - QWeakPointer m_matchSelector; - QWeakPointer m_entryWidget; - QWeakPointer m_layout; + QPointer m_matchSelector; + QPointer m_entryWidget; + QPointer m_layout; }; }; diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index c0c631e711..51f8fd5174 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -523,7 +523,7 @@ QtScriptResolver::loadUi() if( m.contains( "images" ) ) uiData = fixDataImagePaths( uiData, compressed, images ); - m_configWidget = QWeakPointer< QWidget >( widgetFromData( uiData, 0 ) ); + m_configWidget = QPointer< QWidget >( widgetFromData( uiData, 0 ) ); emit changed(); } diff --git a/src/libtomahawk/resolvers/QtScriptResolver.h b/src/libtomahawk/resolvers/QtScriptResolver.h index f2624f200a..78cc2b9ce6 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.h +++ b/src/libtomahawk/resolvers/QtScriptResolver.h @@ -176,7 +176,7 @@ public slots: ExternalResolver::ErrorState m_error; QtScriptResolverHelper* m_resolverHelper; - QWeakPointer< QWidget > m_configWidget; + QPointer< QWidget > m_configWidget; QList< QVariant > m_dataWidgets; }; diff --git a/src/libtomahawk/resolvers/ScriptResolver.cpp b/src/libtomahawk/resolvers/ScriptResolver.cpp index b254dde32f..8a4046470c 100644 --- a/src/libtomahawk/resolvers/ScriptResolver.cpp +++ b/src/libtomahawk/resolvers/ScriptResolver.cpp @@ -427,7 +427,7 @@ ScriptResolver::setupConfWidget( const QVariantMap& m ) if ( m.contains( "images" ) ) uiData = fixDataImagePaths( uiData, compressed, m[ "images" ].toMap() ); - m_configWidget = QWeakPointer< QWidget >( widgetFromData( uiData, 0 ) ); + m_configWidget = QPointer< QWidget >( widgetFromData( uiData, 0 ) ); emit changed(); } diff --git a/src/libtomahawk/resolvers/ScriptResolver.h b/src/libtomahawk/resolvers/ScriptResolver.h index 5f7f898888..b975768a5e 100644 --- a/src/libtomahawk/resolvers/ScriptResolver.h +++ b/src/libtomahawk/resolvers/ScriptResolver.h @@ -87,7 +87,7 @@ private slots: QString m_name; QPixmap m_icon; unsigned int m_weight, m_preference, m_timeout, m_num_restarts; - QWeakPointer< QWidget > m_configWidget; + QPointer< QWidget > m_configWidget; quint32 m_msgsize; QByteArray m_msg; diff --git a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp index f9feed6361..df63ff3df3 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp +++ b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp @@ -7,6 +7,7 @@ #include #include #include +#include class QToolbarTabDialogPrivate : public QObject { Q_OBJECT @@ -45,8 +46,8 @@ public slots: } public: - QWeakPointer dialog; - QWeakPointer q; + QPointer dialog; + QPointer q; QVBoxLayout* layout; QToolBar* toolbar; diff --git a/src/libtomahawk/utils/BinaryInstallerHelper.cpp b/src/libtomahawk/utils/BinaryInstallerHelper.cpp index d061053ca0..23bbcd5aaf 100644 --- a/src/libtomahawk/utils/BinaryInstallerHelper.cpp +++ b/src/libtomahawk/utils/BinaryInstallerHelper.cpp @@ -27,7 +27,7 @@ BinaryInstallerHelper::BinaryInstallerHelper( QTemporaryFile* tempFile, const QS , m_tempFile( tempFile ) , m_resolverId( resolverId ) , m_createAccount( createAccount ) - , m_manager( QWeakPointer< AtticaManager >( manager ) ) + , m_manager( QPointer< AtticaManager >( manager ) ) { Q_ASSERT( m_tempFile ); Q_ASSERT( !m_resolverId.isEmpty() ); diff --git a/src/libtomahawk/utils/BinaryInstallerHelper.h b/src/libtomahawk/utils/BinaryInstallerHelper.h index 33fbba7ced..d87562d6b7 100644 --- a/src/libtomahawk/utils/BinaryInstallerHelper.h +++ b/src/libtomahawk/utils/BinaryInstallerHelper.h @@ -20,7 +20,7 @@ #include "AtticaManager.h" -#include +#include class QTemporaryFile; class BinaryInstallerHelper : public QObject @@ -39,7 +39,7 @@ public slots: QTemporaryFile* m_tempFile; QString m_resolverId; bool m_createAccount; - QWeakPointer m_manager; + QPointer m_manager; }; #endif \ No newline at end of file diff --git a/src/libtomahawk/utils/GuiHelpers.cpp b/src/libtomahawk/utils/GuiHelpers.cpp index 2342c53448..645271bebd 100644 --- a/src/libtomahawk/utils/GuiHelpers.cpp +++ b/src/libtomahawk/utils/GuiHelpers.cpp @@ -111,7 +111,7 @@ createAccountFromFactory( Tomahawk::Accounts::AccountFactory* factory, QWidget* dialog->show(); #else DelegateConfigWrapper dialog( account->configurationWidget(), account->aboutWidget(), QObject::tr( "%1 Config" ).arg( account->accountFriendlyName() ), parent ); - QWeakPointer< DelegateConfigWrapper > watcher( &dialog ); + QPointer< DelegateConfigWrapper > watcher( &dialog ); if( account->configurationWidget()->metaObject()->indexOfSignal( "dataError(bool)" ) > -1 ) QObject::connect( account->configurationWidget(), SIGNAL( dataError( bool ) ), &dialog, SLOT( toggleOkButton( bool ) ), Qt::UniqueConnection ); @@ -141,7 +141,7 @@ openAccountConfig( Tomahawk::Accounts::Account* account, QWidget* parent, bool s #ifndef Q_OS_MAC DelegateConfigWrapper dialog( account->configurationWidget(), account->aboutWidget(), QObject::tr("%1 Configuration" ).arg( account->accountFriendlyName() ), parent ); dialog.setShowDelete( showDelete ); - QWeakPointer< DelegateConfigWrapper > watcher( &dialog ); + QPointer< DelegateConfigWrapper > watcher( &dialog ); int ret = dialog.exec(); if ( !watcher.isNull() && dialog.deleted() ) { diff --git a/src/libtomahawk/utils/PixmapDelegateFader.cpp b/src/libtomahawk/utils/PixmapDelegateFader.cpp index 9b0bd418dd..f7c892772c 100644 --- a/src/libtomahawk/utils/PixmapDelegateFader.cpp +++ b/src/libtomahawk/utils/PixmapDelegateFader.cpp @@ -31,14 +31,14 @@ using namespace Tomahawk; -QWeakPointer< TomahawkUtils::SharedTimeLine > PixmapDelegateFader::s_stlInstance = QWeakPointer< TomahawkUtils::SharedTimeLine >(); +QPointer< TomahawkUtils::SharedTimeLine > PixmapDelegateFader::s_stlInstance = QPointer< TomahawkUtils::SharedTimeLine >(); -QWeakPointer< TomahawkUtils::SharedTimeLine > +QPointer< TomahawkUtils::SharedTimeLine > PixmapDelegateFader::stlInstance() { if ( s_stlInstance.isNull() ) - s_stlInstance = QWeakPointer< TomahawkUtils::SharedTimeLine> ( new TomahawkUtils::SharedTimeLine() ); + s_stlInstance = QPointer< TomahawkUtils::SharedTimeLine> ( new TomahawkUtils::SharedTimeLine() ); return s_stlInstance; } diff --git a/src/libtomahawk/utils/PixmapDelegateFader.h b/src/libtomahawk/utils/PixmapDelegateFader.h index 04df7db1bb..385c654306 100644 --- a/src/libtomahawk/utils/PixmapDelegateFader.h +++ b/src/libtomahawk/utils/PixmapDelegateFader.h @@ -28,7 +28,7 @@ #include #include #include -#include +#include namespace Tomahawk { @@ -43,8 +43,8 @@ class PixmapDelegateFader : public QObject { Q_OBJECT - static QWeakPointer< TomahawkUtils::SharedTimeLine > stlInstance(); - + static QPointer< TomahawkUtils::SharedTimeLine > stlInstance(); + public: PixmapDelegateFader( const artist_ptr& artist, const QSize& size, TomahawkUtils::ImageMode mode = TomahawkUtils::Original, bool forceLoad = true ); PixmapDelegateFader( const album_ptr& album, const QSize& size, TomahawkUtils::ImageMode mode = TomahawkUtils::Original, bool forceLoad = true ); @@ -88,7 +88,7 @@ private slots: QPixmap m_currentReference, m_oldReference, m_current; - static QWeakPointer< TomahawkUtils::SharedTimeLine > s_stlInstance; + static QPointer< TomahawkUtils::SharedTimeLine > s_stlInstance; }; } diff --git a/src/libtomahawk/utils/WidgetDragFilter.cpp b/src/libtomahawk/utils/WidgetDragFilter.cpp index 76ca5b105c..7a540e5b76 100644 --- a/src/libtomahawk/utils/WidgetDragFilter.cpp +++ b/src/libtomahawk/utils/WidgetDragFilter.cpp @@ -30,7 +30,7 @@ WidgetDragFilter::WidgetDragFilter( QObject* parent ) , m_dragStarted( false ) { Q_ASSERT( parent->isWidgetType() ); - m_target = QWeakPointer(static_cast(parent)); + m_target = QPointer(static_cast(parent)); m_target.data()->installEventFilter( this ); } diff --git a/src/libtomahawk/utils/WidgetDragFilter.h b/src/libtomahawk/utils/WidgetDragFilter.h index caea1951fb..33ff4450d1 100644 --- a/src/libtomahawk/utils/WidgetDragFilter.h +++ b/src/libtomahawk/utils/WidgetDragFilter.h @@ -19,11 +19,12 @@ #ifndef WIDGET_DRAG_FILTER_H #define WIDGET_DRAG_FILTER_H +#include "DllMacro.h" + #include #include #include - -#include "DllMacro.h" +#include class QMouseEvent; class QEvent; @@ -41,8 +42,8 @@ class DLLEXPORT WidgetDragFilter : public QObject virtual bool eventFilter(QObject* , QEvent* ); private: bool canDrag( QObject* obj, QMouseEvent* ev ) const; - - QWeakPointer m_target; // in case it's deleted under us + + QPointer m_target; // in case it's deleted under us QPoint m_dragPoint; bool m_dragStarted; }; diff --git a/src/libtomahawk/widgets/AnimatedCounterLabel.h b/src/libtomahawk/widgets/AnimatedCounterLabel.h index cadd842ff9..6e34736e08 100644 --- a/src/libtomahawk/widgets/AnimatedCounterLabel.h +++ b/src/libtomahawk/widgets/AnimatedCounterLabel.h @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include "DllMacro.h" @@ -52,7 +52,7 @@ public slots: unsigned int m_val, m_oldval; QString m_format; - QWeakPointer m_diff; + QPointer m_diff; }; #endif // ANIMATEDCOUNTERLABEL_H diff --git a/src/libtomahawk/widgets/FadingPixmap.cpp b/src/libtomahawk/widgets/FadingPixmap.cpp index 362cbba7ee..0aa17c5f26 100644 --- a/src/libtomahawk/widgets/FadingPixmap.cpp +++ b/src/libtomahawk/widgets/FadingPixmap.cpp @@ -27,13 +27,13 @@ #define ANIMATION_TIME 1000 -QWeakPointer< TomahawkUtils::SharedTimeLine > FadingPixmap::s_stlInstance = QWeakPointer< TomahawkUtils::SharedTimeLine >(); +QPointer< TomahawkUtils::SharedTimeLine > FadingPixmap::s_stlInstance = QPointer< TomahawkUtils::SharedTimeLine >(); -QWeakPointer< TomahawkUtils::SharedTimeLine > +QPointer< TomahawkUtils::SharedTimeLine > FadingPixmap::stlInstance() { if ( s_stlInstance.isNull() ) - s_stlInstance = QWeakPointer< TomahawkUtils::SharedTimeLine> ( new TomahawkUtils::SharedTimeLine() ); + s_stlInstance = QPointer< TomahawkUtils::SharedTimeLine> ( new TomahawkUtils::SharedTimeLine() ); return s_stlInstance; } diff --git a/src/libtomahawk/widgets/FadingPixmap.h b/src/libtomahawk/widgets/FadingPixmap.h index 5e49288178..aa57ef4e50 100644 --- a/src/libtomahawk/widgets/FadingPixmap.h +++ b/src/libtomahawk/widgets/FadingPixmap.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include "DllMacro.h" @@ -38,7 +38,7 @@ class DLLEXPORT FadingPixmap : public QLabel { Q_OBJECT - static QWeakPointer< TomahawkUtils::SharedTimeLine > stlInstance(); + static QPointer< TomahawkUtils::SharedTimeLine > stlInstance(); public: FadingPixmap( QWidget* parent = 0 ); @@ -70,7 +70,7 @@ private slots: int m_startFrame; bool m_isDefault; - static QWeakPointer< TomahawkUtils::SharedTimeLine > s_stlInstance; + static QPointer< TomahawkUtils::SharedTimeLine > s_stlInstance; }; #endif diff --git a/src/sourcetree/SourceTreeView.cpp b/src/sourcetree/SourceTreeView.cpp index 8708ab2227..fce8978c7d 100644 --- a/src/sourcetree/SourceTreeView.cpp +++ b/src/sourcetree/SourceTreeView.cpp @@ -385,7 +385,7 @@ SourceTreeView::deletePlaylist( const QModelIndex& idxIn ) { if ( m_popupDialog.isNull() ) { - m_popupDialog = QWeakPointer< SourceTreePopupDialog >( new SourceTreePopupDialog() ); + m_popupDialog = QPointer< SourceTreePopupDialog >( new SourceTreePopupDialog() ); connect( m_popupDialog.data(), SIGNAL( result( bool ) ), this, SLOT( onDeletePlaylistResult( bool ) ) ); } diff --git a/src/sourcetree/SourceTreeView.h b/src/sourcetree/SourceTreeView.h index 699b9fdf54..b8f2608b8d 100644 --- a/src/sourcetree/SourceTreeView.h +++ b/src/sourcetree/SourceTreeView.h @@ -110,7 +110,7 @@ private slots: QModelIndex m_contextMenuIndex; SourceDelegate* m_delegate; Tomahawk::LatchManager* m_latchManager; - QWeakPointer m_popupDialog; + QPointer m_popupDialog; QMenu m_playlistMenu; QMenu m_roPlaylistMenu; diff --git a/src/widgets/SlideSwitchButton.cpp b/src/widgets/SlideSwitchButton.cpp index 8fb66e9b2c..95271bf2ac 100644 --- a/src/widgets/SlideSwitchButton.cpp +++ b/src/widgets/SlideSwitchButton.cpp @@ -220,7 +220,7 @@ SlideSwitchButton::onCheckedStateChanged() if ( !m_knobAnimation.isNull() ) m_knobAnimation.data()->stop(); - m_knobAnimation = QWeakPointer( new QPropertyAnimation( this, "knobX" ) ); + m_knobAnimation = QPointer( new QPropertyAnimation( this, "knobX" ) ); m_knobAnimation.data()->setDuration( 50 ); m_knobAnimation.data()->setStartValue( m_knobX ); @@ -241,8 +241,8 @@ SlideSwitchButton::setBackChecked( bool state ) m_backBottomAnimation.data()->stop(); m_backChecked = state; - m_backTopAnimation = QWeakPointer( new QPropertyAnimation( this, "baseColorTop" ) ); - m_backBottomAnimation = QWeakPointer( new QPropertyAnimation( this, "baseColorBottom" ) ); + m_backTopAnimation = QPointer( new QPropertyAnimation( this, "baseColorTop" ) ); + m_backBottomAnimation = QPointer( new QPropertyAnimation( this, "baseColorBottom" ) ); m_backTopAnimation.data()->setDuration( 300 ); m_backBottomAnimation.data()->setDuration( 300 ); diff --git a/src/widgets/SlideSwitchButton.h b/src/widgets/SlideSwitchButton.h index 496993bcdd..718ee666b9 100644 --- a/src/widgets/SlideSwitchButton.h +++ b/src/widgets/SlideSwitchButton.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include class QMouseEvent; class QMouseEvent; @@ -87,9 +87,9 @@ private slots: QPoint m_mouseDownPos; - QWeakPointer m_backTopAnimation; - QWeakPointer m_backBottomAnimation; - QWeakPointer m_knobAnimation; + QPointer m_backTopAnimation; + QPointer m_backBottomAnimation; + QPointer m_knobAnimation; }; #endif // SLIDESWITCHBUTTON_H diff --git a/src/xmppbot/XmppBot.h b/src/xmppbot/XmppBot.h index 200f9aafd1..330617885f 100644 --- a/src/xmppbot/XmppBot.h +++ b/src/xmppbot/XmppBot.h @@ -86,7 +86,7 @@ private slots: void onResultsAdded( const QList& result ); private: - QWeakPointer m_client; + QPointer m_client; Tomahawk::result_ptr m_currTrack; Tomahawk::InfoSystem::InfoTypeMap m_currInfoMap; QString m_currReturnMessage; From 89a8869be8c1e960928feb62d240f28d4df9c448 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sat, 5 Jan 2013 01:16:37 +0100 Subject: [PATCH 109/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 251 +++++++++------------------------ lang/tomahawk_bg.ts | 253 +++++++++------------------------ lang/tomahawk_bn_IN.ts | 251 +++++++++------------------------ lang/tomahawk_ca.ts | 251 +++++++++------------------------ lang/tomahawk_cs.ts | 251 +++++++++------------------------ lang/tomahawk_de.ts | 251 +++++++++------------------------ lang/tomahawk_el.ts | 251 +++++++++------------------------ lang/tomahawk_en.ts | 251 +++++++++------------------------ lang/tomahawk_es.ts | 251 +++++++++------------------------ lang/tomahawk_fi.ts | 251 +++++++++------------------------ lang/tomahawk_fr.ts | 251 +++++++++------------------------ lang/tomahawk_gl.ts | 251 +++++++++------------------------ lang/tomahawk_hi_IN.ts | 251 +++++++++------------------------ lang/tomahawk_hu.ts | 251 +++++++++------------------------ lang/tomahawk_it.ts | 251 +++++++++------------------------ lang/tomahawk_ja.ts | 252 +++++++++------------------------ lang/tomahawk_lt.ts | 251 +++++++++------------------------ lang/tomahawk_pl.ts | 251 +++++++++------------------------ lang/tomahawk_pt_BR.ts | 251 +++++++++------------------------ lang/tomahawk_ru.ts | 313 +++++++++++++---------------------------- lang/tomahawk_sv.ts | 251 +++++++++------------------------ lang/tomahawk_tr.ts | 251 +++++++++------------------------ lang/tomahawk_zh_CN.ts | 251 +++++++++------------------------ lang/tomahawk_zh_TW.ts | 251 +++++++++------------------------ 24 files changed, 1544 insertions(+), 4545 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index c63dc9b293..12aa39786e 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -117,13 +117,13 @@ connect and stream from you? - + &Listen Privately &إستمع بخصوصية - + &Listen Publicly &إستمع علنا @@ -223,32 +223,37 @@ connect and stream from you? معلومات &قانونية... - + + &View Logfile + + + + Check For Updates... تحقق من التحديثات... - + &Controls &ضوابط - + &Settings إ&عدادات - + &Help &مساعدة - + &Window &نافذة - + Main Menu القائمة الرئيسية @@ -331,37 +336,37 @@ connect and stream from you? AudioControls - + Shuffle خلط - + Repeat إعادة - + Time Elapsed الوقت المنقضي - + Time Remaining الوقت المتبقي - + Playing from %1 يتم الاستماع من %1 - + Share شارك - + Love أحب @@ -1077,31 +1082,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 @@ -3327,308 +3332,178 @@ enter the displayed PIN number here: توماهوك - - &Quit - &إنهاء - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - اصبح &متصل - - - - Add &Friend... - أضف &صديق... - - - - U&pdate Collection - &تحديث المجموعة - - - - Update Collection - تحديث المجموعة - - - - &Configure Tomahawk... - &تكوين توماهوك... - - - - Load &XSPF... - تحميل XSPF&... - - - - Create &New Playlist... - إنشاء &قائمة أغاني جديدة... - - - - About &Tomahawk... - عن &توماهوك... - - - - Create New &Automatic Playlist - إنشاء قائمة أغاني جديدة أ&وتوماتيكيا - - - - Create New &Station - إنشاء &قائمة أغاني جديدة - - - - Show Offline Sources - أظهر المصادر الغير متصلة - - - - Hide Offline Sources - إخفي المصادر الغير متصلة - - - - Minimize - خفض - - - - Ctrl+M - Ctrl+M - - - - Zoom - زوم - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - معلومات &قانونية... - - - - Diagnostics... - تشخيص... - - - - Fully &Rescan Collection - إعادة &مسح المجموعة كاملة - - - - Fully Rescan Collection - إعادة مسح المجموعة كاملة - - - - Play - إستمع - - - - Space - مساحة - - - - Previous - سابق - - - - Next - التالي - - - + Back إلى الوراء - + Go back one page العودة صفحة واحدة إلى الوراء - + Forward تقدم - + Go forward one page تقدم صفحة واحدة - - + + Hide Menu Bar إخفي شريط القائمة - - + + Show Menu Bar أظهر شريط القائمة - + Search for any artist, album or song... - + &Main Menu ال&قائمة الرئيسية - - - + + + Connect To Peer ربط بالند - + Enter peer address: أدخل عنوان الند: - + Enter peer port: أدخل بوابة الند: - + Enter peer key: أدخل مفتاح الند: - + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 حقوق الطبع والنشر ٢٠١٠ - ٢٠١٢ - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 5d91270125..6c0a2b2009 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Слушай самостоятелно - + &Listen Publicly &Слушай публично @@ -222,32 +222,37 @@ connect and stream from you? &Правна информация - + + &View Logfile + + + + Check For Updates... Провери за обновления - + &Controls &Контроли - + &Settings &Настройки - + &Help &Помощ - + &Window &Прозорец - + Main Menu Главно меню @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Разбъркано - + Repeat Повтори - + Time Elapsed Изминало време - + Time Remaining Оставащо време - + Playing from %1 Изпълнявам от %1 - + Share Сподели - + Love Харесай @@ -1082,31 +1087,31 @@ Tomahawk създаде доклад относно това и изпращай 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> @@ -3341,311 +3346,181 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Изход - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Свържи се - - - - Add &Friend... - Добави &приятел - - - - U&pdate Collection - О&бнови колекцията - - - - Update Collection - Обнови колекцията - - - - &Configure Tomahawk... - &Настройки на Tomahawk - - - - Load &XSPF... - Зареди &XSPF... - - - - Create &New Playlist... - Зареди &Нов списък - - - - About &Tomahawk... - За &Tomahawk - - - - Create New &Automatic Playlist - Създай нов &Автоматичен списък - - - - Create New &Station - Създай нова &Станция - - - - Show Offline Sources - Покажи източници извън линия - - - - Hide Offline Sources - Скрий източници извън линия - - - - Minimize - Смали - - - - Ctrl+M - Ctrl+M - - - - Zoom - Увеличи - - - - Meta+Ctrl+Z - Mod+Ctrl+Z - - - - &Legal Info... - &Правна инфоормация - - - - Diagnostics... - Диагностика... - - - - Fully &Rescan Collection - Пълно &сканиране на колекцията - - - - Fully Rescan Collection - Пълно сканиране на колекцията - - - - Play - Изпълни - - - - Space - Интервал - - - - Previous - Предишна - - - - Next - Следваща - - - + Back Назад - + Go back one page Една страница назад - + Forward Напред - + Go forward one page Една страница напред - - + + Hide Menu Bar Скрий лентата с менюто - - + + Show Menu Bar Покажи лентата с менюто - + Search for any artist, album or song... - Търси за всеки Артист, Албум или Песен... + Търси всеки Артист, Албум или Песен... - + &Main Menu &Основно меню - - - + + + Connect To Peer Свържи се с друг потребител - + Enter peer address: Въведи адресът на отдалеченият потребител: - + Enter peer port: Въведи порт: - + Enter peer key: Въведи ключът за удостоверяване: - + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Всички права - запазени. 2010 - 2012 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index ef3a9f9f7d..9d6c0e732a 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 763563dc14..0721d1d4d1 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Escolta privada - + &Listen Publicly &Escolta Pública @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Mescla - + Repeat Repeteix - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3325,308 +3330,178 @@ introduïu el PIN aquí: Tomahawk - - &Quit - &Surt - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Connecta't - - - - Add &Friend... - Afegeix un &Amic... - - - - U&pdate Collection - Act&ualitza la Col·lecció - - - - Update Collection - Actualitza la Col·lecció - - - - &Configure Tomahawk... - &Configura Tomahawk... - - - - Load &XSPF... - Carrega una llista &XSPF... - - - - Create &New Playlist... - Crea una &nova llista de reproducció... - - - - About &Tomahawk... - Quant a &Tomahawk... - - - - Create New &Automatic Playlist - Crea una Llista de Reproducció &Automàtica - - - - Create New &Station - Crea una Nova &Emissora - - - - Show Offline Sources - Mostra les fonts fora de línia - - - - Hide Offline Sources - Amaga les fonts fora de línia - - - - Minimize - Minimitza - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Informació &legal - - - - Diagnostics... - Diagnòstics... - - - - Fully &Rescan Collection - &Reescaneja la Col·lecció completament - - - - Fully Rescan Collection - Reescaneja la Col·lecció completament - - - - Play - Reprodueix - - - - Space - Espai - - - - Previous - Anterior - - - - Next - Següent - - - + Back Enrere - + Go back one page Retrocedeix una pàgina - + Forward Endavant - + Go forward one page Avança una pàgina - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Connexió Remota - + Enter peer address: Introduïu l'adreça remota: - + Enter peer port: Introduïu el port remot: - + Enter peer key: Introduïu la clau remota: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index ca69d18b7e..076e7ec024 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index d7e0bb655f..7dac2bb004 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -117,13 +117,13 @@ erlauben sich mit dir zu verbinden? - + &Listen Privately &Privat Modus aktivieren - + &Listen Publicly &Privat Modus verlassen @@ -223,32 +223,37 @@ erlauben sich mit dir zu verbinden? &Rechtliche Informationen... - + + &View Logfile + &Log anzeigen + + + Check For Updates... Nach Updates suchen... - + &Controls S&teuerung - + &Settings &Einstellungen - + &Help &Hilfe - + &Window &Fenster - + Main Menu Hauptmenü @@ -331,37 +336,37 @@ erlauben sich mit dir zu verbinden? AudioControls - + Shuffle Zufall - + Repeat Wiederholen - + Time Elapsed Abgelaufene Zeit - + Time Remaining Verbleibende Zeit - + Playing from %1 Wiedergabe von %1 - + Share Teilen - + Love Lieben @@ -1077,31 +1082,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> @@ -3324,308 +3329,178 @@ Tomahawk auf Twitter's Website authentifiziert hast: Tomahawk - - &Quit - &Verlassen - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Verbinden - - - - Add &Friend... - Freund &hinzufügen… - - - - U&pdate Collection - Sammlung &aktualisieren - - - - Update Collection - Sammlung aktualisieren - - - - &Configure Tomahawk... - Tomahawk &einrichten… - - - - Load &XSPF... - &XSPF laden… - - - - Create &New Playlist... - Neue &Playlist erstellen… - - - - About &Tomahawk... - Über &Tomahawk… - - - - Create New &Automatic Playlist - Neue &automatische Playlist erstellen - - - - Create New &Station - Neue &Station erstellen - - - - Show Offline Sources - Nicht-Verfügbare Quellen anzeigen - - - - Hide Offline Sources - Nicht-Verfügbare Quellen ausblenden - - - - Minimize - Minimieren - - - - Ctrl+M - Strg+M - - - - Zoom - Vergrößern - - - - Meta+Ctrl+Z - Strg+Meta+Z - - - - &Legal Info... - Rechtliche Informationen... - - - - Diagnostics... - Diagnose Tool... - - - - Fully &Rescan Collection - Sammlung neu du&rchsuchen - - - - Fully Rescan Collection - Sammlung neu durchsuchen - - - - Play - Abspielen - - - - Space - Leertaste - - - - Previous - Zurück - - - - Next - Weiter - - - + Back Zurück - + Go back one page Gehe eine Seite zurück - + Forward Vorwärts - + Go forward one page Gehe eine Seite vorwärts - - + + Hide Menu Bar Menüleiste ausblenden - - + + Show Menu Bar Menüleiste einblenden - + Search for any artist, album or song... Suche nach Künstler, Album oder Lied... - + &Main Menu Haupt&menü - - - + + + Connect To Peer Mit anderem Tomahawk verbinden - + Enter peer address: Gib die Adresse der Gegenstelle ein: - + Enter peer port: Gib den Port der Gegenstelle ein: - + Enter peer key: Gib den Schlüssel der Gegenstelle ein: - + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copright 2010 - 2012 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index b690fcd648..88109d01e0 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Ιδιωτική Ακρόαση - + &Listen Publicly &Δημόσια Ακρόαση @@ -222,32 +222,37 @@ connect and stream from you? &Νομικές Πληροφορίες - + + &View Logfile + + + + Check For Updates... Έλεγχος Για Ενημερώσεις - + &Controls &Χειριστήρια - + &Settings &Ρυθμίσεις - + &Help &Βοήθεια - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Τυχαία σειρά - + Repeat Επανάληψη - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3324,308 +3329,178 @@ enter the displayed PIN number here: - - &Quit - &Έξοδος - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Συνδεθείτε - - - - Add &Friend... - Προσθήκη &Φίλου... - - - - U&pdate Collection - Ε&νημέρωση Συλλογής - - - - Update Collection - Ενημέρωση Συλλογής - - - - &Configure Tomahawk... - &Ρύθμιση Tomahawk... - - - - Load &XSPF... - Φόρτωση &XSPF... - - - - Create &New Playlist... - Δημιουργία &Νέας Λίστας Αναπαραγωγής - - - - About &Tomahawk... - Σχετικά με το &Tomahawk - - - - Create New &Automatic Playlist - Δημιουργία Νέας &Αυτόματης Λίστας Αναπαραγής - - - - Create New &Station - Δημιουργία Νέου &Σταθμού - - - - Show Offline Sources - Προβολή Πηγών Εκτός Σύνδεσης - - - - Hide Offline Sources - Απόκρυψη Πηγών Εκτός Σύνδεσης - - - - Minimize - Ελαχιστοποίηση - - - - Ctrl+M - Ctrl+M - - - - Zoom - Μεγέθυνση - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - - - - - Diagnostics... - Διαγνωστικά... - - - - Fully &Rescan Collection - Πλήρης &Επανασάρωση Συλλογής - - - - Fully Rescan Collection - Πλήρης Επανασάρωση Συλλογής - - - - Play - Αναπαραγωγή - - - - Space - Κενό - - - - Previous - Προηγούμενο - - - - Next - Επόμενο - - - + Back Πίσω - + Go back one page Πήγαινε πίσω μία σελίδα - + Forward Μπροστά - + Go forward one page Πήγαινε μπροστά μία σελίδα - - + + Hide Menu Bar Απόκρυψη Γραμμής Μενού - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Σύνδεση Σε Ομότιμο Κόμβο - + Enter peer address: Εισαγωγή διεύθυνσης ομότιμου κόμβου: - + Enter peer port: Εισαγωγή θύρας ομότιμου κόμβου: - + Enter peer key: Εισαγωγή κλειδιού ομότιμου κόμβου: - + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 19301ea9f7..dc443bbda5 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -117,13 +117,13 @@ connect and stream from you? - + &Listen Privately &Listen Privately - + &Listen Publicly &Listen Publicly @@ -223,32 +223,37 @@ connect and stream from you? &Legal Information... - + + &View Logfile + &View Logfile + + + Check For Updates... Check For Updates... - + &Controls &Controls - + &Settings &Settings - + &Help &Help - + &Window &Window - + Main Menu Main Menu @@ -331,37 +336,37 @@ connect and stream from you? AudioControls - + Shuffle Shuffle - + Repeat Repeat - + Time Elapsed Time Elapsed - + Time Remaining Time Remaining - + Playing from %1 Playing from %1 - + Share Share - + Love Love @@ -1077,31 +1082,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> @@ -3329,308 +3334,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Quit - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Go &Online - - - - Add &Friend... - Add &Friend... - - - - U&pdate Collection - U&pdate Collection - - - - Update Collection - Update Collection - - - - &Configure Tomahawk... - &Configure Tomahawk... - - - - Load &XSPF... - Load &XSPF... - - - - Create &New Playlist... - Create &New Playlist... - - - - About &Tomahawk... - About &Tomahawk... - - - - Create New &Automatic Playlist - Create New &Automatic Playlist - - - - Create New &Station - Create New &Station - - - - Show Offline Sources - Show Offline Sources - - - - Hide Offline Sources - Hide Offline Sources - - - - Minimize - Minimize - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Legal Info... - - - - Diagnostics... - Diagnostics... - - - - Fully &Rescan Collection - Fully &Rescan Collection - - - - Fully Rescan Collection - Fully Rescan Collection - - - - Play - Play - - - - Space - Space - - - - Previous - Previous - - - - Next - Next - - - + Back Back - + Go back one page Go back one page - + Forward Forward - + Go forward one page Go forward one page - - + + Hide Menu Bar Hide Menu Bar - - + + Show Menu Bar Show Menu Bar - + Search for any artist, album or song... Search for any artist, album or song... - + &Main Menu &Main Menu - - - + + + Connect To Peer Connect To Peer - + Enter peer address: Enter peer address: - + Enter peer port: Enter peer port: - + Enter peer key: Enter peer key: - + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 40eb9e4ae8..706fa3e3a6 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -117,13 +117,13 @@ conectarse a usted y transmitir música? - + &Listen Privately &Modo privado - + &Listen Publicly &Escuchar públicamente @@ -223,32 +223,37 @@ conectarse a usted y transmitir música? Información &legal - + + &View Logfile + + + + Check For Updates... Buscar actualizaciones... - + &Controls &Controles - + &Settings &Configuración - + &Help &Ayuda - + &Window &Ventana - + Main Menu Menú principal @@ -331,37 +336,37 @@ conectarse a usted y transmitir música? AudioControls - + Shuffle Aleatorio - + Repeat Repetir - + Time Elapsed Tiempo transcurrido - + Time Remaining Tiempo restante - + Playing from %1 Reproduciendo de %1 - + Share Compartir - + Love Favorito @@ -1077,31 +1082,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 @@ -3329,308 +3334,178 @@ introduzca su número PIN aquí: Tomahawk - - &Quit - &Salir - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - &Conectarse - - - - Add &Friend... - Añadir &amigo... - - - - U&pdate Collection - A&ctualizar colección - - - - Update Collection - Actualizar colección - - - - &Configure Tomahawk... - &Configurar Tomahawk... - - - - Load &XSPF... - Cargar &XSPF... - - - - Create &New Playlist... - Crear una &nueva lista de reproducción... - - - - About &Tomahawk... - Acerca de &Tomahawk... - - - - Create New &Automatic Playlist - Crear nueva &lista de reproducción automática - - - - Create New &Station - Crear nueva &estación - - - - Show Offline Sources - Mostrar fuentes fuera de línea - - - - Hide Offline Sources - Ocultar fuentes fuera de línea - - - - Minimize - Minimizar - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Información &legal... - - - - Diagnostics... - Diagnósticos... - - - - Fully &Rescan Collection - &Re-escanear completamente la colección - - - - Fully Rescan Collection - Re-escanear completamente la colección - - - - Play - Reproducir - - - - Space - Espacio - - - - Previous - Anterior - - - - Next - Siguiente - - - + Back Atrás - + Go back one page Ir atrás una página - + Forward Adelante - + Go forward one page Ir adelante una página - - + + Hide Menu Bar Esconder barra de menú - - + + Show Menu Bar Mostrar barra de menú - + Search for any artist, album or song... Buscar un artista, álbum o pista... - + &Main Menu &Menú principal - - - + + + Connect To Peer Conectar a un par - + Enter peer address: Introducir dirección del par: - + Enter peer port: Introducir puerto del par: - + Enter peer key: Introducir contraseña del par: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Nueva estación - + Create New Station Crear nueva estación - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010-2012 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index b963927a54..79767f313c 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -117,13 +117,13 @@ yhdistää ja toistaa sinulta virtaa? - + &Listen Privately &Kuuntele yksityisesti - + &Listen Publicly &Kuuntele julkisesti @@ -223,32 +223,37 @@ yhdistää ja toistaa sinulta virtaa? Lakitiet&oa... - + + &View Logfile + + + + Check For Updates... Tarkista päivitykset... - + &Controls &Ohjaus - + &Settings &Asetukset - + &Help O&hje - + &Window &Ikkuna - + Main Menu Päävalikko @@ -331,37 +336,37 @@ yhdistää ja toistaa sinulta virtaa? AudioControls - + Shuffle Sekoita - + Repeat Toista - + Time Elapsed Kulunut aika - + Time Remaining Jäljellä oleva aika - + Playing from %1 Soitetaan lähteestä %1 - + Share Jaa - + Love Tykkää @@ -1077,31 +1082,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> @@ -3332,308 +3337,178 @@ anna siellä näytetty PIN-koodi tähän: Tomahawk - - &Quit - &Lopeta - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Mene &verkkoon - - - - Add &Friend... - Lisää &kaveri... - - - - U&pdate Collection - P&äivitä kokoelma - - - - Update Collection - Päivitä kokoelma - - - - &Configure Tomahawk... - Tomahawkin &asetukset... - - - - Load &XSPF... - Lataa &XSPF... - - - - Create &New Playlist... - Luo &uusi soittolista... - - - - About &Tomahawk... - &Tietoa Tomahawkista... - - - - Create New &Automatic Playlist - Luo uusi &automaattinen soittolista - - - - Create New &Station - Luo uusi a&sema - - - - Show Offline Sources - Näytä verkottomat lähteet - - - - Hide Offline Sources - Piilota verkottomat lähteet - - - - Minimize - Pienennä - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoomaa - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Lakitiet&oa... - - - - Diagnostics... - Diagnostiikka... - - - - Fully &Rescan Collection - &Muodosta kokoelma alusta alkaen - - - - Fully Rescan Collection - Muodosta kokoelma alusta alkaen - - - - Play - Soita - - - - Space - Space - - - - Previous - Edellinen - - - - Next - Seuraava - - - + Back Takaisin - + Go back one page Mene yksi sivu takaisin - + Forward Eteenpäin - + Go forward one page Mene yksi sivu eteenpäin - - + + Hide Menu Bar Piilota valikkorivi - - + + Show Menu Bar Näytä valikkorivi - + Search for any artist, album or song... Etsi mitä tahansa artistia, albumia tai kappaletta... - + &Main Menu &Päävalikko - - - + + + Connect To Peer Yhdistä vertaiseen - + Enter peer address: Anna vertaisen osoite: - + Enter peer port: Anna vertaisen portti: - + Enter peer key: Anna vertaisen avain: - + XSPF Error XSPF-virhe - + This is not a valid XSPF playlist. Tämä ei ole kelvollinen XSPF-soittolista. - + Failed to save tracks Kappaleiden tallentaminen epäonnistui - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010–2012 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index bc95756382..e97303bc3d 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -117,13 +117,13 @@ de se connecter et streamer de vous? - + &Listen Privately &Ecouter en privé - + &Listen Publicly &Ecouter publiquement @@ -223,32 +223,37 @@ de se connecter et streamer de vous? &Informations Légales... - + + &View Logfile + + + + Check For Updates... Rechercher une mis à jour... - + &Controls &Contrôles - + &Settings &Paramètres - + &Help &Aide - + &Window &Fenêtre - + Main Menu Menu Principal @@ -331,37 +336,37 @@ de se connecter et streamer de vous? AudioControls - + Shuffle Lecture Aléatoire - + Repeat Répéter - + Time Elapsed Durée Ecoulé - + Time Remaining Durée Restante - + Playing from %1 - + Share Partager - + Love Favori @@ -1077,31 +1082,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 @@ -3326,308 +3331,178 @@ saisissez le numéro PIN ici : Tomahawk - - &Quit - &Quitter - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Se c&onnecter - - - - Add &Friend... - Ajouter un &ami... - - - - U&pdate Collection - Mettre à Jo&ur la Collection - - - - Update Collection - Mettre à Jour la Collection - - - - &Configure Tomahawk... - &Configurer Tomahawk... - - - - Load &XSPF... - Charger &XSPF... - - - - Create &New Playlist... - Créer une &nouvelle liste de lecture... - - - - About &Tomahawk... - A propos de &Tomahawk... - - - - Create New &Automatic Playlist - Créer une nouvelle liste de lecture &automatique - - - - Create New &Station - Créer une nouvelle &Station - - - - Show Offline Sources - Afficher les sources hors ligne - - - - Hide Offline Sources - Masquer les sources hors ligne - - - - Minimize - Réduire - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Informations Légales... - - - - Diagnostics... - Diagnostics... - - - - Fully &Rescan Collection - &Rescanner la collection entièrement - - - - Fully Rescan Collection - Rescanner la collection entièrement - - - - Play - Lecture - - - - Space - Espace - - - - Previous - Précédent - - - - Next - Suivant - - - + Back Retour - + Go back one page Reculer d'une page - + Forward Avancer - + Go forward one page Avancer d'une page - - + + Hide Menu Bar Masquer la barre de menu - - + + Show Menu Bar Afficher la barre de menu - + Search for any artist, album or song... Chercher un artiste, un album, ou un morceau - + &Main Menu &Menu Principal - - - + + + Connect To Peer Connexion à un pair - + Enter peer address: Adresse du pair : - + Enter peer port: Port du pair : - + Enter peer key: Clé du pair : - + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Droit d'auteur 2010 - 2012 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index d37c1bf8c0..20d3add403 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Escoitar en privado - + &Listen Publicly &Escoutar en público @@ -222,32 +222,37 @@ connect and stream from you? &Información legal... - + + &View Logfile + + + + Check For Updates... Buscar actualizacións... - + &Controls &Controis - + &Settings &Configuración - + &Help &Axuda - + &Window &Xanela - + Main Menu Menú principal @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Ao chou - + Repeat Repetir - + Time Elapsed Tempo transcorrido - + Time Remaining Tempo que falta - + Playing from %1 Reproducindo de %1 - + Share Compartir - + Love gusta @@ -1076,31 +1081,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 @@ -3326,309 +3331,179 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Saír - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Pórse en &liña - - - - Add &Friend... - Engadir a un &amigo... - - - - U&pdate Collection - &Actualizar a colección - - - - Update Collection - Actualizar a colección - - - - &Configure Tomahawk... - &Configurar Tomahawk... - - - - Load &XSPF... - Cargar &XSPF... - - - - Create &New Playlist... - Crear unha &lista de temas nova... - - - - About &Tomahawk... - Acerca de &Tomahawk... - - - - Create New &Automatic Playlist - Crear unha nova lista de reproducción &automática - - - - Create New &Station - Crear unha nova &emisora - - - - Show Offline Sources - Mostrar as fontes fóra de liña - - - - Hide Offline Sources - Agochar as fontes fóra de liña - - - - Minimize - Minimizar - - - - Ctrl+M - Ctrl+M - - - - Zoom - Ampliación - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Información &legal... - - - - Diagnostics... - Diagnóstico... - - - - Fully &Rescan Collection - Rescanear a colección ao &completo - - - - Fully Rescan Collection - Rescanear a colección ao completo - - - - Play - Reproducir - - - - Space - Espazo - - - - Previous - Anterior - - - - Next - Seguinte - - - + Back Atrás - + Go back one page Ir unha páxina atrás - + Forward Adiante - + Go forward one page Ir unha páxian adiante - - + + Hide Menu Bar Agochar a barra de menú - - + + Show Menu Bar Mostrar a barra de menú - + Search for any artist, album or song... - + &Main Menu Menú &principal - - - + + + Connect To Peer Conectar cun parceiro - + Enter peer address: Introducir a dirección do parceiro: - + Enter peer port: Introducir o porto do parceiro: - + Enter peer key: Introducir a clave do parceiro: - + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autentificación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index ed9aada7c3..e06b43fbb4 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 7d5f8199e5..b661f3bcb6 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -222,32 +222,37 @@ connect and stream from you? Jogi információk - + + &View Logfile + + + + Check For Updates... Frissítések ellenőrzése - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat Ismétlés - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - Kiléps - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - - - - - Add &Friend... - Barát hozzáadása - - - - U&pdate Collection - Kollekció frissítése - - - - Update Collection - Kollekció frissítése - - - - &Configure Tomahawk... - Tomahawk beállítása - - - - Load &XSPF... - &XSPF betöltése... - - - - Create &New Playlist... - Új lejátszólista létrehozása - - - - About &Tomahawk... - &Tomahawkról - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - Nem elérhető források mutatása - - - - Hide Offline Sources - Nem elérhető források elrejtése - - - - Minimize - Minimalizálás - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - - - - - Diagnostics... - Diagnosztizálás... - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - Lejátszás - - - - Space - Szóköz - - - - Previous - Előző - - - - Next - Következő - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk Tomahawkról diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 2c318a487e..ba7facd299 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Ascolta in privato - + &Listen Publicly &Ascolta pubblicamente @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Riproduzione casuale - + Repeat Ripeti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Spegni - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Connettiti &online - - - - Add &Friend... - Aggiungi un &amico... - - - - U&pdate Collection - Aggiorna collezione - - - - Update Collection - Aggiorna collezione - - - - &Configure Tomahawk... - &Configura Tomahawk... - - - - Load &XSPF... - Carica &XSPF... - - - - Create &New Playlist... - Crea una &nuova playlist... - - - - About &Tomahawk... - Info su &Tomahawk - - - - Create New &Automatic Playlist - Crea una nuova playlist &automatica - - - - Create New &Station - Crea una nuova &stazione - - - - Show Offline Sources - Mostra risorse non connesse - - - - Hide Offline Sources - Nascondi risorse non connesse - - - - Minimize - Minimizza - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zomma - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Informazioni &legali... - - - - Diagnostics... - Diagnostica... - - - - Fully &Rescan Collection - Nuova &scansione della collezione - - - - Fully Rescan Collection - Nuova scansione della collezione - - - - Play - Play - - - - Space - Spazio - - - - Previous - Precedente - - - - Next - Prossima - - - + Back Indietro - + Go back one page Vai indietro di una pagina - + Forward Avanti - + Go forward one page Vai avanti di una pagina - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Connettiti al peer - + Enter peer address: Inserisci indirizzo peer: - + Enter peer port: Inserisci porta peer: - + Enter peer key: Inserisce chiave peer: - + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index f7bb65c9eb..83f37e51a6 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately 非公開で聴く - + &Listen Publicly 公開で聴く @@ -222,32 +222,37 @@ connect and stream from you? 法定情報... - + + &View Logfile + + + + Check For Updates... 更新を確認... - + &Controls 制御 - + &Settings 設定 - + &Help ヘルプ - + &Window ウインドウ - + Main Menu メインメニュー @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle シャッフル - + Repeat リピート - + Time Elapsed 再生時間 - + Time Remaining 残り時間 - + Playing from %1 %1から再生中 - + Share シェアー - + Love Love @@ -1077,31 +1082,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> @@ -3329,309 +3334,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - 終了 - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - オンライン化する - - - - Add &Friend... - 友達を追加... - - - - U&pdate Collection - コレクションを更新 - - - - Update Collection - コレクションを更新 - - - - &Configure Tomahawk... - Tomahawkを設定... - - - - Load &XSPF... - XSPFを読み込み... - - - - Create &New Playlist... - 新規プレイリストを作成... - - - - About &Tomahawk... - Tomahawk について... - - - - Create New &Automatic Playlist - 新規自動でプレイリストを作成する - - - - Create New &Station - 新規ステーションを作成 - - - - Show Offline Sources - オフラインのソースを表示 - - - - Hide Offline Sources - オフラインのソースを隠す - - - - Minimize - 最小化 - - - - Ctrl+M - Ctrl+M - - - - Zoom - ズーム - - - - Meta+Ctrl+Z - -Meta+Ctrl+Z - - - - &Legal Info... - 法定情報... - - - - Diagnostics... - 診断... - - - - Fully &Rescan Collection - すべてのコレクションを再スキャンする - - - - Fully Rescan Collection - すべてのコレクションを再スキャンする - - - - Play - 再生 - - - - Space - スペース - - - - Previous - 前へ - - - - Next - 次へ - - - + Back プレイリスト - + Go back one page 前のページ - + Forward 次へ - + Go forward one page 次のページ - - + + Hide Menu Bar メニューバーを隠す - - + + Show Menu Bar メニューバーを表示 - + Search for any artist, album or song... アーティスト、又はアルバムや曲で検索して下さい - + &Main Menu メインメニュー - - - + + + Connect To Peer ピアに接続する - + Enter peer address: ピアのアドレスを入力: - + Enter peer port: ピアのポートを入力: - + Enter peer key: ピアのキーを入力: - + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index cd4eb895c4..a0c3fae3d3 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately K&lausytis privačiai - + &Listen Publicly K&lausytis viešai @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Maišyti - + Repeat Kartoti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - &Baigti darbą - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Prisi&jungti - - - - Add &Friend... - Pridėti &draugą... - - - - U&pdate Collection - At&naujinti kolekciją - - - - Update Collection - Atnaujinti kolekciją - - - - &Configure Tomahawk... - &Konfigūruoti Tomahawk... - - - - Load &XSPF... - Įkelti &XSPF... - - - - Create &New Playlist... - Sukurti naują &grojaraštį - - - - About &Tomahawk... - Apie &Tomahawk... - - - - Create New &Automatic Playlist - Sukurti naują &automatinį grojaraštį - - - - Create New &Station - Sukurti naują &stotį - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - Sumažinti - - - - Ctrl+M - Ctrl+M - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - &Teisinė informacija... - - - - Diagnostics... - Diagnostika... - - - - Fully &Rescan Collection - Pilnai pe&ržvelgti kolekciją - - - - Fully Rescan Collection - Pilnai peržvelgti kolekciją - - - - Play - Groti - - - - Space - Tarpas - - - - Previous - Ankstesnis - - - - Next - Kitas - - - + Back Atgal - + Go back one page Grįžti vienu puslapiu atgal - + Forward Pirmyn - + Go forward one page Eiti vienu puslapiu pirmyn - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Autorinės teisės 2010 - 2012 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index c7a0ad6eae..a2d5d04a88 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -117,13 +117,13 @@ połączyć się i strumieniować od ciebie? - + &Listen Privately &Słuchaj Prywatnie - + &Listen Publicly &Słuchaj Publicznie @@ -223,32 +223,37 @@ połączyć się i strumieniować od ciebie? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -331,37 +336,37 @@ połączyć się i strumieniować od ciebie? AudioControls - + Shuffle Losowo - + Repeat Powtarzaj - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love Lubię @@ -1077,31 +1082,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 @@ -3326,308 +3331,178 @@ wprowadź pokazany numer PIN tutaj: Tomahawk - - &Quit - &Zakończ - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Przejdź do trybu &Online - - - - Add &Friend... - Dodaj &Znajomego... - - - - U&pdate Collection - U&aktualnij Kolekcję - - - - Update Collection - Uaktualnij Kolekcję - - - - &Configure Tomahawk... - &Konfiguruj Tomahawk... - - - - Load &XSPF... - Załaduj &XSPF... - - - - Create &New Playlist... - Utwórz &Nową Listę... - - - - About &Tomahawk... - O &Tomahawk... - - - - Create New &Automatic Playlist - Utwórz Nową &Automatyczną Listę - - - - Create New &Station - Utwórz Nową &Stację - - - - Show Offline Sources - Pokaż Źródła Offline - - - - Hide Offline Sources - Ukryj Źródła Offline - - - - Minimize - Minimalizuj - - - - Ctrl+M - Ctrl+M - - - - Zoom - Powiększenie - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - Informacje prawne (&L) - - - - Diagnostics... - Diagnostyka... - - - - Fully &Rescan Collection - Kompletnie &Przeskanuj Kolekcję - - - - Fully Rescan Collection - Kompletnie Przeskanuj Kolekcję - - - - Play - Odtwarzaj - - - - Space - Spacja - - - - Previous - Poprzedni - - - - Next - Następny - - - + Back Wstecz - + Go back one page Cofnij o jedną stronę - + Forward Naprzód - + Go forward one page Przejdź naprzód o jedną stronę - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 6dd7488c0b..30d2dadade 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -117,13 +117,13 @@ se conecte e faça o stream de você? - + &Listen Privately &Ouvir Privadamente - + &Listen Publicly &Ouvir Publicamente @@ -223,32 +223,37 @@ se conecte e faça o stream de você? Informação &legal... - + + &View Logfile + + + + Check For Updates... Verificar atualizações... - + &Controls &Controles - + &Settings C&onfigurações - + &Help &Ajuda - + &Window &Janela - + Main Menu Menu principal @@ -331,37 +336,37 @@ se conecte e faça o stream de você? AudioControls - + Shuffle Shuffle - + Repeat Repetir - + Time Elapsed Tempo decorrido - + Time Remaining Tempo restante - + Playing from %1 Reproduzindo de %1 - + Share Compartilhar - + Love Gostar @@ -1077,31 +1082,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> @@ -3326,308 +3331,178 @@ colocar o número PIN mostrado aqui: Tomahawk - - &Quit - &Sair - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Co&nectar - - - - Add &Friend... - Adicionar A&migo... - - - - U&pdate Collection - A&tualizar biblioteca - - - - Update Collection - Atualizar biblioteca - - - - &Configure Tomahawk... - Configurar To&mahawk... - - - - Load &XSPF... - Abrir &XSPF... - - - - Create &New Playlist... - Criar nova &lista de reprodução... - - - - About &Tomahawk... - Sobre Tomaha&wk... - - - - Create New &Automatic Playlist - Criar no&va lista Automática - - - - Create New &Station - Criar n&ova estação - - - - Show Offline Sources - Mostrar origens desconectadas - - - - Hide Offline Sources - Ocultar origens desconectadas - - - - Minimize - Minimizar - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Informação Legal - - - - Diagnostics... - Diagnósticos... - - - - Fully &Rescan Collection - Escanear &toda a biblioteca - - - - Fully Rescan Collection - Escanear toda biblioteca novamente - - - - Play - Reporduzir - - - - Space - Espaço - - - - Previous - Anterior - - - - Next - Próximo - - - + Back Voltar - + Go back one page Voltar uma página - + Forward Avançar - + Go forward one page Avançar uma página - - + + Hide Menu Bar Esconder barra de menu - - + + Show Menu Bar Mostrar barra de menu - + Search for any artist, album or song... Pesquisar por qualquer artista, álbum ou música... - + &Main Menu &Menu principal - - - + + + Connect To Peer Conectar-se ao par - + Enter peer address: Coloque o endereço do par: - + Enter peer port: Coloque a porta do par: - + Enter peer key: Coloque a chave do par: - + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index a412db0650..2a72f6082e 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -74,12 +74,12 @@ connect and stream from you? Connect &All - Соединиться со Всеми + Включить Все Disconnect &All - Отключиться от Всех + Выключить Всё @@ -118,13 +118,13 @@ connect and stream from you? - + &Listen Privately &Слушать Cамому - + &Listen Publicly &Слушать со всеми @@ -209,7 +209,7 @@ connect and stream from you? Hide Menu Bar - + Спрятать строку меню приложения @@ -227,32 +227,37 @@ connect and stream from you? &Юридическая информация - + + &View Logfile + &Показать Логи + + + Check For Updates... Проверить обновление... - + &Controls &Управление - + &Settings &Настройки - + &Help &Помощь - + &Window &Окно - + Main Menu Главное меню @@ -335,37 +340,37 @@ connect and stream from you? AudioControls - + Shuffle Случаная - + Repeat Повторять - + Time Elapsed Прошедшее время - + Time Remaining Оставшееся время - + Playing from %1 Воспроизводит из %1 - + Share Поделиться - + Love Любимый @@ -375,17 +380,17 @@ connect and stream from you? Sorry, Tomahawk couldn't find the track '%1' by %2 - К сожалению, Tomahawk не мог найти песню '%1' %2 + К сожалению, Tomahawk не смог найти песню '%1' %2 Sorry, Tomahawk couldn't find the artist '%1' - К сожалению, Tomahawk не мог найти исполнителя '%1' + К сожалению, Tomahawk не смог найти исполнителя '%1' Sorry, Tomahawk couldn't find the album '%1' by %2 - К сожалению, Tomahawk не мог найти альбом '%1' %2 + К сожалению, Tomahawk не смог найти альбом '%1' %2 @@ -551,7 +556,7 @@ connect and stream from you? Steer this station: - + Управлять этой станцией: @@ -571,7 +576,7 @@ connect and stream from you? Keep at current - + Оставить на текущей @@ -1041,7 +1046,7 @@ connect and stream from you? Vague match - + Расплывчатое совпадение @@ -1081,34 +1086,34 @@ 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 Воспроизводилась %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> @@ -1332,13 +1337,13 @@ connect and stream from you? %1 Config - + %1 Настройка %1 Configuration - + %1 Настройка @@ -1445,7 +1450,7 @@ connect and stream from you? Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Настройка аккаунтов и сервисов используемых Tomahawk для поиска и извлечения музыки, найти друзей и обновить статус. @@ -1455,7 +1460,7 @@ connect and stream from you? Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Настройка дополнительных возможносте Tomahawk в том числе подключения к сети, интеграцию с браузером, другие. @@ -1511,7 +1516,7 @@ connect and stream from you? Set this to your external IP address or host name. Make sure to forward the port to this host! - + Установите это на ваш внешний ip адресс или имени хоста. Убедитесь в том что проброс портов осуществляется к этому хосту! @@ -1600,12 +1605,12 @@ connect and stream from you? On - Включить + Вкл Off - Выключить + Выкл @@ -2206,7 +2211,7 @@ connect and stream from you? Subscribe to playlist changes - + Следить за изменением плейлиста @@ -2216,7 +2221,7 @@ connect and stream from you? Stop subscribing to changes - + Прекратить следить за изменением плейлиста @@ -2473,14 +2478,14 @@ You may wish to try re-authenticating. &Go to "%1" - + &Перейти к "%1" Go to "%1" - + Перейти к "%1" @@ -2615,7 +2620,7 @@ Please change the filters or try again. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - + Станция не может найти песни!⏎ ⏎Попытайтесь изменить настройки фильтра, для нового набора песен. @@ -2979,7 +2984,7 @@ Try tweaking the filters for a new set of songs to play. Top Overall - + Самые популярные @@ -3169,7 +3174,7 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! - + Ошибка сети при создании короткой ссылки! @@ -3177,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Track '%1' by %2 is not streamable. - + Песня %1 %2 не потоковая. @@ -3327,308 +3332,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - Выйти - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - Стать онлайн - - - - Add &Friend... - Добавить друга - - - - U&pdate Collection - Обновить коллекцию - - - - Update Collection - Обновить коллекцию - - - - &Configure Tomahawk... - Настроить Tomahawk... - - - - Load &XSPF... - Загрузить XSPF - - - - Create &New Playlist... - Создать Новый Плейлист - - - - About &Tomahawk... - О Tomahawk - - - - Create New &Automatic Playlist - Создать новый автоматический плейлист - - - - Create New &Station - Создать Новую Станцию - - - - Show Offline Sources - Показать офлайн содержимое - - - - Hide Offline Sources - Скрыть офлайн содержимое - - - - Minimize - Скрыть - - - - Ctrl+M - Ctrl+M - - - - Zoom - Увеличить - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - &Юридическая информация... - - - - Diagnostics... - Диагностика - - - - Fully &Rescan Collection - Заново &проверить коллекцию - - - - Fully Rescan Collection - Заново проверить коллекцию - - - - Play - Играть - - - - Space - Пауза - - - - Previous - Предыдущая - - - - Next - Следующая - - - + Back Назад - + Go back one page Перейти на предыдущую страницу - + Forward Вперед - + Go forward one page Перейдите на следующую страницу - - + + Hide Menu Bar - + Спрятать строку меню приложения - - + + Show Menu Bar - + Показать строку меню приложения - + Search for any artist, album or song... Поиск любого исполнителя, альбома или песни ... - + &Main Menu &Главное меню - - - + + + Connect To Peer Связаться с Peer - + Enter peer address: Введите адрес узла: - + Enter peer port: Введите адрес порта: - + Enter peer key: Введите адрес ключа: - + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. Убедитесь, что у вас есть подходящий Phonon backend и необходимые плагины установлены. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. - + Station Станция - + Create New Station Создать новую станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Авторское право 2010 - 2012 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3964,7 +3839,7 @@ Lyrics for "%1" by %2: Some playlist entries were found without artist and track name, they will be omitted - + Некоторые песни в плейлисте были найдены без название песни и исполнителя, они будет пропушены diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 33d7e2aad4..6251f7859e 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Lyssna privat - + &Listen Publicly &Lyssna publikt @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Blanda - + Repeat Upprepa - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3322,308 +3327,178 @@ anger du PIN-koden här: Tomahawk - - &Quit - A&vsluta - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - A&nslut - - - - Add &Friend... - Lägg till &vän... - - - - U&pdate Collection - U&ppdatera samling - - - - Update Collection - Uppdatera samling - - - - &Configure Tomahawk... - &Konfigurera Tomahawk... - - - - Load &XSPF... - Läs in &XSPF... - - - - Create &New Playlist... - Skapa &ny spellista... - - - - About &Tomahawk... - Om &Tomahawk... - - - - Create New &Automatic Playlist - Skapa ny a&utomatisk spellista - - - - Create New &Station - Skapa ny &station - - - - Show Offline Sources - Visa frånkopplade källor - - - - Hide Offline Sources - Dölj frånkopplade källor - - - - Minimize - Minimera - - - - Ctrl+M - Ctrl+M - - - - Zoom - Zoom - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - - - - - Diagnostics... - Diagnostik... - - - - Fully &Rescan Collection - Sök &igenom hela samlingen igen - - - - Fully Rescan Collection - Sök igenom hela samlingen igen - - - - Play - Spela upp - - - - Space - Blanksteg - - - - Previous - Föregående - - - - Next - Nästa - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer Anslut till klient - + Enter peer address: Ange klientadress: - + Enter peer port: Ange klientport: - + Enter peer key: Ange klientnyckel: - + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist - + Automatic Playlist - + Pause Paus - + &Play - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 4d5ca151a2..5a13c979bd 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately &Gizli Dinle - + &Listen Publicly &Yayınlayarak Dinle @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle Karışık - + Repeat Yenile - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: - - &Quit - - - - - Ctrl+Q - - - - - Go &Online - - - - - Add &Friend... - - - - - U&pdate Collection - - - - - Update Collection - - - - - &Configure Tomahawk... - - - - - Load &XSPF... - - - - - Create &New Playlist... - - - - - About &Tomahawk... - - - - - Create New &Automatic Playlist - - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - - - - - Ctrl+M - - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - - - - - Fully &Rescan Collection - - - - - Fully Rescan Collection - - - - - Play - - - - - Space - - - - - Previous - - - - - Next - - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer - + Enter peer address: - + Enter peer port: - + Enter peer key: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index c0e7358257..60c66e8b6e 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately 私下收听 - + &Listen Publicly 公开收听 @@ -222,32 +222,37 @@ connect and stream from you? 法律信息... - + + &View Logfile + + + + Check For Updates... 检查更新... - + &Controls 控制 - + &Settings 设置 - + &Help 帮助 - + &Window 窗口 - + Main Menu 主菜单 @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle 无序播放 - + Repeat 重复播放 - + Time Elapsed 已播放时间 - + Time Remaining 剩余时间 - + Playing from %1 歌曲来自 %1 - + Share 分享 - + Love 喜欢 @@ -1076,31 +1081,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 @@ -3327,308 +3332,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - 退出 - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - 上线 - - - - Add &Friend... - 添加朋友... - - - - U&pdate Collection - 更新收藏 - - - - Update Collection - 更新收藏 - - - - &Configure Tomahawk... - 配置 Tomahawk... - - - - Load &XSPF... - 载入 XSPF... - - - - Create &New Playlist... - 创建新的播放列表... - - - - About &Tomahawk... - 关于 Tomahawk... - - - - Create New &Automatic Playlist - 创建新自动播放列表 - - - - Create New &Station - 创建新电台 - - - - Show Offline Sources - 显示离线资源 - - - - Hide Offline Sources - 隐藏离线资源 - - - - Minimize - 最小化 - - - - Ctrl+M - Ctrl+M - - - - Zoom - 放大 - - - - Meta+Ctrl+Z - Meta+Ctrl+Z - - - - &Legal Info... - 法律信息... - - - - Diagnostics... - 诊断... - - - - Fully &Rescan Collection - 重新完整扫描收藏 - - - - Fully Rescan Collection - 重新完整扫描收藏 - - - - Play - 播放 - - - - Space - Space - - - - Previous - 上一首 - - - - Next - 下一首 - - - + Back 后退 - + Go back one page 转向上一页 - + Forward 下一个 - + Go forward one page 转向下一页 - - + + Hide Menu Bar 隐藏菜单栏 - - + + Show Menu Bar 显示菜单栏 - + Search for any artist, album or song... - + &Main Menu 主菜单 - - - + + + Connect To Peer 连接到客户端 - + Enter peer address: 输入客户端地址: - + Enter peer port: 输入客户端端口: - + Enter peer key: 输入客户端密钥: - + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 版权所有 2010 - 2012 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 71b122b7ef..6dedcd01ca 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -116,13 +116,13 @@ connect and stream from you? - + &Listen Privately 私下聆聽 - + &Listen Publicly 公開聆聽 @@ -222,32 +222,37 @@ connect and stream from you? - + + &View Logfile + + + + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -330,37 +335,37 @@ connect and stream from you? AudioControls - + Shuffle 隨機 - + Repeat 重複 - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -1076,31 +1081,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 @@ -3316,308 +3321,178 @@ enter the displayed PIN number here: Tomahawk - - &Quit - 結束 - - - - Ctrl+Q - Ctrl+Q - - - - Go &Online - 上網 - - - - Add &Friend... - - - - - U&pdate Collection - 更新收藏 - - - - Update Collection - 更新收藏 - - - - &Configure Tomahawk... - 配置 Tomahawk ... - - - - Load &XSPF... - - - - - Create &New Playlist... - 建立新的播放清單... - - - - About &Tomahawk... - 關於 Tomahawk... - - - - Create New &Automatic Playlist - 建立新的自動播放清單 - - - - Create New &Station - - - - - Show Offline Sources - - - - - Hide Offline Sources - - - - - Minimize - 最小化 - - - - Ctrl+M - Ctrl+M - - - - Zoom - - - - - Meta+Ctrl+Z - - - - - &Legal Info... - - - - - Diagnostics... - 診斷... - - - - Fully &Rescan Collection - 徹底地重新掃描收藏 - - - - Fully Rescan Collection - 徹底地重新掃描收藏 - - - - Play - 播放 - - - - Space - - - - - Previous - 前一首 - - - - Next - 下一首 - - - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - - - + + + Connect To Peer 連接點對點 - + Enter peer address: 輸入對等地址: - + Enter peer port: 輸入對等連接埠: - + Enter peer key: 輸入對等密鑰: - + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk From b2ef2552f839fc95da8e977b2d5051ba323af77c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 02:17:09 +0100 Subject: [PATCH 110/310] * Added new color roles for selection foreground / background. --- src/libtomahawk/utils/TomahawkUtilsGui.cpp | 10 +++++++--- src/libtomahawk/utils/TomahawkUtilsGui.h | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 7bc172d6fe..c0db158946 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -200,11 +200,15 @@ drawBackgroundAndNumbers( QPainter* painter, const QString& text, const QRect& f void -drawQueryBackground( QPainter* p, const QPalette& palette, const QRect& r, qreal lightnessFactor ) +drawQueryBackground( QPainter* p, const QRect& r ) { - p->setPen( palette.highlight().color().lighter( lightnessFactor * 100 ) ); - p->setBrush( palette.highlight().color().lighter( lightnessFactor * 100 ) ); + p->save(); + + p->setPen( Colors::SELECTION_BACKGROUND ); + p->setBrush( Colors::SELECTION_BACKGROUND ); p->drawRoundedRect( r, 4.0, 4.0 ); + + p->restore(); } diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.h b/src/libtomahawk/utils/TomahawkUtilsGui.h index 206a016cd6..5544a2ee18 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.h +++ b/src/libtomahawk/utils/TomahawkUtilsGui.h @@ -41,7 +41,7 @@ class QScrollBar; namespace TomahawkUtils { - DLLEXPORT void drawQueryBackground( QPainter* p, const QPalette& palette, const QRect& r, qreal lightnessFactor = 1 ); + DLLEXPORT void drawQueryBackground( QPainter* p, const QRect& r ); DLLEXPORT QWidget* tomahawkWindow(); /// Platform-specific bringing tomahawk mainwindow to front, b/c qt's activate() and such don't seem to work well enough for us DLLEXPORT void bringToFront(); @@ -82,6 +82,8 @@ namespace TomahawkUtils static const QColor GROUP_HEADER = QColor( "#637180" ); static const QColor NOW_PLAYING_ITEM = QColor( "#962c26" ); static const QColor NOW_PLAYING_ITEM_TEXT = QColor( "#ffffff" ); + static const QColor SELECTION_BACKGROUND = QColor( "#962c26" ); + static const QColor SELECTION_FOREGROUND = QColor( "#ffffff" ); } static const int POPUP_ROUNDING_RADIUS = 6; From 41da9c8a4ee659a3afda70e2ab8f34be52cf69ad Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 02:17:32 +0100 Subject: [PATCH 111/310] * Use new color roles. --- src/libtomahawk/playlist/GridItemDelegate.cpp | 6 +++--- src/libtomahawk/widgets/PlayableCover.cpp | 4 ++-- src/libtomahawk/widgets/QueryLabel.cpp | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/GridItemDelegate.cpp b/src/libtomahawk/playlist/GridItemDelegate.cpp index 9271dac32f..cfc074d062 100644 --- a/src/libtomahawk/playlist/GridItemDelegate.cpp +++ b/src/libtomahawk/playlist/GridItemDelegate.cpp @@ -198,7 +198,7 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, painter->drawRect( gradientRect ); painter->restore(); - painter->setPen( Qt::white ); + painter->setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); QRect textRect = option.rect.adjusted( 6, option.rect.height() - frameHeight, -6, -6 ); bool oneLiner = false; @@ -225,8 +225,8 @@ GridItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, r.adjust( 4, 0, -4, -1 ); if ( m_hoveringOver == index ) { - TomahawkUtils::drawQueryBackground( painter, opt.palette, r, 1.1 ); - painter->setPen( opt.palette.color( QPalette::HighlightedText ) ); + TomahawkUtils::drawQueryBackground( painter, r ); + painter->setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); } to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom ); diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 2c5652f264..016f19b895 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -251,8 +251,8 @@ PlayableCover::paintEvent( QPaintEvent* event ) if ( m_hoveredRect == r ) { - TomahawkUtils::drawQueryBackground( &bufpainter, palette(), r, 1.1 ); - bufpainter.setPen( Qt::white ); + TomahawkUtils::drawQueryBackground( &bufpainter, r ); + bufpainter.setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); } to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom ); diff --git a/src/libtomahawk/widgets/QueryLabel.cpp b/src/libtomahawk/widgets/QueryLabel.cpp index 35b11628c8..efa6cede4d 100644 --- a/src/libtomahawk/widgets/QueryLabel.cpp +++ b/src/libtomahawk/widgets/QueryLabel.cpp @@ -387,21 +387,22 @@ QueryLabel::paintEvent( QPaintEvent* event ) m_hoverType = Track; } - TomahawkUtils::drawQueryBackground( &p, palette(), m_hoverArea ); + TomahawkUtils::drawQueryBackground( &p, m_hoverArea ); } if ( elidedText != s || ( m_result.isNull() && m_query.isNull() && m_artist.isNull() && m_album.isNull() ) ) { if ( m_hoverArea.width() ) { - p.setPen( palette().highlightedText().color() ); - p.setBrush( palette().highlight() ); + p.setBrush( TomahawkUtils::Colors::SELECTION_BACKGROUND ); + p.setPen( TomahawkUtils::Colors::SELECTION_FOREGROUND ); } else { p.setBrush( palette().window() ); p.setPen( palette().color( foregroundRole() ) ); } + p.drawText( r, m_align, elidedText ); } else From 8ff04a834108fe7283e0991518694a732be8c43d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 02:26:43 +0100 Subject: [PATCH 112/310] * Added context menu to PlayableCover. --- src/libtomahawk/widgets/PlayableCover.cpp | 21 +++++++++++++++++++++ src/libtomahawk/widgets/PlayableCover.h | 9 +++++++++ 2 files changed, 30 insertions(+) diff --git a/src/libtomahawk/widgets/PlayableCover.cpp b/src/libtomahawk/widgets/PlayableCover.cpp index 016f19b895..9f5a140e4c 100644 --- a/src/libtomahawk/widgets/PlayableCover.cpp +++ b/src/libtomahawk/widgets/PlayableCover.cpp @@ -20,6 +20,7 @@ #include "Artist.h" #include "Album.h" +#include "ContextMenu.h" #include "ViewManager.h" #include "audio/AudioEngine.h" #include "widgets/ImageButton.h" @@ -28,6 +29,7 @@ #include +using namespace Tomahawk; PlayableCover::PlayableCover( QWidget* parent ) : QLabel( parent ) @@ -45,6 +47,9 @@ PlayableCover::PlayableCover( QWidget* parent ) m_button->hide(); connect( m_button, SIGNAL( clicked( bool ) ), SLOT( onClicked() ) ); + + m_contextMenu = new ContextMenu( this ); + m_contextMenu->setSupportedActions( ContextMenu::ActionQueue | ContextMenu::ActionCopyLink | ContextMenu::ActionStopAfter | ContextMenu::ActionLove | ContextMenu::ActionPage ); } @@ -129,6 +134,22 @@ PlayableCover::mouseReleaseEvent( QMouseEvent* event ) } +void +PlayableCover::contextMenuEvent( QContextMenuEvent* event ) +{ + m_contextMenu->clear(); + + if ( m_artist ) + m_contextMenu->setArtist( m_artist ); + else if ( m_album ) + m_contextMenu->setAlbum( m_album ); + else + m_contextMenu->setQuery( m_query ); + + m_contextMenu->exec( event->globalPos() ); +} + + void PlayableCover::setPixmap( const QPixmap& pixmap ) { diff --git a/src/libtomahawk/widgets/PlayableCover.h b/src/libtomahawk/widgets/PlayableCover.h index 0a07af9e7c..770351a4ba 100644 --- a/src/libtomahawk/widgets/PlayableCover.h +++ b/src/libtomahawk/widgets/PlayableCover.h @@ -28,6 +28,11 @@ class ImageButton; +namespace Tomahawk +{ + class ContextMenu; +}; + /** * \class PlayableCover * \brief QLabel which shows a play/pause button on hovering. @@ -58,6 +63,8 @@ public slots: virtual void mouseMoveEvent( QMouseEvent* event ); virtual void mouseReleaseEvent( QMouseEvent* event ); + + virtual void contextMenuEvent( QContextMenuEvent* event ); void leaveEvent( QEvent* event ); void enterEvent( QEvent* event ); @@ -69,6 +76,8 @@ private slots: QPixmap m_pixmap; ImageButton* m_button; + Tomahawk::ContextMenu* m_contextMenu; + Tomahawk::artist_ptr m_artist; Tomahawk::album_ptr m_album; Tomahawk::query_ptr m_query; From 0eaf9bf1e659adedb137a4028b6919fc30b5cc0a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 03:17:56 +0100 Subject: [PATCH 113/310] * Fixed compiling. --- src/accounts/twitter/sip/TwitterSip.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/accounts/twitter/sip/TwitterSip.cpp b/src/accounts/twitter/sip/TwitterSip.cpp index 4364199d45..527a9705b6 100644 --- a/src/accounts/twitter/sip/TwitterSip.cpp +++ b/src/accounts/twitter/sip/TwitterSip.cpp @@ -155,7 +155,7 @@ TwitterSipPlugin::disconnectPlugin() if( !m_directMessageDestroy.isNull() ) delete m_directMessageDestroy.data(); - m_cachedTwitterAuth.clear(); + m_cachedTwitterAuth = 0; m_configuration[ "cachedpeers" ] = m_cachedPeers; syncConfig(); From a8bd444e6cd3e0b1aad7d41d339b58f54c9179e8 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 03:22:03 +0100 Subject: [PATCH 114/310] * Fixed broken signal / slot connect. --- src/libtomahawk/audio/AudioEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 84ae947fd9..811c446b25 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -902,7 +902,7 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) connect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); connect( m_playlist.data(), SIGNAL( shuffleModeChanged( bool ) ), SIGNAL( shuffleModeChanged( bool ) ) ); - connect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ) ), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ) ) ); + connect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); emit shuffleModeChanged( m_playlist.data()->shuffled() ); emit repeatModeChanged( m_playlist.data()->repeatMode() ); From f2913e88491f0b1223b99ad10830ba9f10e60426 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 03:22:03 +0100 Subject: [PATCH 115/310] * Fixed broken signal / slot connect. --- src/libtomahawk/audio/AudioEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 84ae947fd9..811c446b25 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -902,7 +902,7 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) connect( m_playlist.data(), SIGNAL( nextTrackAvailable( bool ) ), SIGNAL( controlStateChanged() ) ); connect( m_playlist.data(), SIGNAL( shuffleModeChanged( bool ) ), SIGNAL( shuffleModeChanged( bool ) ) ); - connect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ) ), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode mode ) ) ); + connect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); emit shuffleModeChanged( m_playlist.data()->shuffled() ); emit repeatModeChanged( m_playlist.data()->repeatMode() ); From 29e73ad47c79852ca756986bf06bc7fa5594925f Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 06:12:14 +0100 Subject: [PATCH 116/310] qt5: add QUrl comp layer --- .../generic/charts/ChartsPlugin.cpp | 9 +- .../generic/discogs/DiscogsPlugin.cpp | 8 +- .../generic/musicbrainz/MusicBrainzPlugin.cpp | 14 ++- .../generic/musixmatch/MusixMatchPlugin.cpp | 14 ++- .../generic/newreleases/NewReleasesPlugin.cpp | 9 +- src/infoplugins/generic/rovi/RoviPlugin.cpp | 11 +- src/libtomahawk/AtticaManager.cpp | 3 +- src/libtomahawk/GlobalActionManager.cpp | 103 +++++++++--------- .../accounts/spotify/SpotifyInfoPlugin.cpp | 2 +- src/libtomahawk/audio/AudioEngine.cpp | 2 +- src/libtomahawk/utils/RdioParser.cpp | 30 ++--- src/libtomahawk/utils/SoundcloudParser.cpp | 5 +- src/libtomahawk/utils/TomahawkUtils.cpp | 61 +++++++++++ src/libtomahawk/utils/TomahawkUtils.h | 13 +++ 14 files changed, 191 insertions(+), 93 deletions(-) diff --git a/src/infoplugins/generic/charts/ChartsPlugin.cpp b/src/infoplugins/generic/charts/ChartsPlugin.cpp index 1092abdf4c..4d7e2c73ca 100644 --- a/src/infoplugins/generic/charts/ChartsPlugin.cpp +++ b/src/infoplugins/generic/charts/ChartsPlugin.cpp @@ -267,7 +267,8 @@ void ChartsPlugin::fetchChartSourcesList( bool fetchOnlySourceList ) { QUrl url = QUrl( QString ( CHART_URL "charts" ) ); - url.addQueryItem( "version", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() ); QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); reply->setProperty( "only_source_list", fetchOnlySourceList ); @@ -356,7 +357,8 @@ ChartsPlugin::fetchAllChartSources() foreach ( const Tomahawk::InfoSystem::InfoStringHash source, m_chartResources ) { QUrl url = QUrl( QString( CHART_URL "charts/%1" ).arg( source[ "chart_source" ] ) ); - url.addQueryItem( "version", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() ); QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); reply->setProperty( "chart_source", source[ "chart_source" ] ); @@ -375,7 +377,8 @@ ChartsPlugin::fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData, con { /// Fetch the chart, we need source and id QUrl url = QUrl ( QString ( CHART_URL "charts/%1/%2" ).arg( source ).arg( chart_id ) ); - url.addQueryItem( "version", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() ); tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "fetching: " << url; diff --git a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp index f4dc886529..7f252a222c 100644 --- a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp +++ b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp @@ -89,9 +89,11 @@ DiscogsPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requestD { QString requestString( "http://api.discogs.com/database/search" ); QUrl url( requestString ); - url.addQueryItem( "type", "release" ); - url.addQueryItem( "release_title", criteria[ "album" ] ); - url.addQueryItem( "artist", criteria[ "artist" ] ); + + TomahawkUtils::urlAddQueryItem( url, "type", "release" ); + TomahawkUtils::urlAddQueryItem( url, "release_title", criteria[ "album" ] ); + TomahawkUtils::urlAddQueryItem( url, "artist", criteria[ "artist" ] ); + QNetworkRequest req( url ); req.setRawHeader( "User-Agent", "TomahawkPlayer/1.0 +http://tomahawk-player.org" ); QNetworkReply* reply = TomahawkUtils::nam()->get( req ); diff --git a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp index a7fc23bb8a..d000bb7f22 100644 --- a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp +++ b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp @@ -106,8 +106,10 @@ MusicBrainzPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ QString requestString( "http://musicbrainz.org/ws/2/release-group" ); QUrl url( requestString ); - url.addQueryItem( "query", querySt ); - url.addQueryItem( "limit", "100" ); + + TomahawkUtils::urlAddQueryItem( url, "query", querySt ); + TomahawkUtils::urlAddQueryItem( url, "limit", "100" ); + tDebug() << Q_FUNC_INFO << url.toString(); QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) ); @@ -124,8 +126,10 @@ MusicBrainzPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ QString requestString( "http://musicbrainz.org/ws/2/release" ); QUrl url( requestString ); - url.addQueryItem( "query", querySt ); - url.addQueryItem( "limit", "100" ); + + TomahawkUtils::urlAddQueryItem( url, "query", querySt ); + TomahawkUtils::urlAddQueryItem( url, "limit", "100" ); + tDebug() << Q_FUNC_INFO << url.toString(); QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) ); @@ -230,7 +234,7 @@ MusicBrainzPlugin::gotReleasesSlot() QString requestString = QString( "http://musicbrainz.org/ws/2/release/%1" ).arg( release_id ); QUrl url( requestString ); - url.addQueryItem( "inc", "recordings" ); + TomahawkUtils::urlAddQueryItem( url, "inc", "recordings" ); tDebug() << Q_FUNC_INFO << url.toString(); QNetworkReply* newReply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); diff --git a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp index 53223a2b99..effc439563 100644 --- a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp +++ b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp @@ -64,9 +64,11 @@ MusixMatchPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData ) tDebug() << "artist is " << artist << ", track is " << track; QString requestString( "http://api.musixmatch.com/ws/1.1/track.search?format=xml&page_size=1&f_has_lyrics=1" ); QUrl url( requestString ); - url.addQueryItem( "apikey", m_apiKey ); - url.addQueryItem( "q_artist", artist ); - url.addQueryItem( "q_track", track ); + + TomahawkUtils::urlAddQueryItem( url, "apikey", m_apiKey ); + TomahawkUtils::urlAddQueryItem( url, "q_artist", artist ); + TomahawkUtils::urlAddQueryItem( url, "q_track", track ); + QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) ); @@ -123,8 +125,10 @@ MusixMatchPlugin::trackSearchSlot() QString track_id = domNodeList.at(0).toElement().text(); QString requestString( "http://api.musixmatch.com/ws/1.1/track.lyrics.get?track_id=%1&format=xml&apikey=%2" ); QUrl url( requestString ); - url.addQueryItem( "apikey", m_apiKey ); - url.addQueryItem( "track_id", track_id ); + + TomahawkUtils::urlAddQueryItem( url, "apikey", m_apiKey ); + TomahawkUtils::urlAddQueryItem( url, "track_id", track_id ); + QNetworkReply* newReply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); newReply->setProperty( "requestData", oldReply->property( "requestData" ) ); connect( newReply, SIGNAL( finished() ), SLOT( trackLyricsSlot() ) ); diff --git a/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp b/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp index 55e5dd6537..1d32805f66 100644 --- a/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp +++ b/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp @@ -257,7 +257,8 @@ NewReleasesPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ tDebug ( LOGVERBOSE ) << Q_FUNC_INFO << "InfoChartCapabilities not in cache! Fetching..." << criteria << requestData.requestId; QUrl url = QUrl( QString ( CHART_URL "newreleases" ) ); - url.addQueryItem( "version", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() ); QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest ( url ) ); reply->setProperty( "only_source_list", true ); @@ -389,7 +390,8 @@ NewReleasesPlugin::fetchAllNRSources() foreach ( const Tomahawk::InfoSystem::InfoStringHash source, m_nrSources ) { QUrl url = QUrl( QString( CHART_URL "newreleases/%1" ).arg( source[ "nr_source" ] ) ); - url.addQueryItem( "version", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() ); QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); reply->setProperty( "nr_source", source[ "nr_source" ] ); @@ -408,7 +410,8 @@ NewReleasesPlugin::fetchNR( InfoRequestData requestData, const QString& source, { /// Fetch the chart, we need source and id QUrl url = QUrl ( QString ( CHART_URL "newreleases/%1/%2" ).arg( source ).arg( nr_id ) ); - url.addQueryItem( "version", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "version", TomahawkUtils::appFriendlyVersion() ); tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "fetching: " << url; diff --git a/src/infoplugins/generic/rovi/RoviPlugin.cpp b/src/infoplugins/generic/rovi/RoviPlugin.cpp index 99f3ed9904..8e39030a04 100644 --- a/src/infoplugins/generic/rovi/RoviPlugin.cpp +++ b/src/infoplugins/generic/rovi/RoviPlugin.cpp @@ -79,9 +79,10 @@ RoviPlugin::notInCacheSlot( Tomahawk::InfoSystem::InfoStringHash criteria, Tomah case InfoAlbumSongs: { QUrl baseUrl = QUrl( "http://api.rovicorp.com/search/v2/music/search" ); - baseUrl.addQueryItem( "query", QString( "%1 %2" ).arg( criteria[ "artist" ] ).arg( criteria[ "album" ] ) ); - baseUrl.addQueryItem( "entitytype", "album" ); - baseUrl.addQueryItem( "include", "album:tracks" ); + + TomahawkUtils::urlAddQueryItem( baseUrl, "query", QString( "%1 %2" ).arg( criteria[ "artist" ] ).arg( criteria[ "album" ] ) ); + TomahawkUtils::urlAddQueryItem( baseUrl, "entitytype", "album" ); + TomahawkUtils::urlAddQueryItem( baseUrl, "include", "album:tracks" ); QNetworkReply* reply = makeRequest( baseUrl ); @@ -178,8 +179,8 @@ RoviPlugin::albumLookupFinished() QNetworkReply* RoviPlugin::makeRequest( QUrl url ) { - url.addQueryItem( "apikey", m_apiKey ); - url.addEncodedQueryItem( "sig", generateSig() ); + TomahawkUtils::urlAddQueryItem( url, "apikey", m_apiKey ); + TomahawkUtils::urlAddQueryItem( url, "sig", generateSig() ); qDebug() << "Rovi request url:" << url.toString(); return TomahawkUtils::nam()->get( QNetworkRequest( url ) ); diff --git a/src/libtomahawk/AtticaManager.cpp b/src/libtomahawk/AtticaManager.cpp index d34b024935..5eac071d5d 100644 --- a/src/libtomahawk/AtticaManager.cpp +++ b/src/libtomahawk/AtticaManager.cpp @@ -546,7 +546,8 @@ void AtticaManager::doInstallResolver( const Content& resolver, bool autoCreate, // ItemJob< DownloadItem >* job = m_resolverProvider.downloadLink( resolver.id() ); QUrl url( QString( "%1/resolvers/v1/content/download/%2/1" ).arg( hostname() ).arg( resolver.id() ) ); - url.addQueryItem( "tomahawkversion", TomahawkUtils::appFriendlyVersion() ); + + TomahawkUtils::urlAddQueryItem( url, "tomahawkversion", TomahawkUtils::appFriendlyVersion() ); QNetworkReply* r = TomahawkUtils::nam()->get( QNetworkRequest( url ) ); NewClosure( r, SIGNAL( finished() ), this, SLOT( resolverDownloadFinished( QNetworkReply* ) ), r ); r->setProperty( "resolverId", resolver.id() ); diff --git a/src/libtomahawk/GlobalActionManager.cpp b/src/libtomahawk/GlobalActionManager.cpp index e33f92526e..7443f091c4 100644 --- a/src/libtomahawk/GlobalActionManager.cpp +++ b/src/libtomahawk/GlobalActionManager.cpp @@ -62,6 +62,7 @@ GlobalActionManager* GlobalActionManager::s_instance = 0; using namespace Tomahawk; +using namespace TomahawkUtils; GlobalActionManager* @@ -129,11 +130,11 @@ GlobalActionManager::openLink( const QString& title, const QString& artist, cons QUrl link( QString( "%1/open/track/" ).arg( hostname() ) ); if ( !artist.isEmpty() ) - link.addQueryItem( "artist", artist ); + TomahawkUtils::urlAddQueryItem( link, "artist", artist ); if ( !title.isEmpty() ) - link.addQueryItem( "title", title ); + TomahawkUtils::urlAddQueryItem( link, "title", title ); if ( !album.isEmpty() ) - link.addQueryItem( "album", album ); + TomahawkUtils::urlAddQueryItem( link, "album", album ); return link; } @@ -221,8 +222,8 @@ GlobalActionManager::copyPlaylistToClipboard( const dynplaylist_ptr& playlist ) return QString(); } - link.addEncodedQueryItem( "type", "echonest" ); - link.addQueryItem( "title", playlist->title() ); + TomahawkUtils::urlAddQueryItem( link, "type", "echonest" ); + TomahawkUtils::urlAddQueryItem( link, "title", playlist->title() ); QList< dyncontrol_ptr > controls = playlist->generator()->controls(); foreach ( const dyncontrol_ptr& c, controls ) @@ -230,13 +231,13 @@ GlobalActionManager::copyPlaylistToClipboard( const dynplaylist_ptr& playlist ) if ( c->selectedType() == "Artist" ) { if ( c->match().toInt() == Echonest::DynamicPlaylist::ArtistType ) - link.addQueryItem( "artist_limitto", c->input() ); + TomahawkUtils::urlAddQueryItem( link, "artist_limitto", c->input() ); else - link.addQueryItem( "artist", c->input() ); + TomahawkUtils::urlAddQueryItem( link, "artist", c->input() ); } else if ( c->selectedType() == "Artist Description" ) { - link.addQueryItem( "description", c->input() ); + TomahawkUtils::urlAddQueryItem( link, "description", c->input() ); } else { @@ -249,7 +250,7 @@ GlobalActionManager::copyPlaylistToClipboard( const dynplaylist_ptr& playlist ) || p == Echonest::DynamicPlaylist::ArtistMaxLongitude ) name += "_max"; - link.addQueryItem( name, c->input() ); + TomahawkUtils::urlAddQueryItem( link, name, c->input() ); } } @@ -318,9 +319,9 @@ GlobalActionManager::parseTomahawkLink( const QString& urlIn ) // for backwards compatibility if ( cmdType == "load" ) { - if ( u.hasQueryItem( "xspf" ) ) + if ( urlHasQueryItem( u, "xspf" ) ) { - QUrl xspf = QUrl::fromUserInput( u.queryItemValue( "xspf" ) ); + QUrl xspf = QUrl::fromUserInput( urlQueryItemValue( u, "xspf" ) ); XSPFLoader* l = new XSPFLoader( true, this ); tDebug() << "Loading spiff:" << xspf.toString(); l->load( xspf ); @@ -328,9 +329,9 @@ GlobalActionManager::parseTomahawkLink( const QString& urlIn ) return true; } - else if ( u.hasQueryItem( "jspf" ) ) + else if ( urlHasQueryItem( u, "jspf" ) ) { - QUrl jspf = QUrl::fromUserInput( u.queryItemValue( "jspf" ) ); + QUrl jspf = QUrl::fromUserInput( urlQueryItemValue( u, "jspf" ) ); JSPFLoader* l = new JSPFLoader( true, this ); tDebug() << "Loading jspiff:" << jspf.toString(); @@ -411,35 +412,35 @@ GlobalActionManager::handlePlaylistCommand( const QUrl& url ) if ( parts[ 0 ] == "import" ) { - if ( !url.hasQueryItem( "xspf" ) && !url.hasQueryItem( "jspf") ) + if ( !urlHasQueryItem( url, "xspf" ) && !urlHasQueryItem( url, "jspf" ) ) { tDebug() << "No xspf or jspf to load..."; return false; } - if ( url.hasQueryItem( "xspf" ) ) + if ( urlHasQueryItem( url, "xspf" ) ) { - createPlaylistFromUrl( "xspf", url.queryItemValue( "xspf" ), url.hasQueryItem( "title" ) ? url.queryItemValue( "title" ) : QString() ); + createPlaylistFromUrl( "xspf", urlQueryItemValue( url, "xspf" ), urlHasQueryItem( url, "title" ) ? urlQueryItemValue( url, "title" ) : QString() ); return true; } - else if ( url.hasQueryItem( "jspf" ) ) + else if ( urlHasQueryItem( url, "jspf" ) ) { - createPlaylistFromUrl( "jspf", url.queryItemValue( "jspf" ), url.hasQueryItem( "title" ) ? url.queryItemValue( "title" ) : QString() ); + createPlaylistFromUrl( "jspf", urlQueryItemValue( url, "jspf" ), urlHasQueryItem( url, "title" ) ? urlQueryItemValue( url, "title" ) : QString() ); return true; } } else if ( parts [ 0 ] == "new" ) { - if ( !url.hasQueryItem( "title" ) ) + if ( !urlHasQueryItem( url, "title" ) ) { tLog() << "New playlist command needs a title..."; return false; } - playlist_ptr pl = Playlist::create( SourceList::instance()->getLocal(), uuid(), url.queryItemValue( "title" ), QString(), QString(), false ); + playlist_ptr pl = Playlist::create( SourceList::instance()->getLocal(), uuid(), urlQueryItemValue( url, "title" ), QString(), QString(), false ); ViewManager::instance()->show( pl ); } else if ( parts[ 0 ] == "add" ) { - if ( !url.hasQueryItem( "playlistid" ) || !url.hasQueryItem( "title" ) || !url.hasQueryItem( "artist" ) ) + if ( !urlHasQueryItem( url, "playlistid" ) || !urlHasQueryItem( url, "title" ) || !urlHasQueryItem( url, "artist" ) ) { tLog() << "Add to playlist command needs playlistid, track, and artist..." << url.toString(); return false; @@ -461,14 +462,14 @@ GlobalActionManager::handleImportCommand( const QUrl& url ) if ( parts[ 0 ] == "playlist" ) { - if ( url.hasQueryItem( "xspf" ) ) + if ( urlHasQueryItem( url, "xspf" ) ) { - createPlaylistFromUrl( "xspf", url.queryItemValue( "xspf" ), url.hasQueryItem( "title" ) ? url.queryItemValue( "title" ) : QString() ); + createPlaylistFromUrl( "xspf", urlQueryItemValue( url, "xspf" ), urlHasQueryItem( url, "title" ) ? urlQueryItemValue( url, "title" ) : QString() ); return true; } - else if ( url.hasQueryItem( "jspf" ) ) + else if ( urlHasQueryItem( url, "jspf" ) ) { - createPlaylistFromUrl( "jspf", url.queryItemValue( "jspf" ), url.hasQueryItem( "title" ) ? url.queryItemValue( "title" ) : QString() ); + createPlaylistFromUrl( "jspf", urlQueryItemValue( url, "jspf" ), urlHasQueryItem( url, "title" ) ? urlQueryItemValue( url, "title" ) : QString() ); return true; } } @@ -547,7 +548,7 @@ GlobalActionManager::handleOpenCommand( const QUrl& url ) return false; } // TODO user configurable in the UI - return doQueueAdd( parts, url.queryItems() ); + return doQueueAdd( parts, urlQueryItems( url ) ); } @@ -601,7 +602,7 @@ GlobalActionManager::handleQueueCommand( const QUrl& url ) if ( parts[ 0 ] == "add" ) { - doQueueAdd( parts.mid( 1 ), url.queryItems() ); + doQueueAdd( parts.mid( 1 ), urlQueryItems( url ) ); } else { @@ -783,17 +784,17 @@ GlobalActionManager::handleSearchCommand( const QUrl& url ) { // open the super collection and set this as the search filter QString queryStr; - if ( url.hasQueryItem( "query" ) ) - queryStr = url.queryItemValue( "query" ); + if ( urlHasQueryItem( url, "query" ) ) + queryStr = urlQueryItemValue( url, "query" ); else { QStringList query; - if ( url.hasQueryItem( "artist" ) ) - query << url.queryItemValue( "artist" ); - if ( url.hasQueryItem( "album" ) ) - query << url.queryItemValue( "album" ); - if ( url.hasQueryItem( "title" ) ) - query << url.queryItemValue( "title" ); + if ( urlHasQueryItem( url, "artist" ) ) + query << urlQueryItemValue( url, "artist" ); + if ( urlHasQueryItem( url, "album" ) ) + query << urlQueryItemValue( url, "album" ); + if ( urlHasQueryItem( url, "title" ) ) + query << urlQueryItemValue( url, "title" ); queryStr = query.join( " " ); } @@ -817,7 +818,7 @@ GlobalActionManager::handleViewCommand( const QUrl& url ) if ( parts[ 0 ] == "artist" ) { - const QString artist = QUrl::fromPercentEncoding( url.encodedQueryItemValue( "name" ) ).replace( "+", " " ); + const QString artist = urlQueryItemValue( url, "name" ); if ( artist.isEmpty() ) { tLog() << "No artist supplied for view/artist command."; @@ -832,8 +833,8 @@ GlobalActionManager::handleViewCommand( const QUrl& url ) } else if ( parts[ 0 ] == "album" ) { - const QString artist = QUrl::fromPercentEncoding( url.encodedQueryItemValue( "artist" ) ).replace( "+", " " ); - const QString album = QUrl::fromPercentEncoding( url.encodedQueryItemValue( "name" ) ).replace( "+", " " ); + const QString artist = urlQueryItemValue( url, "artist" ); + const QString album = urlQueryItemValue( url, "name" ); if ( artist.isEmpty() || album.isEmpty() ) { tLog() << "No artist or album supplied for view/album command:" << url; @@ -848,9 +849,9 @@ GlobalActionManager::handleViewCommand( const QUrl& url ) } else if ( parts[ 0 ] == "track" ) { - const QString artist = QUrl::fromPercentEncoding( url.encodedQueryItemValue( "artist" ) ).replace( "+", " " ); - const QString album = QUrl::fromPercentEncoding( url.encodedQueryItemValue( "album" ) ).replace( "+", " " ); - const QString track = QUrl::fromPercentEncoding( url.encodedQueryItemValue( "name" ) ).replace( "+", " " ); + const QString artist = urlQueryItemValue( url, "artist" ); + const QString album = urlQueryItemValue( url, "album" ); + const QString track = urlQueryItemValue( url, "track" ); if ( artist.isEmpty() || track.isEmpty() ) { tLog() << "No artist or track supplied for view/track command:" << url; @@ -887,13 +888,13 @@ GlobalActionManager::loadDynamicPlaylist( const QUrl& url, bool station ) if ( parts[ 0 ] == "create" ) { - if ( !url.hasQueryItem( "title" ) || !url.hasQueryItem( "type" ) ) + if ( !urlHasQueryItem( url, "title" ) || !urlHasQueryItem( url, "type" ) ) { tLog() << "Station create command needs title and type..." << url.toString(); return Tomahawk::dynplaylist_ptr(); } - QString title = url.queryItemValue( "title" ); - QString type = url.queryItemValue( "type" ); + QString title = urlQueryItemValue( url, "title" ); + QString type = urlQueryItemValue( url, "type" ); GeneratorMode m = Static; if ( station ) m = OnDemand; @@ -902,7 +903,7 @@ GlobalActionManager::loadDynamicPlaylist( const QUrl& url, bool station ) pl->setMode( m ); QList< dyncontrol_ptr > controls; QPair< QString, QString > param; - foreach ( param, url.queryItems() ) + foreach ( param, urlQueryItems( url ) ) { if ( param.first == "artist" ) { @@ -1088,7 +1089,7 @@ GlobalActionManager::handlePlayCommand( const QUrl& url ) QPair< QString, QString > pair; QString title, artist, album, urlStr; - foreach ( pair, url.queryItems() ) + foreach ( pair, urlQueryItems( url ) ) { if ( pair.first == "title" ) title = pair.second; @@ -1121,10 +1122,10 @@ GlobalActionManager::handlePlayCommand( const QUrl& url ) bool GlobalActionManager::playSpotify( const QUrl& url ) { - if ( !url.hasQueryItem( "spotifyURI" ) && !url.hasQueryItem( "spotifyURL" ) ) + if ( !urlHasQueryItem( url, "spotifyURI" ) && !urlHasQueryItem( url, "spotifyURL" ) ) return false; - QString spotifyUrl = url.hasQueryItem( "spotifyURI" ) ? url.queryItemValue( "spotifyURI" ) : url.queryItemValue( "spotifyURL" ); + QString spotifyUrl = urlHasQueryItem( url, "spotifyURI" ) ? urlQueryItemValue( url, "spotifyURI" ) : urlQueryItemValue( url, "spotifyURL" ); SpotifyParser* p = new SpotifyParser( spotifyUrl, this ); connect( p, SIGNAL( track( Tomahawk::query_ptr ) ), this, SLOT( playOrQueueNow( Tomahawk::query_ptr ) ) ); @@ -1156,10 +1157,10 @@ GlobalActionManager::playOrQueueNow( const query_ptr& q ) bool GlobalActionManager::playRdio( const QUrl& url ) { - if ( !url.hasQueryItem( "rdioURI" ) && !url.hasQueryItem( "rdioURL" ) ) + if ( !urlHasQueryItem( url, "rdioURI" ) && !urlHasQueryItem( url, "rdioURL" ) ) return false; - QString rdioUrl = url.hasQueryItem( "rdioURI" ) ? url.queryItemValue( "spotifyURI" ) : url.queryItemValue( "rdioURL" ); + QString rdioUrl = urlHasQueryItem( url, "rdioURI" ) ? urlQueryItemValue( url, "spotifyURI" ) : urlQueryItemValue( url, "rdioURL" ); RdioParser* p = new RdioParser( this ); p->parse( rdioUrl ); connect( p, SIGNAL( track( Tomahawk::query_ptr ) ), this, SLOT( playOrQueueNow( Tomahawk::query_ptr ) ) ); @@ -1183,7 +1184,7 @@ bool GlobalActionManager::handleBookmarkCommand(const QUrl& url) { QPair< QString, QString > pair; QString title, artist, album, urlStr; - foreach ( pair, url.queryItems() ) + foreach ( pair, urlQueryItems( url ) ) { if ( pair.first == "title" ) title = pair.second; diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp index 150a19ffc1..e08f0d1d47 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.cpp @@ -141,7 +141,7 @@ SpotifyInfoPlugin::notInCacheSlot( InfoStringHash criteria, InfoRequestData requ { // No running spotify account, use our webservice QUrl lookupUrl( "http://ws.spotify.com/search/1/album.json" ); - lookupUrl.addQueryItem( "q", QString( "%1 %2" ).arg( artist ).arg( album ) ); + TomahawkUtils::urlAddQueryItem( lookupUrl, "q", QString( "%1 %2" ).arg( artist ).arg( album ) ); QNetworkReply * reply = TomahawkUtils::nam()->get( QNetworkRequest( lookupUrl ) ); NewClosure( reply, SIGNAL( finished() ), this, SLOT( albumIdLookupFinished( QNetworkReply*, Tomahawk::InfoSystem::InfoRequestData ) ), reply, requestData ); diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 811c446b25..f4453d5f6a 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -470,7 +470,7 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) if ( m_currentTrack->url().contains( "?" ) ) { furl = QUrl( m_currentTrack->url().left( m_currentTrack->url().indexOf( '?' ) ) ); - furl.setEncodedQuery( QString( m_currentTrack->url().mid( m_currentTrack->url().indexOf( '?' ) + 1 ) ).toLocal8Bit() ); + TomahawkUtils::urlSetQuery( furl, QString( m_currentTrack->url().mid( m_currentTrack->url().indexOf( '?' ) + 1 ) ) ); } tLog( LOGVERBOSE ) << "Passing to Phonon:" << furl; diff --git a/src/libtomahawk/utils/RdioParser.cpp b/src/libtomahawk/utils/RdioParser.cpp index 54be18c73a..d1c93cc7b5 100644 --- a/src/libtomahawk/utils/RdioParser.cpp +++ b/src/libtomahawk/utils/RdioParser.cpp @@ -256,24 +256,26 @@ RdioParser::generateRequest( const QString& method, const QString& url, const QL QUrl fetchUrl( "http://api.rdio.com/1/" ); QUrl toSignUrl = fetchUrl; + QPair param; foreach ( param, extraParams ) { - toSignUrl.addEncodedQueryItem( param.first, param.second ); + TomahawkUtils::urlAddQueryItem( toSignUrl, param.first, param.second ); } - toSignUrl.addQueryItem( "method", method ); - toSignUrl.addEncodedQueryItem("oauth_consumer_key", "gk8zmyzj5xztt8aj48csaart" ); + TomahawkUtils::urlAddQueryItem( toSignUrl, "method", method ); + TomahawkUtils::urlAddQueryItem( toSignUrl, "oauth_consumer_key", "gk8zmyzj5xztt8aj48csaart" ); QString nonce; for ( int i = 0; i < 8; i++ ) nonce += QString::number( qrand() % 10 ); - toSignUrl.addQueryItem("oauth_nonce", nonce ); - toSignUrl.addEncodedQueryItem("oauth_signature_method", "HMAC-SHA1"); - toSignUrl.addQueryItem("oauth_timestamp", QString::number(QDateTime::currentMSecsSinceEpoch() / 1000 ) ); - toSignUrl.addEncodedQueryItem("oauth_version", "1.0"); - toSignUrl.addEncodedQueryItem( "url", QUrl::toPercentEncoding( url ) ); - int size = toSignUrl.encodedQueryItems().size(); + TomahawkUtils::urlAddQueryItem( toSignUrl, "oauth_nonce", nonce ); + TomahawkUtils::urlAddQueryItem( toSignUrl, "oauth_signature_method", "HMAC-SHA1"); + TomahawkUtils::urlAddQueryItem( toSignUrl, "oauth_timestamp", QString::number(QDateTime::currentMSecsSinceEpoch() / 1000 ) ); + TomahawkUtils::urlAddQueryItem( toSignUrl, "oauth_version", "1.0"); + TomahawkUtils::urlAddQueryItem( toSignUrl, "url", QUrl::toPercentEncoding( url ) ); + + int size = TomahawkUtils::urlQueryItems( toSignUrl ).size(); for( int i = 0; i < size; i++ ) { - const QPair< QByteArray, QByteArray > item = toSignUrl.encodedQueryItems().at( i ); + const QPair< QString, QString > item = TomahawkUtils::urlQueryItems( toSignUrl ).at( i ); data->append( item.first + "=" + item.second + "&" ); } data->truncate( data->size() - 1 ); // remove extra & @@ -281,13 +283,13 @@ RdioParser::generateRequest( const QString& method, const QString& url, const QL QByteArray toSign = "POST&" + QUrl::toPercentEncoding( fetchUrl.toEncoded() ) + '&' + QUrl::toPercentEncoding( *data ); qDebug() << "Rdio" << toSign; - toSignUrl.addEncodedQueryItem( "oauth_signature", QUrl::toPercentEncoding( hmacSha1("yt35kakDyW&", toSign ) ) ); + TomahawkUtils::urlAddQueryItem( toSignUrl, "oauth_signature", QUrl::toPercentEncoding( hmacSha1("yt35kakDyW&", toSign ) ) ); data->clear(); - size = toSignUrl.encodedQueryItems().size(); + size = TomahawkUtils::urlQueryItems( toSignUrl ).size(); for( int i = 0; i < size; i++ ) { - const QPair< QByteArray, QByteArray > item = toSignUrl.encodedQueryItems().at( i ); - data->append( item.first + "=" + item.second + "&" ); + const QPair< QString, QString > item = TomahawkUtils::urlQueryItems( toSignUrl ).at( i ); + data->append( item.first.toLatin1() + "=" + item.second.toLatin1() + "&" ); } data->truncate( data->size() - 1 ); // remove extra & diff --git a/src/libtomahawk/utils/SoundcloudParser.cpp b/src/libtomahawk/utils/SoundcloudParser.cpp index 0b331f3a40..22f58a83ba 100644 --- a/src/libtomahawk/utils/SoundcloudParser.cpp +++ b/src/libtomahawk/utils/SoundcloudParser.cpp @@ -119,7 +119,10 @@ SoundcloudParser::parseTrack( const QVariantMap& res ) if ( !q.isNull() ) { QUrl url = QUrl::fromUserInput( res.value( "stream_url" ).toString() ); - url.addQueryItem( "client_id", "TiNg2DRYhBnp01DA3zNag" ); + + TomahawkUtils::urlAddQueryItem( url, "client_id", "TiNg2DRYhBnp01DA3zNag" ); + + tLog() << "Setting resulthint to " << res.value( "stream_url" ) << url.toString(); q->setResultHint( url.toString() ); q->setSaveHTTPResultHint( true ); diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index baaa6874dc..c6a7bc5867 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -47,6 +47,10 @@ #include #include +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + #include +#endif + #ifdef Q_OS_WIN #include #include @@ -992,6 +996,63 @@ whitelistedHttpResultHint( const QString& url ) } +void +urlAddQueryItem( QUrl& url, const QString& key, const QString& value ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + QUrlQuery urlQuery( url ); + urlQuery.addQueryItem( key, value ); + url.setQuery( urlQuery ); +#else + url.addQueryItem( key, value ); +#endif +} + + +QString +urlQueryItemValue( const QUrl& url, const QString& key ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + return QUrlQuery( url ).queryItemValue( key ).replace( "+", " " ) +#else + return url.queryItemValue( key ).replace( "+", " " ); +#endif +} + + +bool +urlHasQueryItem( const QUrl& url, const QString& key ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + return QUrlQuery( url ).hasQueryItem( key ); +#else + return url.hasQueryItem( key ); +#endif +} + + +QList > +urlQueryItems( const QUrl& url ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + return QUrlQuery( url ).queryItems(); +#else + return url.queryItems(); +#endif +} + + +void +urlSetQuery( QUrl& url, const QString& query ) +{ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + url.setQuery( query ); +#else + url.setEncodedQuery( query.toLocal8Bit() ); +#endif +} + + } // ns #include "TomahawkUtils.moc" diff --git a/src/libtomahawk/utils/TomahawkUtils.h b/src/libtomahawk/utils/TomahawkUtils.h index c5b3401846..da0f02f322 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -214,6 +214,19 @@ 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(); + + + /** + * Qt4 / Qt5 compatibility layer + */ + + /* QUrl */ + DLLEXPORT void urlAddQueryItem( QUrl& url, const QString& key, const QString& value ); + DLLEXPORT QString urlQueryItemValue( const QUrl& url, const QString& key ); + DLLEXPORT bool urlHasQueryItem( const QUrl& url, const QString& key ); + DLLEXPORT QList > urlQueryItems( const QUrl& url ); + DLLEXPORT void urlSetQuery( QUrl& url, const QString& query ); + } #endif // TOMAHAWKUTILS_H From 587e0ad9271301ec47297342ef7b82fc1c7a75dd Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 07:16:41 +0100 Subject: [PATCH 117/310] qt5: use to/fromLatin1 instead of to/fromAscii --- src/TomahawkApp.cpp | 2 +- src/accounts/zeroconf/TomahawkZeroconf.h | 8 ++++---- src/infoplugins/linux/mpris/MprisPlugin.cpp | 2 +- src/libtomahawk/network/ControlConnection.cpp | 6 +++--- src/libtomahawk/playlist/FlexibleHeader.cpp | 2 +- src/libtomahawk/sip/SipInfo.cpp | 4 ++-- src/libtomahawk/utils/Logger.cpp | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index 964641f74e..5e8c30583d 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -383,7 +383,7 @@ TomahawkApp::instance() void TomahawkApp::printHelp() { - #define echo( X ) std::cout << QString( X ).toAscii().data() << "\n" + #define echo( X ) std::cout << QString( X ).toLatin1().data() << "\n" echo( "Usage: " + arguments().at( 0 ) + " [options] [url]" ); echo( "Options are:" ); diff --git a/src/accounts/zeroconf/TomahawkZeroconf.h b/src/accounts/zeroconf/TomahawkZeroconf.h index 76bf8c0031..c1d362fb43 100644 --- a/src/accounts/zeroconf/TomahawkZeroconf.h +++ b/src/accounts/zeroconf/TomahawkZeroconf.h @@ -104,13 +104,13 @@ public slots: .arg( m_port ) .arg( Database::instance()->impl()->dbid() ) .arg( QHostInfo::localHostName() ) - .toAscii(); + .toLatin1(); m_sock.writeDatagram( advert.data(), advert.size(), QHostAddress::Broadcast, ZCONF_PORT ); advert = QString( "TOMAHAWKADVERT:%1:%2" ) .arg( m_port ) .arg( Database::instance()->impl()->dbid() ) - .toAscii(); + .toLatin1(); m_sock.writeDatagram( advert.data(), advert.size(), QHostAddress::Broadcast, ZCONF_PORT ); } @@ -129,13 +129,13 @@ private slots: QHostAddress sender; quint16 senderPort; m_sock.readDatagram( datagram.data(), datagram.size(), &sender, &senderPort ); - qDebug() << "DATAGRAM RCVD" << QString::fromAscii( datagram ) << sender; + qDebug() << "DATAGRAM RCVD" << QString::fromLatin1( datagram ) << sender; // only process msgs originating on the LAN: if ( datagram.startsWith( "TOMAHAWKADVERT:" ) && Servent::isIPWhitelisted( sender ) ) { - QStringList parts = QString::fromAscii( datagram ).split( ':' ); + QStringList parts = QString::fromLatin1( datagram ).split( ':' ); if ( parts.length() == 4 ) { bool ok; diff --git a/src/infoplugins/linux/mpris/MprisPlugin.cpp b/src/infoplugins/linux/mpris/MprisPlugin.cpp index d86e4a3996..926a00d589 100644 --- a/src/infoplugins/linux/mpris/MprisPlugin.cpp +++ b/src/infoplugins/linux/mpris/MprisPlugin.cpp @@ -588,7 +588,7 @@ MprisPlugin::notifyPropertyChanged( const QString& interface, const QString& pro "PropertiesChanged" ); signal << interface; QVariantMap changedProps; - changedProps.insert(propertyName, property(propertyName.toAscii())); + changedProps.insert(propertyName, property(propertyName.toLatin1())); signal << changedProps; signal << QStringList(); QDBusConnection::sessionBus().send(signal); diff --git a/src/libtomahawk/network/ControlConnection.cpp b/src/libtomahawk/network/ControlConnection.cpp index a3f069c8e7..4aa0e8113e 100644 --- a/src/libtomahawk/network/ControlConnection.cpp +++ b/src/libtomahawk/network/ControlConnection.cpp @@ -255,7 +255,7 @@ ControlConnection::handleMsg( msg_ptr msg ) // if small and not compresed, print it out for debug if ( msg->length() < 1024 && !msg->is( Msg::COMPRESSED ) ) { - qDebug() << id() << "got msg:" << QString::fromAscii( msg->payload() ); + qDebug() << id() << "got msg:" << QString::fromLatin1( msg->payload() ); } // All control connection msgs are JSON @@ -289,13 +289,13 @@ ControlConnection::handleMsg( msg_ptr msg ) } else { - tDebug() << id() << "Unhandled msg:" << QString::fromAscii( msg->payload() ); + tDebug() << id() << "Unhandled msg:" << QString::fromLatin1( msg->payload() ); } return; } - tDebug() << id() << "Invalid msg:" << QString::fromAscii( msg->payload() ); + tDebug() << id() << "Invalid msg:" << QString::fromLatin1( msg->payload() ); } diff --git a/src/libtomahawk/playlist/FlexibleHeader.cpp b/src/libtomahawk/playlist/FlexibleHeader.cpp index 7c574fa080..c5fb772a10 100644 --- a/src/libtomahawk/playlist/FlexibleHeader.cpp +++ b/src/libtomahawk/playlist/FlexibleHeader.cpp @@ -45,7 +45,7 @@ FlexibleHeader::FlexibleHeader( FlexibleView* parent ) { QFile f( RESPATH "stylesheets/topbar-radiobuttons.css" ); f.open( QFile::ReadOnly ); - QString css = QString::fromAscii( f.readAll() ); + QString css = QString::fromLatin1( f.readAll() ); f.close(); QHBoxLayout* outerModeLayout = new QHBoxLayout; diff --git a/src/libtomahawk/sip/SipInfo.cpp b/src/libtomahawk/sip/SipInfo.cpp index b0a39001a3..03596305d0 100644 --- a/src/libtomahawk/sip/SipInfo.cpp +++ b/src/libtomahawk/sip/SipInfo.cpp @@ -205,7 +205,7 @@ SipInfo::toJson() const QJson::Serializer serializer; QByteArray ba = serializer.serialize( m ); - return QString::fromAscii( ba ); + return QString::fromLatin1( ba ); } @@ -216,7 +216,7 @@ SipInfo::fromJson( QString json ) QJson::Parser parser; bool ok; - QVariant v = parser.parse( json.toAscii(), &ok ); + QVariant v = parser.parse( json.toLatin1(), &ok ); if ( !ok || v.type() != QVariant::Map ) { qDebug() << Q_FUNC_INFO << "Invalid JSON: " << json; diff --git a/src/libtomahawk/utils/Logger.cpp b/src/libtomahawk/utils/Logger.cpp index def5f84099..a560e6971f 100644 --- a/src/libtomahawk/utils/Logger.cpp +++ b/src/libtomahawk/utils/Logger.cpp @@ -82,7 +82,7 @@ log( const char *msg, unsigned int debugLevel, bool toDisk = true ) logfile << "TSQLQUERY: "; #endif - logfile << QTime::currentTime().toString().toAscii().data() << " [" << QString::number( debugLevel ).toAscii().data() << "]: " << msg << endl; + logfile << QTime::currentTime().toString().toLatin1().data() << " [" << QString::number( debugLevel ).toLatin1().data() << "]: " << msg << endl; logfile.flush(); } @@ -170,6 +170,6 @@ TLog::TLog( unsigned int debugLevel ) TLog::~TLog() { - log( m_msg.toAscii().data(), m_debugLevel ); + log( m_msg.toLatin1().data(), m_debugLevel ); } From 74941e8aa468d5dcdfaca3957db4e9f424b496da Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 07:33:00 +0100 Subject: [PATCH 118/310] qt5: fix/rearrange includes --- .../generic/charts/ChartsPlugin.cpp | 17 +++++++++-------- .../generic/discogs/DiscogsPlugin.cpp | 8 +++++--- .../generic/musicbrainz/MusicBrainzPlugin.cpp | 6 +++--- .../generic/musixmatch/MusixMatchPlugin.cpp | 6 +++--- .../generic/newreleases/NewReleasesPlugin.cpp | 13 +++++++------ src/infoplugins/generic/rovi/RoviPlugin.cpp | 7 ++++--- src/libtomahawk/ActionCollection.h | 4 ++-- src/libtomahawk/AtticaManager.cpp | 12 ++++++------ src/libtomahawk/ContextMenu.h | 4 ++-- src/libtomahawk/ExternalResolverGui.cpp | 11 +++++------ src/libtomahawk/GlobalActionManager.cpp | 16 ++++++++-------- src/libtomahawk/LatchManager.cpp | 3 ++- src/libtomahawk/Result.h | 8 ++++---- src/libtomahawk/SourceList.cpp | 1 + src/libtomahawk/TomahawkSettings.cpp | 1 + src/libtomahawk/Typedefs.h | 2 +- src/libtomahawk/accounts/Account.h | 17 ++++++++--------- .../accounts/spotify/SpotifyAccount.h | 4 ++-- .../filemetadata/MetadataEditor.cpp | 14 ++++++++------ src/libtomahawk/filemetadata/MetadataEditor.h | 6 +++--- src/libtomahawk/filemetadata/MusicScanner.h | 17 +++++++++-------- src/libtomahawk/infosystem/InfoSystem.h | 8 ++++---- src/libtomahawk/network/MsgProcessor.cpp | 1 + src/libtomahawk/playlist/GridView.cpp | 12 +++++++----- src/libtomahawk/playlist/PlayableProxyModel.h | 2 +- src/libtomahawk/playlist/TrackView.cpp | 11 ++++++----- src/libtomahawk/playlist/TrackView.h | 8 ++++---- src/libtomahawk/playlist/TreeProxyModel.cpp | 3 +-- src/libtomahawk/playlist/TreeView.cpp | 12 +++++++----- src/libtomahawk/playlist/TreeView.h | 6 +++--- .../playlist/dynamic/DynamicControl.h | 10 ++++++---- .../dynamic/widgets/CollapsibleControls.h | 2 +- src/libtomahawk/resolvers/QtScriptResolver.cpp | 16 ++++++++-------- src/libtomahawk/resolvers/QtScriptResolver.h | 10 +++++----- src/libtomahawk/resolvers/ScriptResolver.h | 8 ++++---- src/libtomahawk/utils/AnimatedSpinner.cpp | 18 ++++++++---------- src/libtomahawk/utils/AnimatedSpinner.h | 8 ++++---- src/libtomahawk/utils/RdioParser.cpp | 18 +++++++++--------- src/libtomahawk/utils/SoundcloudParser.cpp | 8 ++++---- src/libtomahawk/utils/TomahawkUtils.cpp | 4 ++-- src/libtomahawk/utils/WidgetDragFilter.cpp | 5 ++--- src/libtomahawk/widgets/BasicHeader.cpp | 14 +++++++------- src/libtomahawk/widgets/BasicHeader.h | 2 +- src/libtomahawk/widgets/ImageButton.cpp | 13 ++++++------- src/libtomahawk/widgets/ImageButton.h | 8 ++++---- src/libtomahawk/widgets/NewPlaylistWidget.h | 6 +++--- src/libtomahawk/widgets/NewReleasesWidget.h | 8 ++++---- src/libtomahawk/widgets/QueryLabel.cpp | 14 ++++++++------ src/libtomahawk/widgets/SeekSlider.h | 4 ++-- src/libtomahawk/widgets/WhatsHotWidget.h | 8 ++++---- .../widgets/infowidgets/AlbumInfoWidget.h | 4 ++-- src/sourcetree/SourceDelegate.cpp | 9 +++++---- 52 files changed, 226 insertions(+), 211 deletions(-) diff --git a/src/infoplugins/generic/charts/ChartsPlugin.cpp b/src/infoplugins/generic/charts/ChartsPlugin.cpp index 4d7e2c73ca..0e87efd98f 100644 --- a/src/infoplugins/generic/charts/ChartsPlugin.cpp +++ b/src/infoplugins/generic/charts/ChartsPlugin.cpp @@ -21,12 +21,6 @@ #include "ChartsPlugin.h" -#include -#include -#include -#include -#include - #include "Album.h" #include "CountryUtils.h" #include "Typedefs.h" @@ -37,11 +31,18 @@ #include "utils/TomahawkCache.h" #include "Source.h" -#define CHART_URL "http://charts.tomahawk-player.org/" -//#define CHART_URL "http://localhost:8080/" #include #include +#include +#include +#include +#include +#include + +#define CHART_URL "http://charts.tomahawk-player.org/" +//#define CHART_URL "http://localhost:8080/" + namespace Tomahawk { diff --git a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp index 7f252a222c..405895f159 100644 --- a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp +++ b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp @@ -18,15 +18,17 @@ #include "DiscogsPlugin.h" -#include -#include -#include #include "utils/TomahawkUtils.h" #include "utils/Logger.h" #include "utils/Closure.h" + #include +#include +#include +#include + using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp index d000bb7f22..0629507306 100644 --- a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp +++ b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp @@ -19,13 +19,13 @@ #include "MusicBrainzPlugin.h" +#include "utils/TomahawkUtils.h" +#include "utils/Logger.h" + #include #include #include -#include "utils/TomahawkUtils.h" -#include "utils/Logger.h" - using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp index effc439563..ec255752b0 100644 --- a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp +++ b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp @@ -19,13 +19,13 @@ #include "MusixMatchPlugin.h" +#include "utils/TomahawkUtils.h" +#include "utils/Logger.h" + #include #include #include -#include "utils/TomahawkUtils.h" -#include "utils/Logger.h" - using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp b/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp index 1d32805f66..32cfb5a210 100644 --- a/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp +++ b/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp @@ -21,12 +21,6 @@ #include "NewReleasesPlugin.h" -#include -#include -#include -#include -#include - #include "Album.h" #include "CountryUtils.h" #include "Typedefs.h" @@ -36,9 +30,16 @@ #include "utils/Logger.h" #include "utils/TomahawkCache.h" #include "Source.h" + #include #include +#include +#include +#include +#include +#include + #define CHART_URL "http://charts.tomahawk-player.org/" //#define CHART_URL "http://localhost:8080/" diff --git a/src/infoplugins/generic/rovi/RoviPlugin.cpp b/src/infoplugins/generic/rovi/RoviPlugin.cpp index 8e39030a04..e5c74d191a 100644 --- a/src/infoplugins/generic/rovi/RoviPlugin.cpp +++ b/src/infoplugins/generic/rovi/RoviPlugin.cpp @@ -19,13 +19,14 @@ #include "RoviPlugin.h" +#include "utils/Logger.h" + +#include + #include #include #include -#include -#include "utils/Logger.h" - using namespace Tomahawk::InfoSystem; diff --git a/src/libtomahawk/ActionCollection.h b/src/libtomahawk/ActionCollection.h index 0de8f25cdc..5f0be10b2e 100644 --- a/src/libtomahawk/ActionCollection.h +++ b/src/libtomahawk/ActionCollection.h @@ -23,8 +23,8 @@ #include "DllMacro.h" -#include -#include +#include +#include class DLLEXPORT ActionCollection : public QObject { diff --git a/src/libtomahawk/AtticaManager.cpp b/src/libtomahawk/AtticaManager.cpp index 5eac071d5d..ea000074f3 100644 --- a/src/libtomahawk/AtticaManager.cpp +++ b/src/libtomahawk/AtticaManager.cpp @@ -24,6 +24,12 @@ #include "Source.h" #include "config.h" +#include "utils/Logger.h" +#include "accounts/ResolverAccount.h" +#include "accounts/AccountManager.h" +#include "utils/BinaryInstallerHelper.h" +#include "utils/Closure.h" + #include #include @@ -35,12 +41,6 @@ #include #include -#include "utils/Logger.h" -#include "accounts/ResolverAccount.h" -#include "accounts/AccountManager.h" -#include "utils/BinaryInstallerHelper.h" -#include "utils/Closure.h" - using namespace Attica; AtticaManager* AtticaManager::s_instance = 0; diff --git a/src/libtomahawk/ContextMenu.h b/src/libtomahawk/ContextMenu.h index f12fef5b3d..6844f04ee8 100644 --- a/src/libtomahawk/ContextMenu.h +++ b/src/libtomahawk/ContextMenu.h @@ -20,8 +20,8 @@ #ifndef CONTEXTMENU_H #define CONTEXTMENU_H -#include -#include +#include +#include #include "Typedefs.h" #include "DllMacro.h" diff --git a/src/libtomahawk/ExternalResolverGui.cpp b/src/libtomahawk/ExternalResolverGui.cpp index c0d38fa314..4b986e4131 100644 --- a/src/libtomahawk/ExternalResolverGui.cpp +++ b/src/libtomahawk/ExternalResolverGui.cpp @@ -19,16 +19,15 @@ #include "ExternalResolverGui.h" +#include "Source.h" +#include "utils/Logger.h" + #include #include #include - -#include -#include +#include +#include #include -#include "utils/Logger.h" - -#include "Source.h" Tomahawk::ExternalResolverGui::ExternalResolverGui(const QString& filePath) : Tomahawk::ExternalResolver(filePath) diff --git a/src/libtomahawk/GlobalActionManager.cpp b/src/libtomahawk/GlobalActionManager.cpp index 7443f091c4..a23bf9a63c 100644 --- a/src/libtomahawk/GlobalActionManager.cpp +++ b/src/libtomahawk/GlobalActionManager.cpp @@ -46,17 +46,17 @@ #include "playlist/PlaylistView.h" #include "widgets/SearchWidget.h" - #include - #include + #include + #include #endif -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include +#include +#include GlobalActionManager* GlobalActionManager::s_instance = 0; diff --git a/src/libtomahawk/LatchManager.cpp b/src/libtomahawk/LatchManager.cpp index a329c39c63..fa8e61227e 100644 --- a/src/libtomahawk/LatchManager.cpp +++ b/src/libtomahawk/LatchManager.cpp @@ -23,11 +23,12 @@ #include "audio/AudioEngine.h" #include "database/Database.h" -#include #include "SourceList.h" #include "database/DatabaseCommand_SocialAction.h" #include "SourcePlaylistInterface.h" +#include + using namespace Tomahawk; LatchManager::LatchManager( QObject* parent ) diff --git a/src/libtomahawk/Result.h b/src/libtomahawk/Result.h index 18c96632be..f230a9b9b5 100644 --- a/src/libtomahawk/Result.h +++ b/src/libtomahawk/Result.h @@ -20,10 +20,10 @@ #ifndef RESULT_H #define RESULT_H -#include -#include -#include -#include +#include +#include +#include +#include #include #include "utils/TomahawkUtils.h" diff --git a/src/libtomahawk/SourceList.cpp b/src/libtomahawk/SourceList.cpp index 9fa1d50bf8..5284397b1f 100644 --- a/src/libtomahawk/SourceList.cpp +++ b/src/libtomahawk/SourceList.cpp @@ -23,6 +23,7 @@ #include "database/DatabaseCommand_LoadAllSources.h" #include "network/RemoteCollection.h" #include "network/ControlConnection.h" +#include "infosystem/InfoSystemCache.h" #include "utils/Logger.h" diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp index ad3f9e855c..ef86d81dbd 100644 --- a/src/libtomahawk/TomahawkSettings.cpp +++ b/src/libtomahawk/TomahawkSettings.cpp @@ -32,6 +32,7 @@ #include "database/DatabaseCommand_UpdateSearchIndex.h" #include "database/Database.h" #include "playlist/PlaylistUpdaterInterface.h" +#include "infosystem/InfoSystemCache.h" using namespace Tomahawk; diff --git a/src/libtomahawk/Typedefs.h b/src/libtomahawk/Typedefs.h index ebccd41fba..988f6d10db 100644 --- a/src/libtomahawk/Typedefs.h +++ b/src/libtomahawk/Typedefs.h @@ -30,7 +30,7 @@ //template class QSharedPointer; -class QNetworkReply; +#include namespace Tomahawk { diff --git a/src/libtomahawk/accounts/Account.h b/src/libtomahawk/accounts/Account.h index cb61cdf74b..e7ddec24ab 100644 --- a/src/libtomahawk/accounts/Account.h +++ b/src/libtomahawk/accounts/Account.h @@ -20,18 +20,17 @@ #ifndef ACCOUNT_H #define ACCOUNT_H -#include -#include -#include -#include -#include -#include -#include - #include "Typedefs.h" #include "DllMacro.h" -// #include "libtomahawk/infosystem/InfoSystem.h" +#include +#include +#include +#include +#include +#include +#include + class SipPlugin; diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.h b/src/libtomahawk/accounts/spotify/SpotifyAccount.h index 0e2f7041a9..bb29d3b5ae 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.h +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.h @@ -28,8 +28,8 @@ #include "utils/SmartPointerList.h" #include "DllMacro.h" -class QAction; -class QAction; +#include + class SpotifyPlaylistUpdater; class QTimer; diff --git a/src/libtomahawk/filemetadata/MetadataEditor.cpp b/src/libtomahawk/filemetadata/MetadataEditor.cpp index da463e4e4e..55a14d8053 100644 --- a/src/libtomahawk/filemetadata/MetadataEditor.cpp +++ b/src/libtomahawk/filemetadata/MetadataEditor.cpp @@ -20,11 +20,6 @@ #include "MetadataEditor.h" #include "ui_MetadataEditor.h" -#include -#include -#include -#include - #include "Source.h" #include "Result.h" #include "Artist.h" @@ -34,12 +29,19 @@ #include "PlaylistInterface.h" #include "AlbumPlaylistInterface.h" -#include "taglib/fileref.h" #include "filemetadata/taghandlers/tag.h" #include "utils/TomahawkUtils.h" #include "utils/Closure.h" #include "utils/Logger.h" +#include "taglib/fileref.h" + + +#include +#include +#include +#include + MetadataEditor::MetadataEditor( const Tomahawk::query_ptr& query, const Tomahawk::playlistinterface_ptr& interface, QWidget* parent ) : QDialog( parent ) diff --git a/src/libtomahawk/filemetadata/MetadataEditor.h b/src/libtomahawk/filemetadata/MetadataEditor.h index aa3948cec7..7802048885 100644 --- a/src/libtomahawk/filemetadata/MetadataEditor.h +++ b/src/libtomahawk/filemetadata/MetadataEditor.h @@ -20,9 +20,9 @@ #ifndef METADATAEDITOR_H #define METADATAEDITOR_H -#include -#include -#include +#include +#include +#include #include "ui_MetadataEditor.h" #include "Query.h" diff --git a/src/libtomahawk/filemetadata/MusicScanner.h b/src/libtomahawk/filemetadata/MusicScanner.h index 029d52852e..06601e5bcd 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.h +++ b/src/libtomahawk/filemetadata/MusicScanner.h @@ -29,14 +29,15 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include // descend dir tree comparing dir mtimes to last known mtime diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 08fa9cf7b7..381ac3e1f9 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -20,6 +20,10 @@ #ifndef TOMAHAWK_INFOSYSTEM_H #define TOMAHAWK_INFOSYSTEM_H +#include "DllMacro.h" +#include "utils/TomahawkUtils.h" +#include "Typedefs.h" + #include #include #include @@ -32,10 +36,6 @@ #include #include -#include "DllMacro.h" -#include "utils/TomahawkUtils.h" -#include "Typedefs.h" - class QNetworkAccessManager; namespace Tomahawk { diff --git a/src/libtomahawk/network/MsgProcessor.cpp b/src/libtomahawk/network/MsgProcessor.cpp index 37f787c389..6409108cd2 100644 --- a/src/libtomahawk/network/MsgProcessor.cpp +++ b/src/libtomahawk/network/MsgProcessor.cpp @@ -21,6 +21,7 @@ #include "network/Servent.h" #include "utils/Logger.h" +#include MsgProcessor::MsgProcessor( quint32 mode, quint32 t ) : QObject(), m_mode( mode ), m_threshold( t ), m_totmsgsize( 0 ) diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index eff32c2347..da3810be6f 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -19,11 +19,6 @@ #include "GridView.h" -#include -#include -#include -#include - #include "audio/AudioEngine.h" #include "context/ContextWidget.h" #include "TomahawkSettings.h" @@ -41,6 +36,13 @@ #include "utils/AnimatedSpinner.h" #include "utils/TomahawkUtilsGui.h" +#include +#include +#include +#include +#include +#include + #define SCROLL_TIMEOUT 280 using namespace Tomahawk; diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h index cec45783e3..bb8b8924ab 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -20,7 +20,7 @@ #ifndef TRACKPROXYMODEL_H #define TRACKPROXYMODEL_H -#include +#include #include "PlaylistInterface.h" #include "playlist/PlayableModel.h" diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index d4c68c50f7..cd1d9b255e 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -19,11 +19,6 @@ #include "TrackView.h" -#include -#include -#include -#include - #include "ViewHeader.h" #include "ViewManager.h" #include "PlayableModel.h" @@ -42,6 +37,12 @@ #include "utils/AnimatedSpinner.h" #include "utils/Logger.h" + +#include +#include +#include +#include + #define SCROLL_TIMEOUT 280 using namespace Tomahawk; diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h index 7dc488e7a9..f0f5371bdf 100644 --- a/src/libtomahawk/playlist/TrackView.h +++ b/src/libtomahawk/playlist/TrackView.h @@ -20,16 +20,16 @@ #ifndef TRACKVIEW_H #define TRACKVIEW_H -#include -#include -#include - #include "ContextMenu.h" #include "PlaylistItemDelegate.h" #include "ViewPage.h" #include "DllMacro.h" +#include +#include +#include + class QAction; class AnimatedSpinner; class ViewHeader; diff --git a/src/libtomahawk/playlist/TreeProxyModel.cpp b/src/libtomahawk/playlist/TreeProxyModel.cpp index ecbc1aa920..d620faaa5e 100644 --- a/src/libtomahawk/playlist/TreeProxyModel.cpp +++ b/src/libtomahawk/playlist/TreeProxyModel.cpp @@ -19,8 +19,6 @@ #include "TreeProxyModel.h" -#include - #include "TreeProxyModelPlaylistInterface.h" #include "Source.h" #include "Query.h" @@ -30,6 +28,7 @@ #include "PlayableItem.h" #include "utils/Logger.h" +#include TreeProxyModel::TreeProxyModel( QObject* parent ) : PlayableProxyModel( parent ) diff --git a/src/libtomahawk/playlist/TreeView.cpp b/src/libtomahawk/playlist/TreeView.cpp index a9ef89a71f..53c7572ab3 100644 --- a/src/libtomahawk/playlist/TreeView.cpp +++ b/src/libtomahawk/playlist/TreeView.cpp @@ -19,11 +19,6 @@ #include "TreeView.h" -#include -#include -#include -#include - #include "audio/AudioEngine.h" #include "context/ContextWidget.h" #include "utils/AnimatedSpinner.h" @@ -40,6 +35,13 @@ #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" +#include +#include +#include +#include +#include +#include + #define SCROLL_TIMEOUT 280 using namespace Tomahawk; diff --git a/src/libtomahawk/playlist/TreeView.h b/src/libtomahawk/playlist/TreeView.h index 33fc77c2ac..288d6dab11 100644 --- a/src/libtomahawk/playlist/TreeView.h +++ b/src/libtomahawk/playlist/TreeView.h @@ -20,9 +20,9 @@ #ifndef TREEVIEW_H #define TREEVIEW_H -#include -#include -#include +#include +#include +#include #include "TreeProxyModel.h" #include "ViewPage.h" diff --git a/src/libtomahawk/playlist/dynamic/DynamicControl.h b/src/libtomahawk/playlist/dynamic/DynamicControl.h index f776d4242e..a5812eb738 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicControl.h +++ b/src/libtomahawk/playlist/dynamic/DynamicControl.h @@ -20,12 +20,14 @@ #ifndef DYNAMIC_PLAYLIST_CONTROL #define DYNAMIC_PLAYLIST_CONTROL -#include -#include -#include -#include #include "Typedefs.h" + +#include +#include +#include +#include + namespace Tomahawk { diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h index ff8981b980..2b1a19e221 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h @@ -22,7 +22,7 @@ #include "Typedefs.h" -#include +#include class QPaintEvent; class QHBoxLayout; diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index 51f8fd5174..08931a738e 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -19,14 +19,6 @@ #include "QtScriptResolver.h" -#include -#include -#include -#include -#include - -#include - #include "Artist.h" #include "Album.h" #include "config.h" @@ -40,6 +32,14 @@ #include "config.h" +#include +#include +#include +#include +#include + +#include + // FIXME: bloody hack, remove this for 0.3 // this one adds new functionality to old resolvers #define RESOLVER_LEGACY_CODE "var resolver = Tomahawk.resolver.instance ? Tomahawk.resolver.instance : TomahawkResolver;" diff --git a/src/libtomahawk/resolvers/QtScriptResolver.h b/src/libtomahawk/resolvers/QtScriptResolver.h index 78cc2b9ce6..29d85bf11b 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.h +++ b/src/libtomahawk/resolvers/QtScriptResolver.h @@ -25,11 +25,11 @@ #include "utils/TomahawkUtils.h" #include "config.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #ifdef QCA2_FOUND #include diff --git a/src/libtomahawk/resolvers/ScriptResolver.h b/src/libtomahawk/resolvers/ScriptResolver.h index b975768a5e..8663dcef41 100644 --- a/src/libtomahawk/resolvers/ScriptResolver.h +++ b/src/libtomahawk/resolvers/ScriptResolver.h @@ -20,15 +20,15 @@ #ifndef SCRIPTRESOLVER_H #define SCRIPTRESOLVER_H -#include +#include "Query.h" +#include "ExternalResolverGui.h" +#include "DllMacro.h" #include #include #include -#include "Query.h" -#include "ExternalResolverGui.h" -#include "DllMacro.h" +#include class QWidget; diff --git a/src/libtomahawk/utils/AnimatedSpinner.cpp b/src/libtomahawk/utils/AnimatedSpinner.cpp index 41ede8954d..6b7166fba8 100644 --- a/src/libtomahawk/utils/AnimatedSpinner.cpp +++ b/src/libtomahawk/utils/AnimatedSpinner.cpp @@ -17,19 +17,17 @@ #include "AnimatedSpinner.h" -#include +#include "utils/Logger.h" + +#include #include #include #include - -#include -#include -#include -#include -#include - -#include "utils/Logger.h" - +#include +#include +#include +#include +#include AnimatedSpinner::AnimatedSpinner( QWidget* parent ) : QWidget( parent ) diff --git a/src/libtomahawk/utils/AnimatedSpinner.h b/src/libtomahawk/utils/AnimatedSpinner.h index 00b2544fdb..96146030aa 100644 --- a/src/libtomahawk/utils/AnimatedSpinner.h +++ b/src/libtomahawk/utils/AnimatedSpinner.h @@ -20,11 +20,11 @@ #include "DllMacro.h" -#include +#include -#include -#include -#include +#include +#include +#include #include #include diff --git a/src/libtomahawk/utils/RdioParser.cpp b/src/libtomahawk/utils/RdioParser.cpp index d1c93cc7b5..3ef5899e69 100644 --- a/src/libtomahawk/utils/RdioParser.cpp +++ b/src/libtomahawk/utils/RdioParser.cpp @@ -19,15 +19,6 @@ #include "RdioParser.h" -#include -#include -#include -#include - -#include - -#include - #include "ShortenedLinkParser.h" #include "config.h" #include "DropJob.h" @@ -41,6 +32,15 @@ #include "utils/TomahawkUtils.h" #include "utils/Logger.h" + +#include + +#include +#include +#include +#include +#include + using namespace Tomahawk; QPixmap* RdioParser::s_pixmap = 0; diff --git a/src/libtomahawk/utils/SoundcloudParser.cpp b/src/libtomahawk/utils/SoundcloudParser.cpp index 22f58a83ba..8bcc337d78 100644 --- a/src/libtomahawk/utils/SoundcloudParser.cpp +++ b/src/libtomahawk/utils/SoundcloudParser.cpp @@ -18,10 +18,6 @@ #include "SoundcloudParser.h" -#include - -#include - #include "Query.h" #include "SourceList.h" #include "DropJobNotifier.h" @@ -33,6 +29,10 @@ #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" +#include + +#include + using namespace Tomahawk; diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index c6a7bc5867..53e18aa41b 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -32,8 +32,8 @@ #include #endif -#include -#include +#include +#include #include #include diff --git a/src/libtomahawk/utils/WidgetDragFilter.cpp b/src/libtomahawk/utils/WidgetDragFilter.cpp index 7a540e5b76..11541fd645 100644 --- a/src/libtomahawk/utils/WidgetDragFilter.cpp +++ b/src/libtomahawk/utils/WidgetDragFilter.cpp @@ -18,13 +18,12 @@ #include "WidgetDragFilter.h" +#include "utils/Logger.h" + #include #include #include -#include "utils/Logger.h" - - WidgetDragFilter::WidgetDragFilter( QObject* parent ) : QObject( parent ) , m_dragStarted( false ) diff --git a/src/libtomahawk/widgets/BasicHeader.cpp b/src/libtomahawk/widgets/BasicHeader.cpp index 664aa13e8f..2ac67f4063 100644 --- a/src/libtomahawk/widgets/BasicHeader.cpp +++ b/src/libtomahawk/widgets/BasicHeader.cpp @@ -19,16 +19,16 @@ #include "BasicHeader.h" -#include -#include -#include -#include -#include -#include - #include "utils/TomahawkUtilsGui.h" #include "ElidedLabel.h" +#include +#include +#include +#include +#include +#include + using namespace Tomahawk; QPixmap* BasicHeader::s_tiledHeader = 0; diff --git a/src/libtomahawk/widgets/BasicHeader.h b/src/libtomahawk/widgets/BasicHeader.h index 4b8d59349e..48f3281ffe 100644 --- a/src/libtomahawk/widgets/BasicHeader.h +++ b/src/libtomahawk/widgets/BasicHeader.h @@ -20,7 +20,7 @@ #ifndef BASICHEADER_H #define BASICHEADER_H -#include +#include #include "DllMacro.h" diff --git a/src/libtomahawk/widgets/ImageButton.cpp b/src/libtomahawk/widgets/ImageButton.cpp index 933043dfd9..eda2ba967f 100644 --- a/src/libtomahawk/widgets/ImageButton.cpp +++ b/src/libtomahawk/widgets/ImageButton.cpp @@ -19,15 +19,14 @@ #include "ImageButton.h" -#include -#include -#include -#include -#include -#include - #include "utils/Logger.h" +#include +#include +#include +#include +#include +#include ImageButton::ImageButton( QWidget* parent ) : QAbstractButton( parent ) diff --git a/src/libtomahawk/widgets/ImageButton.h b/src/libtomahawk/widgets/ImageButton.h index d47384f180..41ecd69bec 100644 --- a/src/libtomahawk/widgets/ImageButton.h +++ b/src/libtomahawk/widgets/ImageButton.h @@ -20,12 +20,12 @@ #ifndef IMAGE_BUTTON_H #define IMAGE_BUTTON_H -#include -#include -#include - #include "DllMacro.h" +#include +#include +#include + class DLLEXPORT ImageButton : public QAbstractButton { Q_OBJECT diff --git a/src/libtomahawk/widgets/NewPlaylistWidget.h b/src/libtomahawk/widgets/NewPlaylistWidget.h index 62fd033e9f..03520d411d 100644 --- a/src/libtomahawk/widgets/NewPlaylistWidget.h +++ b/src/libtomahawk/widgets/NewPlaylistWidget.h @@ -20,14 +20,14 @@ #ifndef NEWPLAYLISTWIDGET_H #define NEWPLAYLISTWIDGET_H -#include -#include - #include "PlaylistInterface.h" #include "ViewPage.h" #include "DllMacro.h" +#include +#include + class QPushButton; class PlaylistModel; diff --git a/src/libtomahawk/widgets/NewReleasesWidget.h b/src/libtomahawk/widgets/NewReleasesWidget.h index ffd8ce44a3..3cd0c8674f 100644 --- a/src/libtomahawk/widgets/NewReleasesWidget.h +++ b/src/libtomahawk/widgets/NewReleasesWidget.h @@ -22,16 +22,16 @@ #ifndef NEWRELEASESWIDGET_H #define NEWRELEASESWIDGET_H -#include -#include -#include - #include "PlaylistInterface.h" #include "infosystem/InfoSystem.h" #include "ViewPage.h" #include "DllMacro.h" +#include +#include +#include + class QSortFilterProxyModel; class QStandardItemModel; class QStandardItem; diff --git a/src/libtomahawk/widgets/QueryLabel.cpp b/src/libtomahawk/widgets/QueryLabel.cpp index efa6cede4d..04b6fab28e 100644 --- a/src/libtomahawk/widgets/QueryLabel.cpp +++ b/src/libtomahawk/widgets/QueryLabel.cpp @@ -18,12 +18,6 @@ #include "QueryLabel.h" -#include -#include -#include -#include -#include - #include "Artist.h" #include "Album.h" #include "Query.h" @@ -33,6 +27,14 @@ #include "ViewManager.h" #include "Source.h" +#include +#include +#include +#include +#include +#include +#include + #define BOXMARGIN 2 #define DASH " - " diff --git a/src/libtomahawk/widgets/SeekSlider.h b/src/libtomahawk/widgets/SeekSlider.h index 93e6616509..637124d214 100644 --- a/src/libtomahawk/widgets/SeekSlider.h +++ b/src/libtomahawk/widgets/SeekSlider.h @@ -20,10 +20,10 @@ #ifndef SEEKSLIDER_H #define SEEKSLIDER_H -#include - #include "DllMacro.h" +#include + class QTimeLine; class DLLEXPORT SeekSlider : public QSlider diff --git a/src/libtomahawk/widgets/WhatsHotWidget.h b/src/libtomahawk/widgets/WhatsHotWidget.h index d42b34f10c..3c6c6e197e 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.h +++ b/src/libtomahawk/widgets/WhatsHotWidget.h @@ -21,16 +21,16 @@ #ifndef WHATSHOTWIDGET_H #define WHATSHOTWIDGET_H -#include -#include -#include - #include "PlaylistInterface.h" #include "infosystem/InfoSystem.h" #include "ViewPage.h" #include "DllMacro.h" +#include +#include +#include + class QSortFilterProxyModel; class QStandardItemModel; class QStandardItem; diff --git a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.h b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.h index ac96ed5781..7909bfe8f1 100644 --- a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.h +++ b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.h @@ -30,8 +30,6 @@ #ifndef ALBUMINFOWIDGET_H #define ALBUMINFOWIDGET_H -#include - #include "PlaylistInterface.h" #include "ViewPage.h" #include "infosystem/InfoSystem.h" @@ -39,6 +37,8 @@ #include "DllMacro.h" #include "Typedefs.h" +#include + class PlayableModel; class TreeModel; class MetaAlbumInfoInterface; diff --git a/src/sourcetree/SourceDelegate.cpp b/src/sourcetree/SourceDelegate.cpp index 0f5286b740..04a3632901 100644 --- a/src/sourcetree/SourceDelegate.cpp +++ b/src/sourcetree/SourceDelegate.cpp @@ -21,10 +21,6 @@ #include "SourceDelegate.h" -#include -#include -#include - #include "items/SourceTreeItem.h" #include "items/SourceItem.h" #include "items/PlaylistItems.h" @@ -38,9 +34,14 @@ #include "ActionCollection.h" #include "ViewManager.h" #include "ContextMenu.h" + #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" +#include +#include +#include +#include #define TREEVIEW_INDENT_ADD 12 From 504c1aece2ff4222a50177c9a44510110903671a Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 16:41:06 +0100 Subject: [PATCH 119/310] qt5: clean up Find modules and don't depend on Qt(4) in them anymore --- CMakeModules/FindLibLastFm.cmake | 5 ----- CMakeModules/FindQJSON.cmake | 31 ++++++------------------------- CMakeModules/FindQTweetLib.cmake | 3 --- CMakeModules/FindQuaZip.cmake | 5 ++--- 4 files changed, 8 insertions(+), 36 deletions(-) diff --git a/CMakeModules/FindLibLastFm.cmake b/CMakeModules/FindLibLastFm.cmake index 27362fe712..55f1123e3f 100644 --- a/CMakeModules/FindLibLastFm.cmake +++ b/CMakeModules/FindLibLastFm.cmake @@ -7,11 +7,6 @@ # (c) Dominik Schmidt # -# Dependencies -if(NOT QT4_FOUND) - find_package(Qt4 REQUIRED) -endif() - # Include dir find_path(LIBLASTFM_INCLUDE_DIR # Track.h doesn't exist in liblastfm-0.3.1, was called Track back then diff --git a/CMakeModules/FindQJSON.cmake b/CMakeModules/FindQJSON.cmake index 936d93b3cb..d99e3e28bb 100644 --- a/CMakeModules/FindQJSON.cmake +++ b/CMakeModules/FindQJSON.cmake @@ -6,30 +6,16 @@ # QJSON_INCLUDE_DIR - the include path of the qjson library # -if (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES) - - # Already in cache - set (QJSON_FOUND TRUE) - -else (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES) - - if (NOT WIN32) - # use pkg-config to get the values of QJSON_INCLUDE_DIRS - # and QJSON_LIBRARY_DIRS to add as hints to the find commands. - include (FindPkgConfig) - pkg_check_modules (QJSON REQUIRED QJson>=0.5) - endif (NOT WIN32) - - find_library (QJSON_LIBRARIES +find_library (QJSON_LIBRARIES NAMES qjson PATHS ${QJSON_LIBRARY_DIRS} ${LIB_INSTALL_DIR} ${KDE4_LIB_DIR} - ) +) - find_path (QJSON_INCLUDE_DIR +find_path (QJSON_INCLUDE_DIR NAMES parser.h PATH_SUFFIXES @@ -38,13 +24,8 @@ else (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES) ${QJSON_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} ${KDE4_INCLUDE_DIR} - ) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(QJSON DEFAULT_MSG QJSON_LIBRARIES QJSON_INCLUDE_DIR) +) - if ( UNIX AND NOT APPLE ) - set ( QJSON_LIBRARIES "${QJSON_LIBRARIES} ${QJSON_LDFLAGS}" CACHE INTERNAL "") - endif () +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(QJSON DEFAULT_MSG QJSON_LIBRARIES QJSON_INCLUDE_DIR) -endif (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES) diff --git a/CMakeModules/FindQTweetLib.cmake b/CMakeModules/FindQTweetLib.cmake index ee2461f5e3..536b09733b 100644 --- a/CMakeModules/FindQTweetLib.cmake +++ b/CMakeModules/FindQTweetLib.cmake @@ -7,9 +7,6 @@ # (c) Dominik Schmidt # -# Dependencies -find_package(Qt4 REQUIRED) - # Include dir find_path(QTWEETLIB_INCLUDE_DIR NAMES QTweetLib/qtweetlib_global.h diff --git a/CMakeModules/FindQuaZip.cmake b/CMakeModules/FindQuaZip.cmake index 921213ca01..322e021a83 100644 --- a/CMakeModules/FindQuaZip.cmake +++ b/CMakeModules/FindQuaZip.cmake @@ -1,4 +1,3 @@ -find_package(Qt4) find_path(QuaZip_INCLUDE_DIR quazip.h ${CMAKE_INSTALL_PREFIX}/include/quazip ${CMAKE_INSTALL_PREFIX}/include /usr/include/quazip /usr/local/include/quazip ${QT_INCLUDE_DIR}/quazip ${QT_INCLUDE_DIR} ${QUAZIP_DIR}/include/quazip ${QUAZIP_DIR}/quazip ${QUAZIP_DIR}/include) find_library(QuaZip_LIBRARY NAMES quazip PATHS ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/Library/Frameworks ${QUAZIP_DIR}/lib64 ${QUAZIP_DIR}/lib ${QUAZIP_DIR}/quazip ${QUAZIP_DIR}) include(FindPackageHandleStandardArgs) @@ -6,6 +5,6 @@ find_package_handle_standard_args(quazip DEFAULT_MSG QuaZip_LIBRARY QuaZip_INCLU set(QuaZip_LIBRARIES ${QuaZip_LIBRARY}) mark_as_advanced(QuaZip_LIBRARY QuaZip_INCLUDE_DIR) -if(QuaZip_LIBRARY AND QuaZip_INCLUDE_DIR) - set(QuaZip_FOUND TRUE) +if(QuaZip_LIBRARY AND QuaZip_INCLUDE_DIR) + set(QuaZip_FOUND TRUE) endif() From 45c6396b0ade8084e7bfdb72746e732745973a4c Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 16:46:42 +0100 Subject: [PATCH 120/310] qt5: use QStandardPaths in TomahawkSettings --- src/libtomahawk/TomahawkSettingsGui.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libtomahawk/TomahawkSettingsGui.cpp b/src/libtomahawk/TomahawkSettingsGui.cpp index 7bf2d65047..7db8066135 100644 --- a/src/libtomahawk/TomahawkSettingsGui.cpp +++ b/src/libtomahawk/TomahawkSettingsGui.cpp @@ -18,7 +18,11 @@ #include "TomahawkSettingsGui.h" +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) +#include +#else #include +#endif using namespace Tomahawk; @@ -82,7 +86,11 @@ TomahawkSettingsGui::~TomahawkSettingsGui() QString TomahawkSettingsGui::storageCacheLocation() const { +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + return QStandardPaths::writableLocation( QStandardPaths::CacheLocation ); +#else return QDesktopServices::storageLocation( QDesktopServices::CacheLocation ); +#endif } @@ -91,7 +99,11 @@ TomahawkSettingsGui::scannerPaths() const { QString musicLocation; +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + musicLocation = QStandardPaths::writableLocation( QStandardPaths::MusicLocation ); +#else musicLocation = QDesktopServices::storageLocation( QDesktopServices::MusicLocation ); +#endif return value( "scanner/paths", musicLocation ).toStringList(); } From 7969f4ab5195366805c07c651a11db04b3fdc146 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 17:15:54 +0100 Subject: [PATCH 121/310] qt5: port the Logger --- src/libtomahawk/utils/Logger.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/utils/Logger.cpp b/src/libtomahawk/utils/Logger.cpp index a560e6971f..6045cf0798 100644 --- a/src/libtomahawk/utils/Logger.cpp +++ b/src/libtomahawk/utils/Logger.cpp @@ -97,27 +97,37 @@ log( const char *msg, unsigned int debugLevel, bool toDisk = true ) void +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) +TomahawkLogHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) +#else TomahawkLogHandler( QtMsgType type, const char* msg ) +#endif { static QMutex s_mutex; +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + const char* message = msg.toLatin1().constData(); +#else + const char* message = msg; +#endif + QMutexLocker locker( &s_mutex ); switch( type ) { case QtDebugMsg: - log( msg, LOGTHIRDPARTY ); + log( message, LOGTHIRDPARTY ); break; case QtCriticalMsg: - log( msg, 0 ); + log( message, 0 ); break; case QtWarningMsg: - log( msg, 0 ); + log( message, 0 ); break; case QtFatalMsg: - log( msg, 0 ); + log( message, 0 ); break; } } @@ -154,7 +164,11 @@ setupLogfile() } logfile.open( logFile().toLocal8Bit(), ios::app ); +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + qInstallMessageHandler( TomahawkLogHandler ); +#else qInstallMsgHandler( TomahawkLogHandler ); +#endif } } From d7645a33be670cb8ff6375c9632a20edde7479ae Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 19:59:24 +0100 Subject: [PATCH 122/310] Update QxtWeb --- src/web/Api_v1.cpp | 2 +- .../qxt/qxtweb-standalone/CMakeLists.txt | 55 +- .../qxtweb-standalone/qxtweb/qhttpheader.cpp | 960 ++++++++++++++++++ .../qxtweb-standalone/qxtweb/qhttpheader.h | 179 ++++ .../qxtweb/qxtabstracthttpconnector.cpp | 212 ++-- .../qxtweb/qxtabstracthttpconnector.h | 89 +- .../qxtweb/qxtabstractwebservice.cpp | 60 +- .../qxtweb/qxtabstractwebservice.h | 52 +- .../qxtweb/qxtabstractwebsessionmanager.cpp | 86 +- .../qxtweb/qxtabstractwebsessionmanager.h | 56 +- .../qxtweb/qxtabstractwebsessionmanager_p.h | 52 +- .../qxtweb/qxtboundcfunction.h | 52 +- .../qxtweb/qxtboundfunction.h | 56 +- .../qxtweb/qxtboundfunctionbase.h | 52 +- .../qxt/qxtweb-standalone/qxtweb/qxtfifo.cpp | 272 +++++ .../qxt/qxtweb-standalone/qxtweb/qxtfifo.h | 57 ++ .../qxtweb-standalone/qxtweb/qxtglobal.cpp | 76 +- .../qxt/qxtweb-standalone/qxtweb/qxtglobal.h | 92 +- .../qxtweb/qxthtmltemplate.cpp | 52 +- .../qxtweb/qxthtmltemplate.h | 52 +- .../qxtweb/qxthttpserverconnector.cpp | 170 +++- .../qxtweb/qxthttpsessionmanager.cpp | 290 +++--- .../qxtweb/qxthttpsessionmanager.h | 74 +- .../qxtweb/qxtmetaobject.cpp | 58 +- .../qxtweb-standalone/qxtweb/qxtmetaobject.h | 54 +- .../qxt/qxtweb-standalone/qxtweb/qxtnull.cpp | 54 +- .../qxt/qxtweb-standalone/qxtweb/qxtnull.h | 52 +- .../qxtweb-standalone/qxtweb/qxtnullable.h | 52 +- .../qxtweb/qxtscgiserverconnector.cpp | 72 +- .../qxtweb-standalone/qxtweb/qxtsslserver.cpp | 220 ++++ .../qxt/qxtweb-standalone/qxtweb/qxtweb.h | 57 +- .../qxtweb/qxtwebcgiservice.cpp | 64 +- .../qxtweb/qxtwebcgiservice.h | 52 +- .../qxtweb/qxtwebcgiservice_p.h | 52 +- .../qxtweb/qxtwebcontent.cpp | 303 +++--- .../qxtweb-standalone/qxtweb/qxtwebcontent.h | 63 +- .../qxtweb-standalone/qxtweb/qxtwebevent.cpp | 122 ++- .../qxtweb-standalone/qxtweb/qxtwebevent.h | 70 +- .../qxtweb/qxtwebjsonrpcservice.cpp | 512 ++++++++++ .../qxtweb/qxtwebjsonrpcservice.h | 56 + .../qxtweb/qxtwebjsonrpcservice_p.h | 66 ++ .../qxtweb/qxtwebservicedirectory.cpp | 52 +- .../qxtweb/qxtwebservicedirectory.h | 52 +- .../qxtweb/qxtwebservicedirectory_p.h | 52 +- .../qxtweb/qxtwebslotservice.cpp | 54 +- .../qxtweb/qxtwebslotservice.h | 52 +- 46 files changed, 4136 insertions(+), 1203 deletions(-) create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.cpp create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.h create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.cpp create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.h create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.cpp create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.cpp create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.h create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice_p.h diff --git a/src/web/Api_v1.cpp b/src/web/Api_v1.cpp index 632f3e2f3d..76327e2f83 100644 --- a/src/web/Api_v1.cpp +++ b/src/web/Api_v1.cpp @@ -192,7 +192,7 @@ Api_v1::sid( QxtWebRequestEvent* event, QString unused ) return send404( event ); // 503? } - QxtWebPageEvent* e = new QxtWebPageEvent( event->sessionID, event->requestID, iodev ); + QxtWebPageEvent* e = new QxtWebPageEvent( event->sessionID, event->requestID, iodev.data() ); e->streaming = iodev->isSequential(); e->contentType = rp->mimetype().toAscii(); if ( rp->size() > 0 ) diff --git a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt index 1aeb800e94..81b42432b7 100644 --- a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt +++ b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt @@ -22,6 +22,16 @@ ADD_DEFINITIONS( -DBUILD_QXT_CORE -DBUILD_QXT_WEB ) INCLUDE_DIRECTORIES( ${qxtweb} ) +macro(create_qxtweb_fancy_header simpleHeader fancyHeader) + file(WRITE ${CMAKE_BINARY_DIR}/QxtWeb/${fancyHeader} "#include \"${simpleHeader}\"" ) +endmacro() + +create_qxtweb_fancy_header("qxtabstracthttpconnector.h" "QxtHttpServerConnector") +create_qxtweb_fancy_header("qxthttpsessionmanager.h" "HttpSessionManager") +create_qxtweb_fancy_header("qxthttpsessionmanager.h" "QxtHttpSessionManager") +create_qxtweb_fancy_header("qxtwebcontent.h" "QxtWebContent") +create_qxtweb_fancy_header("qxtwebslotservice.h" "QxtWebSlotService") +create_qxtweb_fancy_header("qxtwebevent.h" "QxtWebPageEvent") SET( sources # QxtWeb: @@ -37,40 +47,20 @@ SET( sources ${qxtweb}/qxtwebservicedirectory.cpp ${qxtweb}/qxtwebslotservice.cpp ${qxtweb}/qxtwebcgiservice.cpp + ${qxtweb}/qhttpheader.cpp # Ripped bits of QxtCore: ${qxtweb}/qxtmetaobject.cpp ${qxtweb}/qxtnull.cpp -) + ${qxtweb}/qxtfifo.cpp -SET( headers - # QxtWeb: - ${qxtweb}/qxtabstracthttpconnector.h - ${qxtweb}/qxtabstractwebservice.h - ${qxtweb}/qxtabstractwebsessionmanager.h - ${qxtweb}/qxtabstractwebsessionmanager_p.h -# ${qxtweb}/qxthtmltemplate.h - ${qxtweb}/qxthttpsessionmanager.h -# ${qxtweb}/qxtweb.h - ${qxtweb}/qxtwebcontent.h -# ${qxtweb}/qxtwebevent.h - ${qxtweb}/qxtwebservicedirectory.h - ${qxtweb}/qxtwebservicedirectory_p.h - ${qxtweb}/qxtwebslotservice.h - ${qxtweb}/qxtwebcgiservice.h - ${qxtweb}/qxtwebcgiservice_p.h + # QxtNetwork + ${qxtweb}/qxtsslserver.cpp - # Ripped bits of QxtCore: -# ${qxtweb}/qxtmetaobject.h -# ${qxtweb}/qxtnullable.h -# ${qxtweb}/qxtnull.h + # automoc hack ${qxtweb}/qxtboundfunction.h -# ${qxtweb}/qxtboundfunctionbase.h -# ${qxtweb}/qxtboundcfunction.h -# ${qxtweb}/qxtmetatype.h ) -qt4_wrap_cpp( mocstuff ${headers} ) # DLL on windows due to linker issues, otherwise static IF(WIN32) @@ -97,17 +87,4 @@ target_link_libraries( qxtweb-standalone ${QT_LIBRARIES} ) -# Also build small example app from qxt demos: - -#qt4_wrap_cpp( mocex "example/myservice.h" ) - -#ADD_EXECUTABLE( example-webserver -# ${mocex} -# example/main.cpp -# example/myservice.h -# ) - -#TARGET_LINK_LIBRARIES( example-webserver -# ${QT_LIBRARIES} -# "${CMAKE_CURRENT_SOURCE_DIR}/libqxtweb-standalone.a" -# ) +set_target_properties(qxtweb-standalone PROPERTIES AUTOMOC TRUE) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.cpp new file mode 100644 index 0000000000..131100807b --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.cpp @@ -0,0 +1,960 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//#define QHTTP_DEBUG + +#include "qhttpheader.h" +#include + + +class QHttpHeaderPrivate +{ + Q_DECLARE_PUBLIC(QHttpHeader) +public: + inline virtual ~QHttpHeaderPrivate() {} + + QList > values; + bool valid; + QHttpHeader *q_ptr; +}; + +/**************************************************** + * + * QHttpHeader + * + ****************************************************/ + +/*! + \class QHttpHeader + \obsolete + \brief The QHttpHeader class contains header information for HTTP. + + \ingroup network + \inmodule QtNetwork + + In most cases you should use the more specialized derivatives of + this class, QHttpResponseHeader and QHttpRequestHeader, rather + than directly using QHttpHeader. + + QHttpHeader provides the HTTP header fields. A HTTP header field + consists of a name followed by a colon, a single space, and the + field value. (See RFC 1945.) Field names are case-insensitive. A + typical header field looks like this: + \snippet doc/src/snippets/code/src_network_access_qhttp.cpp 0 + + In the API the header field name is called the "key" and the + content is called the "value". You can get and set a header + field's value by using its key with value() and setValue(), e.g. + \snippet doc/src/snippets/code/src_network_access_qhttp.cpp 1 + + Some fields are so common that getters and setters are provided + for them as a convenient alternative to using \l value() and + \l setValue(), e.g. contentLength() and contentType(), + setContentLength() and setContentType(). + + Each header key has a \e single value associated with it. If you + set the value for a key which already exists the previous value + will be discarded. + + \sa QHttpRequestHeader QHttpResponseHeader +*/ + +/*! + \fn int QHttpHeader::majorVersion() const + + Returns the major protocol-version of the HTTP header. +*/ + +/*! + \fn int QHttpHeader::minorVersion() const + + Returns the minor protocol-version of the HTTP header. +*/ + +/*! + Constructs an empty HTTP header. +*/ +QHttpHeader::QHttpHeader() + : d_ptr(new QHttpHeaderPrivate) +{ + Q_D(QHttpHeader); + d->q_ptr = this; + d->valid = true; +} + +/*! + Constructs a copy of \a header. +*/ +QHttpHeader::QHttpHeader(const QHttpHeader &header) + : d_ptr(new QHttpHeaderPrivate) +{ + Q_D(QHttpHeader); + d->q_ptr = this; + d->valid = header.d_func()->valid; + d->values = header.d_func()->values; +} + +/*! + Constructs a HTTP header for \a str. + + This constructor parses the string \a str for header fields and + adds this information. The \a str should consist of one or more + "\r\n" delimited lines; each of these lines should have the format + key, colon, space, value. +*/ +QHttpHeader::QHttpHeader(const QString &str) + : d_ptr(new QHttpHeaderPrivate) +{ + Q_D(QHttpHeader); + d->q_ptr = this; + d->valid = true; + parse(str); +} + +/*! \internal + */ +QHttpHeader::QHttpHeader(QHttpHeaderPrivate &dd, const QString &str) + : d_ptr(&dd) +{ + Q_D(QHttpHeader); + d->q_ptr = this; + d->valid = true; + if (!str.isEmpty()) + parse(str); +} + +/*! \internal + */ +QHttpHeader::QHttpHeader(QHttpHeaderPrivate &dd, const QHttpHeader &header) + : d_ptr(&dd) +{ + Q_D(QHttpHeader); + d->q_ptr = this; + d->valid = header.d_func()->valid; + d->values = header.d_func()->values; +} +/*! + Destructor. +*/ +QHttpHeader::~QHttpHeader() +{ +} + +/*! + Assigns \a h and returns a reference to this http header. +*/ +QHttpHeader &QHttpHeader::operator=(const QHttpHeader &h) +{ + Q_D(QHttpHeader); + d->values = h.d_func()->values; + d->valid = h.d_func()->valid; + return *this; +} + +/*! + Returns true if the HTTP header is valid; otherwise returns false. + + A QHttpHeader is invalid if it was created by parsing a malformed string. +*/ +bool QHttpHeader::isValid() const +{ + Q_D(const QHttpHeader); + return d->valid; +} + +/*! \internal + Parses the HTTP header string \a str for header fields and adds + the keys/values it finds. If the string is not parsed successfully + the QHttpHeader becomes \link isValid() invalid\endlink. + + Returns true if \a str was successfully parsed; otherwise returns false. + + \sa toString() +*/ +bool QHttpHeader::parse(const QString &str) +{ + Q_D(QHttpHeader); + QStringList lst; + int pos = str.indexOf(QLatin1Char('\n')); + if (pos > 0 && str.at(pos - 1) == QLatin1Char('\r')) + lst = str.trimmed().split(QLatin1String("\r\n")); + else + lst = str.trimmed().split(QLatin1String("\n")); + lst.removeAll(QString()); // No empties + + if (lst.isEmpty()) + return true; + + QStringList lines; + QStringList::Iterator it = lst.begin(); + for (; it != lst.end(); ++it) { + if (!(*it).isEmpty()) { + if ((*it)[0].isSpace()) { + if (!lines.isEmpty()) { + lines.last() += QLatin1Char(' '); + lines.last() += (*it).trimmed(); + } + } else { + lines.append((*it)); + } + } + } + + int number = 0; + it = lines.begin(); + for (; it != lines.end(); ++it) { + if (!parseLine(*it, number++)) { + d->valid = false; + return false; + } + } + return true; +} + +/*! \internal +*/ +void QHttpHeader::setValid(bool v) +{ + Q_D(QHttpHeader); + d->valid = v; +} + +/*! + Returns the first value for the entry with the given \a key. If no entry + has this \a key, an empty string is returned. + + \sa setValue() removeValue() hasKey() keys() +*/ +QString QHttpHeader::value(const QString &key) const +{ + Q_D(const QHttpHeader); + QString lowercaseKey = key.toLower(); + QList >::ConstIterator it = d->values.constBegin(); + while (it != d->values.constEnd()) { + if ((*it).first.toLower() == lowercaseKey) + return (*it).second; + ++it; + } + return QString(); +} + +/*! + Returns all the entries with the given \a key. If no entry + has this \a key, an empty string list is returned. +*/ +QStringList QHttpHeader::allValues(const QString &key) const +{ + Q_D(const QHttpHeader); + QString lowercaseKey = key.toLower(); + QStringList valueList; + QList >::ConstIterator it = d->values.constBegin(); + while (it != d->values.constEnd()) { + if ((*it).first.toLower() == lowercaseKey) + valueList.append((*it).second); + ++it; + } + return valueList; +} + +/*! + Returns a list of the keys in the HTTP header. + + \sa hasKey() +*/ +QStringList QHttpHeader::keys() const +{ + Q_D(const QHttpHeader); + QStringList keyList; + QSet seenKeys; + QList >::ConstIterator it = d->values.constBegin(); + while (it != d->values.constEnd()) { + const QString &key = (*it).first; + QString lowercaseKey = key.toLower(); + if (!seenKeys.contains(lowercaseKey)) { + keyList.append(key); + seenKeys.insert(lowercaseKey); + } + ++it; + } + return keyList; +} + +/*! + Returns true if the HTTP header has an entry with the given \a + key; otherwise returns false. + + \sa value() setValue() keys() +*/ +bool QHttpHeader::hasKey(const QString &key) const +{ + Q_D(const QHttpHeader); + QString lowercaseKey = key.toLower(); + QList >::ConstIterator it = d->values.constBegin(); + while (it != d->values.constEnd()) { + if ((*it).first.toLower() == lowercaseKey) + return true; + ++it; + } + return false; +} + +/*! + Sets the value of the entry with the \a key to \a value. + + If no entry with \a key exists, a new entry with the given \a key + and \a value is created. If an entry with the \a key already + exists, the first value is discarded and replaced with the given + \a value. + + \sa value() hasKey() removeValue() +*/ +void QHttpHeader::setValue(const QString &key, const QString &value) +{ + Q_D(QHttpHeader); + QString lowercaseKey = key.toLower(); + QList >::Iterator it = d->values.begin(); + while (it != d->values.end()) { + if ((*it).first.toLower() == lowercaseKey) { + (*it).second = value; + return; + } + ++it; + } + // not found so add + addValue(key, value); +} + +/*! + Sets the header entries to be the list of key value pairs in \a values. +*/ +void QHttpHeader::setValues(const QList > &values) +{ + Q_D(QHttpHeader); + d->values = values; +} + +/*! + Adds a new entry with the \a key and \a value. +*/ +void QHttpHeader::addValue(const QString &key, const QString &value) +{ + Q_D(QHttpHeader); + d->values.append(qMakePair(key, value)); +} + +/*! + Returns all the entries in the header. +*/ +QList > QHttpHeader::values() const +{ + Q_D(const QHttpHeader); + return d->values; +} + +/*! + Removes the entry with the key \a key from the HTTP header. + + \sa value() setValue() +*/ +void QHttpHeader::removeValue(const QString &key) +{ + Q_D(QHttpHeader); + QString lowercaseKey = key.toLower(); + QList >::Iterator it = d->values.begin(); + while (it != d->values.end()) { + if ((*it).first.toLower() == lowercaseKey) { + d->values.erase(it); + return; + } + ++it; + } +} + +/*! + Removes all the entries with the key \a key from the HTTP header. +*/ +void QHttpHeader::removeAllValues(const QString &key) +{ + Q_D(QHttpHeader); + QString lowercaseKey = key.toLower(); + QList >::Iterator it = d->values.begin(); + while (it != d->values.end()) { + if ((*it).first.toLower() == lowercaseKey) { + it = d->values.erase(it); + continue; + } + ++it; + } +} + +/*! \internal + Parses the single HTTP header line \a line which has the format + key, colon, space, value, and adds key/value to the headers. The + linenumber is \a number. Returns true if the line was successfully + parsed and the key/value added; otherwise returns false. + + \sa parse() +*/ +bool QHttpHeader::parseLine(const QString &line, int) +{ + int i = line.indexOf(QLatin1Char(':')); + if (i == -1) + return false; + + addValue(line.left(i).trimmed(), line.mid(i + 1).trimmed()); + + return true; +} + +/*! + Returns a string representation of the HTTP header. + + The string is suitable for use by the constructor that takes a + QString. It consists of lines with the format: key, colon, space, + value, "\r\n". +*/ +QString QHttpHeader::toString() const +{ + Q_D(const QHttpHeader); + if (!isValid()) + return QLatin1String(""); + + QString ret = QLatin1String(""); + + QList >::ConstIterator it = d->values.constBegin(); + while (it != d->values.constEnd()) { + ret += (*it).first + QLatin1String(": ") + (*it).second + QLatin1String("\r\n"); + ++it; + } + return ret; +} + +/*! + Returns true if the header has an entry for the special HTTP + header field \c content-length; otherwise returns false. + + \sa contentLength() setContentLength() +*/ +bool QHttpHeader::hasContentLength() const +{ + return hasKey(QLatin1String("content-length")); +} + +/*! + Returns the value of the special HTTP header field \c + content-length. + + \sa setContentLength() hasContentLength() +*/ +uint QHttpHeader::contentLength() const +{ + return value(QLatin1String("content-length")).toUInt(); +} + +/*! + Sets the value of the special HTTP header field \c content-length + to \a len. + + \sa contentLength() hasContentLength() +*/ +void QHttpHeader::setContentLength(int len) +{ + setValue(QLatin1String("content-length"), QString::number(len)); +} + +/*! + Returns true if the header has an entry for the special HTTP + header field \c content-type; otherwise returns false. + + \sa contentType() setContentType() +*/ +bool QHttpHeader::hasContentType() const +{ + return hasKey(QLatin1String("content-type")); +} + +/*! + Returns the value of the special HTTP header field \c content-type. + + \sa setContentType() hasContentType() +*/ +QString QHttpHeader::contentType() const +{ + QString type = value(QLatin1String("content-type")); + if (type.isEmpty()) + return QString(); + + int pos = type.indexOf(QLatin1Char(';')); + if (pos == -1) + return type; + + return type.left(pos).trimmed(); +} + +/*! + Sets the value of the special HTTP header field \c content-type to + \a type. + + \sa contentType() hasContentType() +*/ +void QHttpHeader::setContentType(const QString &type) +{ + setValue(QLatin1String("content-type"), type); +} + +class QHttpResponseHeaderPrivate : public QHttpHeaderPrivate +{ + Q_DECLARE_PUBLIC(QHttpResponseHeader) +public: + int statCode; + QString reasonPhr; + int majVer; + int minVer; +}; + +/**************************************************** + * + * QHttpResponseHeader + * + ****************************************************/ + +/*! + \class QHttpResponseHeader + \obsolete + \brief The QHttpResponseHeader class contains response header information for HTTP. + + \ingroup network + \inmodule QtNetwork + + This class is used by the QHttp class to report the header + information that the client received from the server. + + HTTP responses have a status code that indicates the status of the + response. This code is a 3-digit integer result code (for details + see to RFC 1945). In addition to the status code, you can also + specify a human-readable text that describes the reason for the + code ("reason phrase"). This class allows you to get the status + code and the reason phrase. + + \sa QHttpRequestHeader, QHttp, {HTTP Example} +*/ + +/*! + Constructs an empty HTTP response header. +*/ +QHttpResponseHeader::QHttpResponseHeader() + : QHttpHeader(*new QHttpResponseHeaderPrivate) +{ + setValid(false); +} + +/*! + Constructs a copy of \a header. +*/ +QHttpResponseHeader::QHttpResponseHeader(const QHttpResponseHeader &header) + : QHttpHeader(*new QHttpResponseHeaderPrivate, header) +{ + Q_D(QHttpResponseHeader); + d->statCode = header.d_func()->statCode; + d->reasonPhr = header.d_func()->reasonPhr; + d->majVer = header.d_func()->majVer; + d->minVer = header.d_func()->minVer; +} + +/*! + Copies the contents of \a header into this QHttpResponseHeader. +*/ +QHttpResponseHeader &QHttpResponseHeader::operator=(const QHttpResponseHeader &header) +{ + Q_D(QHttpResponseHeader); + QHttpHeader::operator=(header); + d->statCode = header.d_func()->statCode; + d->reasonPhr = header.d_func()->reasonPhr; + d->majVer = header.d_func()->majVer; + d->minVer = header.d_func()->minVer; + return *this; +} + +/*! + Constructs a HTTP response header from the string \a str. The + string is parsed and the information is set. The \a str should + consist of one or more "\r\n" delimited lines; the first line should be the + status-line (format: HTTP-version, space, status-code, space, + reason-phrase); each of remaining lines should have the format key, colon, + space, value. +*/ +QHttpResponseHeader::QHttpResponseHeader(const QString &str) + : QHttpHeader(*new QHttpResponseHeaderPrivate) +{ + parse(str); +} + +/*! + \since 4.1 + + Constructs a QHttpResponseHeader, setting the status code to \a code, the + reason phrase to \a text and the protocol-version to \a majorVer and \a + minorVer. + + \sa statusCode() reasonPhrase() majorVersion() minorVersion() +*/ +QHttpResponseHeader::QHttpResponseHeader(int code, const QString &text, int majorVer, int minorVer) + : QHttpHeader(*new QHttpResponseHeaderPrivate) +{ + setStatusLine(code, text, majorVer, minorVer); +} + +/*! + \since 4.1 + + Sets the status code to \a code, the reason phrase to \a text and + the protocol-version to \a majorVer and \a minorVer. + + \sa statusCode() reasonPhrase() majorVersion() minorVersion() +*/ +void QHttpResponseHeader::setStatusLine(int code, const QString &text, int majorVer, int minorVer) +{ + Q_D(QHttpResponseHeader); + setValid(true); + d->statCode = code; + d->reasonPhr = text; + d->majVer = majorVer; + d->minVer = minorVer; +} + +/*! + Returns the status code of the HTTP response header. + + \sa reasonPhrase() majorVersion() minorVersion() +*/ +int QHttpResponseHeader::statusCode() const +{ + Q_D(const QHttpResponseHeader); + return d->statCode; +} + +/*! + Returns the reason phrase of the HTTP response header. + + \sa statusCode() majorVersion() minorVersion() +*/ +QString QHttpResponseHeader::reasonPhrase() const +{ + Q_D(const QHttpResponseHeader); + return d->reasonPhr; +} + +/*! + Returns the major protocol-version of the HTTP response header. + + \sa minorVersion() statusCode() reasonPhrase() +*/ +int QHttpResponseHeader::majorVersion() const +{ + Q_D(const QHttpResponseHeader); + return d->majVer; +} + +/*! + Returns the minor protocol-version of the HTTP response header. + + \sa majorVersion() statusCode() reasonPhrase() +*/ +int QHttpResponseHeader::minorVersion() const +{ + Q_D(const QHttpResponseHeader); + return d->minVer; +} + +/*! \internal +*/ +bool QHttpResponseHeader::parseLine(const QString &line, int number) +{ + Q_D(QHttpResponseHeader); + if (number != 0) + return QHttpHeader::parseLine(line, number); + + QString l = line.simplified(); + if (l.length() < 10) + return false; + + if (l.left(5) == QLatin1String("HTTP/") && l[5].isDigit() && l[6] == QLatin1Char('.') && + l[7].isDigit() && l[8] == QLatin1Char(' ') && l[9].isDigit()) { + d->majVer = l[5].toLatin1() - '0'; + d->minVer = l[7].toLatin1() - '0'; + + int pos = l.indexOf(QLatin1Char(' '), 9); + if (pos != -1) { + d->reasonPhr = l.mid(pos + 1); + d->statCode = l.mid(9, pos - 9).toInt(); + } else { + d->statCode = l.mid(9).toInt(); + d->reasonPhr.clear(); + } + } else { + return false; + } + + return true; +} + +/*! \reimp +*/ +QString QHttpResponseHeader::toString() const +{ + Q_D(const QHttpResponseHeader); + QString ret(QLatin1String("HTTP/%1.%2 %3 %4\r\n%5\r\n")); + return ret.arg(d->majVer).arg(d->minVer).arg(d->statCode).arg(d->reasonPhr).arg(QHttpHeader::toString()); +} + +class QHttpRequestHeaderPrivate : public QHttpHeaderPrivate +{ + Q_DECLARE_PUBLIC(QHttpRequestHeader) +public: + QString m; + QString p; + int majVer; + int minVer; +}; + +/**************************************************** + * + * QHttpRequestHeader + * + ****************************************************/ + +/*! + \class QHttpRequestHeader + \obsolete + \brief The QHttpRequestHeader class contains request header information for HTTP. + + \ingroup network + \inmodule QtNetwork + + This class is used in the QHttp class to report the header + information if the client requests something from the server. + + HTTP requests have a method which describes the request's action. + The most common requests are "GET" and "POST". In addition to the + request method the header also includes a request-URI to specify + the location for the method to use. + + The method, request-URI and protocol-version can be set using a + constructor or later using setRequest(). The values can be + obtained using method(), path(), majorVersion() and + minorVersion(). + + Note that the request-URI must be in the format expected by the + HTTP server. That is, all reserved characters must be encoded in + %HH (where HH are two hexadecimal digits). See + QUrl::toPercentEncoding() for more information. + + Important inherited functions: setValue() and value(). + + \sa QHttpResponseHeader QHttp +*/ + +/*! + Constructs an empty HTTP request header. +*/ +QHttpRequestHeader::QHttpRequestHeader() + : QHttpHeader(*new QHttpRequestHeaderPrivate) +{ + setValid(false); +} + +/*! + Constructs a HTTP request header for the method \a method, the + request-URI \a path and the protocol-version \a majorVer and \a + minorVer. The \a path argument must be properly encoded for an + HTTP request. +*/ +QHttpRequestHeader::QHttpRequestHeader(const QString &method, const QString &path, int majorVer, int minorVer) + : QHttpHeader(*new QHttpRequestHeaderPrivate) +{ + Q_D(QHttpRequestHeader); + d->m = method; + d->p = path; + d->majVer = majorVer; + d->minVer = minorVer; +} + +/*! + Constructs a copy of \a header. +*/ +QHttpRequestHeader::QHttpRequestHeader(const QHttpRequestHeader &header) + : QHttpHeader(*new QHttpRequestHeaderPrivate, header) +{ + Q_D(QHttpRequestHeader); + d->m = header.d_func()->m; + d->p = header.d_func()->p; + d->majVer = header.d_func()->majVer; + d->minVer = header.d_func()->minVer; +} + +/*! + Copies the content of \a header into this QHttpRequestHeader +*/ +QHttpRequestHeader &QHttpRequestHeader::operator=(const QHttpRequestHeader &header) +{ + Q_D(QHttpRequestHeader); + QHttpHeader::operator=(header); + d->m = header.d_func()->m; + d->p = header.d_func()->p; + d->majVer = header.d_func()->majVer; + d->minVer = header.d_func()->minVer; + return *this; +} + +/*! + Constructs a HTTP request header from the string \a str. The \a + str should consist of one or more "\r\n" delimited lines; the first line + should be the request-line (format: method, space, request-URI, space + HTTP-version); each of the remaining lines should have the format key, + colon, space, value. +*/ +QHttpRequestHeader::QHttpRequestHeader(const QString &str) + : QHttpHeader(*new QHttpRequestHeaderPrivate) +{ + parse(str); +} + +/*! + This function sets the request method to \a method, the + request-URI to \a path and the protocol-version to \a majorVer and + \a minorVer. The \a path argument must be properly encoded for an + HTTP request. + + \sa method() path() majorVersion() minorVersion() +*/ +void QHttpRequestHeader::setRequest(const QString &method, const QString &path, int majorVer, int minorVer) +{ + Q_D(QHttpRequestHeader); + setValid(true); + d->m = method; + d->p = path; + d->majVer = majorVer; + d->minVer = minorVer; +} + +/*! + Returns the method of the HTTP request header. + + \sa path() majorVersion() minorVersion() setRequest() +*/ +QString QHttpRequestHeader::method() const +{ + Q_D(const QHttpRequestHeader); + return d->m; +} + +/*! + Returns the request-URI of the HTTP request header. + + \sa method() majorVersion() minorVersion() setRequest() +*/ +QString QHttpRequestHeader::path() const +{ + Q_D(const QHttpRequestHeader); + return d->p; +} + +/*! + Returns the major protocol-version of the HTTP request header. + + \sa minorVersion() method() path() setRequest() +*/ +int QHttpRequestHeader::majorVersion() const +{ + Q_D(const QHttpRequestHeader); + return d->majVer; +} + +/*! + Returns the minor protocol-version of the HTTP request header. + + \sa majorVersion() method() path() setRequest() +*/ +int QHttpRequestHeader::minorVersion() const +{ + Q_D(const QHttpRequestHeader); + return d->minVer; +} + +/*! \internal +*/ +bool QHttpRequestHeader::parseLine(const QString &line, int number) +{ + Q_D(QHttpRequestHeader); + if (number != 0) + return QHttpHeader::parseLine(line, number); + + QStringList lst = line.simplified().split(QLatin1String(" ")); + if (lst.count() > 0) { + d->m = lst[0]; + if (lst.count() > 1) { + d->p = lst[1]; + if (lst.count() > 2) { + QString v = lst[2]; + if (v.length() >= 8 && v.left(5) == QLatin1String("HTTP/") && + v[5].isDigit() && v[6] == QLatin1Char('.') && v[7].isDigit()) { + d->majVer = v[5].toLatin1() - '0'; + d->minVer = v[7].toLatin1() - '0'; + return true; + } + } + } + } + + return false; +} + +/*! \reimp +*/ +QString QHttpRequestHeader::toString() const +{ + Q_D(const QHttpRequestHeader); + QString first(QLatin1String("%1 %2")); + QString last(QLatin1String(" HTTP/%3.%4\r\n%5\r\n")); + return first.arg(d->m).arg(d->p) + + last.arg(d->majVer).arg(d->minVer).arg(QHttpHeader::toString()); +} + diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.h new file mode 100644 index 0000000000..e32d08f2d7 --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qhttpheader.h @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial Usage +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QHTTP_H +#define QHTTP_H + +#include +#include +#include +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Network) + +#ifndef QT_NO_HTTP + +class QTcpSocket; +class QTimerEvent; +class QIODevice; +class QAuthenticator; +class QNetworkProxy; +class QSslError; + +class QHttpPrivate; + +class QHttpHeaderPrivate; +class Q_NETWORK_EXPORT QHttpHeader +{ +public: + QHttpHeader(); + QHttpHeader(const QHttpHeader &header); + QHttpHeader(const QString &str); + virtual ~QHttpHeader(); + + QHttpHeader &operator=(const QHttpHeader &h); + + void setValue(const QString &key, const QString &value); + void setValues(const QList > &values); + void addValue(const QString &key, const QString &value); + QList > values() const; + bool hasKey(const QString &key) const; + QStringList keys() const; + QString value(const QString &key) const; + QStringList allValues(const QString &key) const; + void removeValue(const QString &key); + void removeAllValues(const QString &key); + + // ### Qt 5: change to qint64 + bool hasContentLength() const; + uint contentLength() const; + void setContentLength(int len); + + bool hasContentType() const; + QString contentType() const; + void setContentType(const QString &type); + + virtual QString toString() const; + bool isValid() const; + + virtual int majorVersion() const = 0; + virtual int minorVersion() const = 0; + +protected: + virtual bool parseLine(const QString &line, int number); + bool parse(const QString &str); + void setValid(bool); + + QHttpHeader(QHttpHeaderPrivate &dd, const QString &str = QString()); + QHttpHeader(QHttpHeaderPrivate &dd, const QHttpHeader &header); + QScopedPointer d_ptr; + +private: + Q_DECLARE_PRIVATE(QHttpHeader) +}; + +class QHttpResponseHeaderPrivate; +class Q_NETWORK_EXPORT QHttpResponseHeader : public QHttpHeader +{ +public: + QHttpResponseHeader(); + QHttpResponseHeader(const QHttpResponseHeader &header); + QHttpResponseHeader(const QString &str); + QHttpResponseHeader(int code, const QString &text = QString(), int majorVer = 1, int minorVer = 1); + QHttpResponseHeader &operator=(const QHttpResponseHeader &header); + + void setStatusLine(int code, const QString &text = QString(), int majorVer = 1, int minorVer = 1); + + int statusCode() const; + QString reasonPhrase() const; + + int majorVersion() const; + int minorVersion() const; + + QString toString() const; + +protected: + bool parseLine(const QString &line, int number); + +private: + Q_DECLARE_PRIVATE(QHttpResponseHeader) + friend class QHttpPrivate; +}; + +class QHttpRequestHeaderPrivate; +class Q_NETWORK_EXPORT QHttpRequestHeader : public QHttpHeader +{ +public: + QHttpRequestHeader(); + QHttpRequestHeader(const QString &method, const QString &path, int majorVer = 1, int minorVer = 1); + QHttpRequestHeader(const QHttpRequestHeader &header); + QHttpRequestHeader(const QString &str); + QHttpRequestHeader &operator=(const QHttpRequestHeader &header); + + void setRequest(const QString &method, const QString &path, int majorVer = 1, int minorVer = 1); + + QString method() const; + QString path() const; + + int majorVersion() const; + int minorVersion() const; + + QString toString() const; + +protected: + bool parseLine(const QString &line, int number); + +private: + Q_DECLARE_PRIVATE(QHttpRequestHeader) +}; + +#endif // QT_NO_HTTP + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QHTTP_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.cpp index 374ae8b8e6..a3f362507c 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtAbstractHttpConnector @@ -51,6 +57,7 @@ headers (by implementing writeHeaders(QIODevice*, const QHttpResponseHeader&)). #include #include #include +#include #ifndef QXT_DOXYGEN_RUN class QxtAbstractHttpConnectorPrivate : public QxtPrivate @@ -59,8 +66,8 @@ class QxtAbstractHttpConnectorPrivate : public QxtPrivate buffers; // connection->buffer + QHash > contents; // connection->content QHash requests; // requestID->connection - QHash > dataSources; // iodevices providing result data quint32 nextRequestID; inline quint32 getNextRequestID(QIODevice* connection) @@ -76,11 +83,17 @@ class QxtAbstractHttpConnectorPrivate : public QxtPrivate& dataSource ) - { - QWriteLocker locker(&requestLock); - dataSources.insert( requestID, dataSource ); - } - - inline QSharedPointer& getRequestDataSource(quint32 requestID) - { - QReadLocker locker(&requestLock); - return dataSources[requestID]; - } }; #endif @@ -125,7 +126,7 @@ void QxtAbstractHttpConnector::setSessionManager(QxtHttpSessionManager* manager) /*! * Returns the session manager into which the connector is installed. * - * \sa QxtHttpSessionManager::setConnector + * \sa QxtHttpSessionManager::setConnector() */ QxtHttpSessionManager* QxtAbstractHttpConnector::sessionManager() const { @@ -143,21 +144,6 @@ QIODevice* QxtAbstractHttpConnector::getRequestConnection(quint32 requestID) return qxt_d().getRequestConnection(requestID); } -void QxtAbstractHttpConnector::setRequestDataSource( quint32 requestID, QSharedPointer& dataSource ) -{ - qxt_d().setRequestDataSource( requestID, dataSource ); -} - -QSharedPointer& QxtAbstractHttpConnector::getRequestDataSource(quint32 requestID) -{ - return qxt_d().getRequestDataSource( requestID ); -} - -void QxtAbstractHttpConnector::doneWithRequest(quint32 requestID) -{ - qxt_d().doneWithRequest( requestID ); -} - /*! * Starts managing a new connection from \a device. * @@ -166,6 +152,7 @@ void QxtAbstractHttpConnector::doneWithRequest(quint32 requestID) */ void QxtAbstractHttpConnector::addConnection(QIODevice* device) { + if(!device) return; QWriteLocker locker(&qxt_d().bufferLock); qxt_d().buffers[device] = QByteArray(); QObject::connect(device, SIGNAL(readyRead()), this, SLOT(incomingData())); @@ -184,25 +171,71 @@ void QxtAbstractHttpConnector::incomingData(QIODevice* device) device = qobject_cast(sender()); if (!device) return; } - QReadLocker locker(&qxt_d().bufferLock); - QByteArray& buffer = qxt_d().buffers[device]; - buffer.append(device->readAll()); - if (!canParseRequest(buffer)) return; - QHttpRequestHeader header = parseRequest(buffer); - QxtWebContent* content = 0; - QByteArray start; - if (header.contentLength() > 0) + // Scope things so we don't block access during incomingRequest() + QHttpRequestHeader header; + QxtWebContent *content = 0; { - start = buffer.left(header.value("content-length").toInt()); - buffer = buffer.mid(header.value("content-length").toInt()); - content = new QxtWebContent(header.contentLength(), start, device); + // Fetch the incoming data block + QByteArray block = device->readAll(); + // Check for a current content "device" + QReadLocker locker(&qxt_d().bufferLock); + content = qxt_d().contents[device]; + if(content && (content->wantAll() || content->bytesNeeded() > 0)){ + // This block (or part of it) belongs to content device + qint64 needed = block.size(); + if(!content->wantAll() && needed > content->bytesNeeded()) + needed = content->bytesNeeded(); + content->write(block.constData(), needed); + if(block.size() <= needed) + return; // Used it all ... + block.remove(0, needed); + } + // The data received represents a new request (or start thereof) + qxt_d().contents[device] = content = NULL; + QByteArray& buffer = qxt_d().buffers[device]; + buffer.append(block); + if (!canParseRequest(buffer)) return; + // Have received all of the headers so we can start processing + header = parseRequest(buffer); + QByteArray start; + int len = header.hasContentLength() ? int(header.contentLength()) : -1; + if(len > 0) + { + if(len <= buffer.size()){ + // This request is fully-received & excess is another request + // Leave in buffer & we'll fake a following "readyRead()" + start = buffer.left(len); + buffer = buffer.mid(len); + content = new QxtWebContent(start, this); + if(buffer.size() > 0) + QMetaObject::invokeMethod(this, "incomingData", + Qt::QueuedConnection, Q_ARG(QIODevice*, device)); + } + else{ + // This request isn't finished yet but may still have one to + // follow it. Remember the content device so we can append to + // it until we've got it all. + start = buffer; + buffer.clear(); + qxt_d().contents[device] = content = + new QxtWebContent(len, start, this, device); + } + } + else if (header.hasKey("connection") && header.value("connection").toLower() == "close") + { + // Not pipelining so we want to pass all remaining data to the + // content device. Although 'len' will be -1, we're using an + // explict value for clarity. This causes the content device + // to indicate it wants all remaining data. + start = buffer; + buffer.clear(); + qxt_d().contents[device] = content = + new QxtWebContent(-1, start, this, device); + } // else no content + // + // NOTE: Buffer lock goes out of scope after this point } - else if (header.hasKey("connection") && header.value("connection").toLower() == "close") - { - start = buffer; - buffer.clear(); - content = new QxtWebContent(header.contentLength(), start, device); - } // else no content + // Allocate request ID and process it quint32 requestID = qxt_d().getNextRequestID(device); sessionManager()->incomingRequest(requestID, header, content); } @@ -212,23 +245,54 @@ void QxtAbstractHttpConnector::incomingData(QIODevice* device) */ void QxtAbstractHttpConnector::disconnected() { + quint32 requestID=0; QIODevice* device = qobject_cast(sender()); if (!device) return; - QWriteLocker locker(&qxt_d().bufferLock); - qxt_d().buffers.remove(device); + + requestID = qxt_d().requests.key(device); + qxt_d().doneWithRequest(requestID); + qxt_d().doneWithBuffer(device); sessionManager()->disconnected(device); } +/*! + * Returns the current local server port assigned during binding. This will + * be 0 if the connector isn't currently bound or when a port number isn't + * applicable to the connector in use. + * + * \sa listen() + */ +quint16 QxtAbstractHttpConnector::serverPort() const +{ + return 0; +} + /*! * \fn virtual bool QxtAbstractHttpConnector::listen(const QHostAddress& interface, quint16 port) * Invoked by the session manager to indicate that the connector should listen * for incoming connections on the specified \a interface and \a port. * - * If the interface is QHostAddress::Any, the server will listen on all network interfaces. + * If the interface is QHostAddress::Any, the server will listen on all + * network interfaces. + * If the port is explicitly set to 0, the underlying network subsystem will + * assign a port in the dynamic range. In this case, the resulting port number + * may be obtained using the serverPort() method. * * Returns true on success, or false if the server could not begin listening. * - * \sa addConnection(QIODevice*) + * \sa addConnection(), shutdown() + */ + +/*! + * \fn virtual bool QxtAbstractHttpConnector::shutdown() + * Invoked by the session manager to indicate that the connector should close + * it's listener port and stop accepting new connections. A shutdown may be + * followed by a new listen (to switch ports or handle a change in the + * machine's IP address). + * + * Returns true on success, or false if the server wasn't listening. + * + * \sa listen() */ /*! diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.h index 78aa1fb9bb..33ee3c3c28 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstracthttpconnector.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTABSTRACTHTTPCONNECTOR_H #define QXTABSTRACTHTTPCONNECTOR_H @@ -29,11 +35,12 @@ #include "qxtglobal.h" #include #include -#include -#include +#include "qhttpheader.h" QT_FORWARD_DECLARE_CLASS(QIODevice) +QT_FORWARD_DECLARE_CLASS(QTcpServer) class QxtHttpSessionManager; +class QxtSslServer; class QxtAbstractHttpConnectorPrivate; class QXT_WEB_EXPORT QxtAbstractHttpConnector : public QObject @@ -43,15 +50,14 @@ class QXT_WEB_EXPORT QxtAbstractHttpConnector : public QObject public: QxtAbstractHttpConnector(QObject* parent = 0); virtual bool listen(const QHostAddress& iface, quint16 port) = 0; + virtual bool shutdown() = 0; + virtual quint16 serverPort() const; protected: QxtHttpSessionManager* sessionManager() const; void addConnection(QIODevice* device); QIODevice* getRequestConnection(quint32 requestID); - void setRequestDataSource( quint32 requestID, QSharedPointer& dataSource ); - QSharedPointer& getRequestDataSource(quint32 requestID); - void doneWithRequest(quint32 requestID); virtual bool canParseRequest(const QByteArray& buffer) = 0; virtual QHttpRequestHeader parseRequest(QByteArray& buffer) = 0; virtual void writeHeaders(QIODevice* device, const QHttpResponseHeader& header) = 0; @@ -70,8 +76,12 @@ class QXT_WEB_EXPORT QxtHttpServerConnector : public QxtAbstractHttpConnector { Q_OBJECT public: - QxtHttpServerConnector(QObject* parent = 0); - virtual bool listen(const QHostAddress& iface, quint16 port); + QxtHttpServerConnector(QObject* parent = 0, QTcpServer* server = 0); + virtual bool listen(const QHostAddress& iface, quint16 port = 80); + virtual bool shutdown(); + virtual quint16 serverPort() const; + + QTcpServer* tcpServer() const; protected: virtual bool canParseRequest(const QByteArray& buffer); @@ -85,6 +95,22 @@ private Q_SLOTS: QXT_DECLARE_PRIVATE(QxtHttpServerConnector) }; +#ifndef QT_NO_OPENSSL +class QXT_WEB_EXPORT QxtHttpsServerConnector : public QxtHttpServerConnector +{ + Q_OBJECT +public: + QxtHttpsServerConnector(QObject* parent = 0); + virtual bool listen(const QHostAddress& iface, quint16 port = 443); + + QxtSslServer* tcpServer() const; + +protected Q_SLOTS: + virtual void peerVerifyError(const QSslError &error); + virtual void sslErrors(const QList &errors); +}; +#endif + class QxtScgiServerConnectorPrivate; class QXT_WEB_EXPORT QxtScgiServerConnector : public QxtAbstractHttpConnector { @@ -92,6 +118,8 @@ class QXT_WEB_EXPORT QxtScgiServerConnector : public QxtAbstractHttpConnector public: QxtScgiServerConnector(QObject* parent = 0); virtual bool listen(const QHostAddress& iface, quint16 port); + virtual bool shutdown(); + virtual quint16 serverPort() const; protected: virtual bool canParseRequest(const QByteArray& buffer); @@ -112,6 +140,7 @@ Q_OBJECT public: QxtFcgiConnector(QObject* parent = 0); virtual bool listen(const QHostAddress& iface, quint16 port); + virtual bool shutdown(); private: QXT_DECLARE_PRIVATE(QxtFcgiConnector) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.cpp index ae64e3067c..c17a74cc3d 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtAbstractWebService @@ -108,14 +114,16 @@ QxtAbstractWebSessionManager* QxtAbstractWebService::sessionManager() const /*! * \fn virtual void QxtAbstractWebService::pageRequestedEvent(QxtWebRequestEvent* event) - * This \a event handler must be reimplemented in subclasses to receive page - * request events. + * This event handler must be reimplemented in subclasses to receive page + * request events. The supplied \a event object is owned by the session + * manager and remains valid until a corresponding response has been + * processed. It must never be deleted by a service handler. * * Every page request event received MUST be responded to with a QxtWebPageEvent * or a QxtWebPageEvent subclass. This response does not have to be posted * during the execution of this function, to support asynchronous design, but * failure to post an event will cause the web browser making the request to - * wait until it times out. + * wait until it times out and leak memory from pending event objects. * * \sa QxtWebRequestEvent */ diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.h index 98497819cc..bc1b7c7cbf 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebservice.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTABSTRACTWEBSERVICE_H #define QXTABSTRACTWEBSERVICE_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.cpp index 260b63ab13..31ab04aaad 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtAbstractWebSessionManager @@ -77,6 +83,7 @@ void QxtAbstractWebSessionManagerPrivate::sessionDestroyed(int sessionID) { freeList.enqueue(sessionID); sessions.remove(sessionID); + qxt_p().sessionDestroyed(sessionID); } } @@ -121,7 +128,7 @@ void QxtAbstractWebSessionManager::setServiceFactory(ServiceFactory* factory) /*! * Returns the service factory in use by the session manager. * - * \sa setServiceFactory(ServiceFactory*) + * \sa setServiceFactory() */ QxtAbstractWebSessionManager::ServiceFactory* QxtAbstractWebSessionManager::serviceFactory() const { @@ -156,6 +163,19 @@ int QxtAbstractWebSessionManager::createService() return sessionID; // you can always get the service with this } +/*! + * Notification that a service has been destroyed. The \a sessionID contains + * the session ID# which has already been deallocated. + * + * Derived classes should reimplement this method to perform any housekeeping + * chores needed when a service is removed (such as expiring session cookies). + * + * This default implementation does nothing at all. + */ +void QxtAbstractWebSessionManager::sessionDestroyed(int) +{ +} + /*! * \fn virtual bool QxtAbstractWebSessionManager::start() * Starts the session manager. @@ -163,11 +183,27 @@ int QxtAbstractWebSessionManager::createService() * Session managers should not create sessions before start() is invoked. * Subclasses are encouraged to refrain from accepting connections until the * session manager is started. + * + * Returns true if the session was successfully started and false otherwise. + */ + +/*! + * \fn virtual bool QxtAbstractWebSessionManager::shutdown() + * Stops the session manager. + * + * This method stops listening for new connections. Any active connections + * remain viable. It is permissible to start() the session again after a + * successful shutdown (to change ports for example). + * + * Returns true if the session was active (successfully shut down) and false + * otherwise. This may be connected to an application's aboutToQuit() signal + * but doing so is not likely to allow any currently processing requests to + * complete. */ /*! * \fn virtual void QxtAbstractWebSessionManager::postEvent(QxtWebEvent* event) - * Adds the event to the event queue for its associated session. + * Adds the \a event to the event queue for its associated session. * * Since different protocols may require different event processing behavior, * there is no default implementation in QxtAbstractWebSessionManager. Subclasses diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.h index 8f040376a1..15ba9cb80b 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTABSTRACTWEBSESSIONMANAGER_H #define QXTABSTRACTWEBSESSIONMANAGER_H @@ -47,8 +53,12 @@ class QXT_WEB_EXPORT QxtAbstractWebSessionManager : public QObject QxtAbstractWebService* session(int sessionID) const; +public Q_SLOTS: + virtual bool shutdown() = 0; + protected: int createService(); + virtual void sessionDestroyed(int sessionID); protected Q_SLOTS: virtual void processEvents() = 0; diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager_p.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager_p.h index b285e26daf..7db08429cc 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager_p.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtabstractwebsessionmanager_p.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTABSTRACTWEBSESSIONMANAGER_P_H #define QXTABSTRACTWEBSESSIONMANAGER_P_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundcfunction.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundcfunction.h index 3e49142dc1..ac6fd7049c 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundcfunction.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundcfunction.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTBOUNDCFUNCTION_H #define QXTBOUNDCFUNCTION_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunction.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunction.h index f2255c4193..bcd07c502a 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunction.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunction.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTBOUNDFUNCTION_H #define QXTBOUNDFUNCTION_H @@ -81,6 +87,10 @@ class QXT_CORE_EXPORT QxtBoundFunction : public QObject { Q_OBJECT public: +#ifndef QXT_DOXYGEN_RUN + virtual ~QxtBoundFunction() {}; +#endif + /*! * Invokes the bound function and returns a value. * diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunctionbase.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunctionbase.h index 47da5f1d96..a78b5ed109 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunctionbase.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtboundfunctionbase.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ // This file exists for the convenience of QxtBoundCFunction. // It is not part of the public API and is subject to change. diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.cpp new file mode 100644 index 0000000000..2aeb866a2b --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.cpp @@ -0,0 +1,272 @@ + +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +/*! +\class QxtFifo + +\inmodule QxtCore + +\brief The QxtFifo class provides a simple loopback QIODevice. + +read and write to the same object +emits a readyRead Signal. +useful for loopback tests where QBuffer does not work. + +\code +QxtFifo fifo; + QTextStream (&fifo)<>a; + qDebug()< +#include +#include +#include + +#include + +#if QT_VERSION >= 0x50000 +# define QXT_EXCHANGE(x) fetchAndStoreOrdered(x) +# define QXT_EXCHANGE_(x) fetchAndStoreOrdered(x.load()) +# define QXT_ADD fetchAndAddOrdered +#elif QT_VERSION >= 0x040400 +# include +# define QXT_EXCHANGE fetchAndStoreOrdered +# define QXT_EXCHANGE_ QXT_EXCHANGE +# define QXT_ADD fetchAndAddOrdered +#else + typedef QBasicAtomic QBasicAtomicInt; +# define QXT_EXCHANGE exchange +# define QXT_EXCHANGE_ QXT_EXCHANGE +# define QXT_ADD fetchAndAdd +#endif + +struct QxtFifoNode { + QxtFifoNode(const char* data, int size) : content(data, size) { +#if QT_VERSION >= 0x50000 + next.store(0); +#else + next = NULL; +#endif + } + QxtFifoNode(const QByteArray &data) : content(data) { +#if QT_VERSION >= 0x50000 + next.store(0); +#else + next = NULL; +#endif + } + + QByteArray content; + QBasicAtomicPointer next; +}; + +class QxtFifoPrivate : public QxtPrivate { +public: + QXT_DECLARE_PUBLIC(QxtFifo) + QxtFifoPrivate() { + QxtFifoNode *n = new QxtFifoNode(NULL, 0); +#if QT_VERSION >= 0x50000 + head.store(n); + tail.store(n); +#else + head = n; + tail = n; +#endif + +#if QT_VERSION >= 0x50000 + available.store(0); +#else + available = 0; +#endif + } + + QBasicAtomicPointer head, tail; + QBasicAtomicInt available; +}; + +/*! +Constructs a new QxtFifo with \a parent. +*/ +QxtFifo::QxtFifo(QObject *parent) : QIODevice(parent) +{ + QXT_INIT_PRIVATE(QxtFifo); + setOpenMode(QIODevice::ReadWrite); +} + +/*! +Constructs a new QxtFifo with \a parent and initial content from \a prime. +*/ +QxtFifo::QxtFifo(const QByteArray &prime, QObject *parent) : QIODevice(parent) +{ + QXT_INIT_PRIVATE(QxtFifo); + setOpenMode(QIODevice::ReadWrite); + // Since we're being constructed, access to the internals is safe + + QxtFifoNode *head; + int available; +#if QT_VERSION >= 0x50000 + head = qxt_d().head.load(); + available = qxt_d().available.load(); +#else + head = qxt_d().head; + available = qxt_d().available; +#endif + +} + +/*! +\reimp +*/ +qint64 QxtFifo::readData ( char * data, qint64 maxSize ) +{ + int bytes, step; +#if QT_VERSION >= 0x50000 + bytes = qxt_d().available.load(); +#else + bytes = qxt_d().available; +#endif + + + if(!bytes) return 0; + if(bytes > maxSize) bytes = maxSize; + int written = bytes; + char* writePos = data; + QxtFifoNode* node; + while(bytes > 0) { + +#if QT_VERSION >= 0x50000 + node = qxt_d().head.load(); +#else + node = qxt_d().head; +#endif + + step = node->content.size(); + if(step >= bytes) { + int rem = step - bytes; + memcpy(writePos, node->content.constData(), bytes); + step = bytes; + node->content = node->content.right(rem); + } else { + memcpy(writePos, node->content.constData(), step); + qxt_d().head.QXT_EXCHANGE_(node->next); + delete node; +#if QT_VERSION >= 0x50000 + node = qxt_d().head.load(); +#else + node = qxt_d().head; +#endif + } + writePos += step; + bytes -= step; + } + qxt_d().available.QXT_ADD(-written); + return written; +} + +/*! +\reimp +*/ +qint64 QxtFifo::writeData ( const char * data, qint64 maxSize ) +{ + if(maxSize > 0) { + if(maxSize > INT_MAX) maxSize = INT_MAX; // qint64 could easily exceed QAtomicInt, so let's play it safe + QxtFifoNode* newData = new QxtFifoNode(data, maxSize); +#if QT_VERSION >= 0x50000 + qxt_d().tail.load()->next.QXT_EXCHANGE(newData); +#else + qxt_d().tail->next.QXT_EXCHANGE(newData); +#endif + qxt_d().tail.QXT_EXCHANGE(newData); + qxt_d().available.QXT_ADD(maxSize); + QMetaObject::invokeMethod(this, "bytesWritten", Qt::QueuedConnection, Q_ARG(qint64, maxSize)); + QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection); + } + return maxSize; +} + +/*! +\reimp +*/ +bool QxtFifo::isSequential () const +{ + return true; +} + +/*! +\reimp +*/ +qint64 QxtFifo::bytesAvailable () const +{ +#if QT_VERSION >= 0x50000 + return qxt_d().available.load() + QIODevice::bytesAvailable(); +#else + return qxt_d().available + QIODevice::bytesAvailable(); + +#endif +} + +/*! +*/ +void QxtFifo::clear() +{ + qxt_d().available.QXT_EXCHANGE(0); + qxt_d().tail.QXT_EXCHANGE_(qxt_d().head); + +#if QT_VERSION >= 0x50000 + QxtFifoNode* node = qxt_d().head.load()->next.QXT_EXCHANGE(NULL); +#else + QxtFifoNode* node = qxt_d().head->next.QXT_EXCHANGE(NULL); +#endif + +#if QT_VERSION >= 0x50000 + while (node && node->next.load()) +#else + while (node && node->next) +#endif + { + QxtFifoNode* next = node->next.QXT_EXCHANGE(NULL); + delete node; + node = next; + } +#if QT_VERSION >= 0x50000 + qxt_d().head.load()->content = QByteArray(); +#else + qxt_d().head->content = QByteArray(); +#endif +} diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.h new file mode 100644 index 0000000000..01ae76bd09 --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtfifo.h @@ -0,0 +1,57 @@ + +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +#ifndef QXTFIFO_H +#define QXTFIFO_H +#include "qxtglobal.h" +#include + +class QxtFifoPrivate; +class QXT_CORE_EXPORT QxtFifo : public QIODevice +{ + Q_OBJECT +public: + QxtFifo(QObject * parent = 0); + virtual bool isSequential() const; + virtual qint64 bytesAvailable() const; + + void clear(); + +protected: + explicit QxtFifo(const QByteArray &prime, QObject * parent = 0); + virtual qint64 readData(char * data, qint64 maxSize); + virtual qint64 writeData(const char * data, qint64 maxSize); + +private: + QXT_DECLARE_PRIVATE(QxtFifo) +}; + +#endif // QXTFIFO_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.cpp index fe7b9e7821..3da47c146e 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #include "qxtglobal.h" @@ -74,7 +80,7 @@ \sa QXT_VERSION_STR */ -const char* qxtVersion() +const char * qxtVersion() { return QXT_VERSION_STR; } @@ -170,13 +176,14 @@ void MyTestPrivate::doQuux() { * \relates * Declares that a public class has a related private class. * - * This shuold be put in the private section of the public class. The parameter is the name of the public class. + * This shuold be put in the private section of the public class. The + * parameter \a PUB must be the name of the public class. */ /*! * \macro QXT_DECLARE_PUBLIC(PUB) * \relates - * Declares that a private class has a related public class. + * Declares that a private class has a related public class named \a PUB. * * This may be put anywhere in the declaration of the private class. The parameter is the name of the public class. */ @@ -187,23 +194,26 @@ void MyTestPrivate::doQuux() { * Initializes resources owned by the private class. * * This should be called from the public class's constructor, - * before qxt_d() is used for the first time. The parameter is the name of the public class. + * before qxt_d() is used for the first time. The parameter \a PUB must be + * the name of the public class. */ /*! * \macro QXT_D(PUB) * \relates - * Returns a reference in the current scope named "d" to the private class. + * Returns a reference in the current scope named "d" to the private class + * associated with the public class \a PUB. * - * This function is only available in a class using \a QXT_DECLARE_PRIVATE. + * This function is only available in a class using QXT_DECLARE_PRIVATE(). */ /*! * \macro QXT_P(PUB) * \relates - * Creates a reference in the current scope named "q" to the public class. + * Creates a reference in the current scope named "q" to the public class + * named \a PUB. * - * This macro only works in a class using \a QXT_DECLARE_PUBLIC. + * This macro only works in a class using QXT_DECLARE_PUBLIC(). */ /*! @@ -228,7 +238,7 @@ void MyTestPrivate::doQuux() { * \relates * Returns a reference to the public class. * - * This function is only available in a class using \a QXT_DECLARE_PUBLIC. + * This function is only available in a class using QXT_DECLARE_PUBLIC(). */ /*! @@ -236,6 +246,6 @@ void MyTestPrivate::doQuux() { * \relates * Returns a const reference to the public class. * - * This function is only available in a class using \a QXT_DECLARE_PUBLIC. + * This function is only available in a class using QXT_DECLARE_PUBLIC(). * This overload will be automatically used in const functions. */ diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h index 575372dcd5..7d5abfbe0d 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h @@ -1,47 +1,57 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTGLOBAL_H #define QXTGLOBAL_H #include -#define QXT_VERSION 0x000600 -#define QXT_VERSION_STR "0.6.0" +#define QXT_VERSION 0x000700 +#define QXT_VERSION_STR "0.7.0" //--------------------------global macros------------------------------ #ifndef QXT_NO_MACROS +#ifndef _countof +#define _countof(x) (sizeof(x)/sizeof(*x)) +#endif + #endif // QXT_NO_MACROS //--------------------------export macros------------------------------ #define QXT_DLLEXPORT DO_NOT_USE_THIS_ANYMORE -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_CORE) # define QXT_CORE_EXPORT Q_DECL_EXPORT # else @@ -51,7 +61,7 @@ # define QXT_CORE_EXPORT #endif // BUILD_QXT_CORE -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_GUI) # define QXT_GUI_EXPORT Q_DECL_EXPORT # else @@ -61,7 +71,7 @@ # define QXT_GUI_EXPORT #endif // BUILD_QXT_GUI -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_NETWORK) # define QXT_NETWORK_EXPORT Q_DECL_EXPORT # else @@ -71,7 +81,7 @@ # define QXT_NETWORK_EXPORT #endif // BUILD_QXT_NETWORK -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_SQL) # define QXT_SQL_EXPORT Q_DECL_EXPORT # else @@ -81,7 +91,7 @@ # define QXT_SQL_EXPORT #endif // BUILD_QXT_SQL -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_WEB) # define QXT_WEB_EXPORT Q_DECL_EXPORT # else @@ -91,7 +101,7 @@ # define QXT_WEB_EXPORT #endif // BUILD_QXT_WEB -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_BERKELEY) # define QXT_BERKELEY_EXPORT Q_DECL_EXPORT # else @@ -101,7 +111,7 @@ # define QXT_BERKELEY_EXPORT #endif // BUILD_QXT_BERKELEY -#if !defined(QXT_STATIC) +#if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_ZEROCONF) # define QXT_ZEROCONF_EXPORT Q_DECL_EXPORT # else @@ -111,7 +121,7 @@ # define QXT_ZEROCONF_EXPORT #endif // QXT_ZEROCONF_EXPORT -#if defined BUILD_QXT_CORE || defined BUILD_QXT_GUI || defined BUILD_QXT_SQL || defined BUILD_QXT_NETWORK || defined BUILD_QXT_WEB || defined BUILD_QXT_BERKELEY || defined BUILD_QXT_ZEROCONF +#if defined(BUILD_QXT_CORE) || defined(BUILD_QXT_GUI) || defined(BUILD_QXT_SQL) || defined(BUILD_QXT_NETWORK) || defined(BUILD_QXT_WEB) || defined(BUILD_QXT_BERKELEY) || defined(BUILD_QXT_ZEROCONF) # define BUILD_QXT #endif @@ -167,6 +177,14 @@ class QxtPrivate { return *qxt_p_ptr; } + inline PUB* qxt_ptr() + { + return qxt_p_ptr; + } + inline const PUB* qxt_ptr() const + { + return qxt_p_ptr; + } private: PUB* qxt_p_ptr; @@ -198,6 +216,14 @@ class QxtPrivateInterface { return *static_cast(pvt); } + inline PVT * operator->() + { + return static_cast(pvt); + } + inline const PVT * operator->() const + { + return static_cast(pvt); + } private: QxtPrivateInterface(const QxtPrivateInterface&) { } QxtPrivateInterface& operator=(const QxtPrivateInterface&) { } diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.cpp index c8ded5081f..fba49feaa0 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtHtmlTemplate diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.h index 02a33eca25..daafa49c19 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthtmltemplate.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTHTMLTEMPLATE_H #define QXTHTMLTEMPLATE_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpserverconnector.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpserverconnector.cpp index 910ee3789b..270e840e9b 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpserverconnector.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpserverconnector.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtHttpServerConnector @@ -41,8 +47,32 @@ high traffic scenarios or virtual hosting configurations. \sa QxtHttpSessionManager */ + +/*! +\class QxtHttpsServerConnector + +\inmodule QxtWeb + +\brief The QxtHttpsServerConnector class provides a built-in HTTPS server for QxtHttpSessionManager + +QxtHttpSessionManager does the work of managing sessions and state for the +otherwise stateless HTTP protocol, but it relies on QxtAbstractHttpConnector +subclasses to implement the protocol used to communicate with the web server. + +QxtHttpsServerConnector is a convenience subclass of QxtHttpServerConnector +that adds HTTPS handling to the internal web server by delegating the +incoming connection handling to QxtSslServer. + +QxtHttpsServerConnector is only available if Qt was compiled with OpenSSL support. + +\sa QxtHttpSessionManager +\sa QxtHttpServerConnector +\sa QxtSslServer +*/ + #include "qxthttpsessionmanager.h" #include "qxtwebevent.h" +#include "qxtsslserver.h" #include #include #include @@ -57,12 +87,19 @@ class QxtHttpServerConnectorPrivate : public QxtPrivate #endif /*! - * Creates a QxtHttpServerConnector with the given \a parent. + * Creates a QxtHttpServerConnector with the given \a parent and \a server. + * + * You may pass a QTcpServer subclass to the \a server parameter to enable customized behaviors, for + * instance to use QSslSocket like QxtHttpsServerConnector does. Pass 0 (the default) to \a server + * to allow QxtHttpServerConnector to create its own QTcpServer. */ -QxtHttpServerConnector::QxtHttpServerConnector(QObject* parent) : QxtAbstractHttpConnector(parent) +QxtHttpServerConnector::QxtHttpServerConnector(QObject* parent, QTcpServer* server) : QxtAbstractHttpConnector(parent) { QXT_INIT_PRIVATE(QxtHttpServerConnector); - qxt_d().server = new QTcpServer(this); + if(server) + qxt_d().server = server; + else + qxt_d().server = new QTcpServer(this); QObject::connect(qxt_d().server, SIGNAL(newConnection()), this, SLOT(acceptConnection())); } @@ -74,6 +111,36 @@ bool QxtHttpServerConnector::listen(const QHostAddress& iface, quint16 port) return qxt_d().server->listen(iface, port); } +/*! + * \reimp + */ +bool QxtHttpServerConnector::shutdown() +{ + if(qxt_d().server->isListening()){ + qxt_d().server->close(); + return true; + } + return false; +} + +/*! + * \reimp + */ +quint16 QxtHttpServerConnector::serverPort() const +{ + return qxt_d().server->serverPort(); +} + +/*! + * Returns the QTcpServer used by this QxtHttpServerConnector. Use this pointer + * to adjust the maxPendingConnections or QNetworkProxy properties of the + * server. + */ +QTcpServer* QxtHttpServerConnector::tcpServer() const +{ + return qxt_d().server; +} + /*! * \internal */ @@ -123,3 +190,54 @@ void QxtHttpServerConnector::writeHeaders(QIODevice* device, const QHttpResponse if (header.majorVersion() == 0) return; // 0.9 doesn't have headers device->write(header.toString().toUtf8()); } + +#ifndef QT_NO_OPENSSL +/*! + * Creates a QxtHttpsServerConnector with the given \a parent. + */ +QxtHttpsServerConnector::QxtHttpsServerConnector(QObject* parent) +: QxtHttpServerConnector(parent, new QxtSslServer) +{ + // initializers only + // Reparent the SSL server + tcpServer()->setParent(this); +} + +/*! + * \reimp + */ +bool QxtHttpsServerConnector::listen(const QHostAddress& iface, quint16 port) +{ + return QxtHttpServerConnector::listen(iface, port); +} + +/*! + * Returns the QxtSslServer used by this QxtHttpsServerConnector. Use this + * pointer to adjust the maxPendingConnections or QNetworkProxy properties of the + * server or the SSL properties assigned to incoming connections. + */ +QxtSslServer* QxtHttpsServerConnector::tcpServer() const +{ + return static_cast(QxtHttpServerConnector::tcpServer()); +} + +/*! + * Handles peer verification errors during SSL negotiation. This method may + * be overridden to tear-down the connection. + */ +void QxtHttpsServerConnector::peerVerifyError(const QSslError &error) +{ + qWarning() << "QxtHttpsServerConnector::peerVerifyError(): " << error.errorString(); +} + +/*! + * Handles errors with SSL negotiation. This method may be overridden to + * examine the errors and take appropriate action. The default behavior + * is to terminate the connection (ie: ignoreSslErrors() is NOT called). + */ +void QxtHttpsServerConnector::sslErrors(const QList &errors) +{ + for(int i = 0; i < errors.size(); ++i) + qWarning() << "QxtHttpsServerConnector::sslErrors(): " << errors.at(i).errorString(); +} +#endif /* QT_NO_OPENSSL */ diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.cpp index e02ba562a7..f74d31a899 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtHttpSessionManager @@ -44,7 +50,7 @@ service, even one that only returns a more useful error message. QxtHttpSessionManager attempts to be thread-safe in accepting connections and posting events. It is reentrant for all other functionality. -\sa QxtAbstractWebService +\sa class QxtAbstractWebService */ #include "qxthttpsessionmanager.h" @@ -62,6 +68,9 @@ posting events. It is reentrant for all other functionality. #include #include #include +#ifndef QT_NO_OPENSSL +#include +#endif #ifndef QXT_DOXYGEN_RUN class QxtHttpSessionManagerPrivate : public QxtPrivate @@ -69,7 +78,7 @@ class QxtHttpSessionManagerPrivate : public QxtPrivate public: struct ConnectionState { - QxtBoundFunction* onBytesWritten; + QxtBoundFunction *onBytesWritten, *onReadyRead, *onAboutToClose; bool readyRead; bool finishedTransfer; bool keepAlive; @@ -77,6 +86,13 @@ class QxtHttpSessionManagerPrivate : public QxtPrivate int httpMajorVersion; int httpMinorVersion; int sessionID; + + void clearHandlers() { + delete onBytesWritten; + delete onReadyRead; + delete onAboutToClose; + onBytesWritten = onReadyRead = onAboutToClose = 0; + } }; QxtHttpSessionManagerPrivate() : iface(QHostAddress::Any), port(80), sessionCookieName("sessionID"), connector(0), staticService(0), autoCreateSession(true), @@ -92,6 +108,7 @@ class QxtHttpSessionManagerPrivate : public QxtPrivate QMutex eventLock; QList eventQueue; + QHash, QxtWebRequestEvent*> pendingRequests; QMutex sessionLock; QHash sessionKeys; // sessionKey->sessionID @@ -112,12 +129,12 @@ QxtHttpSessionManager::QxtHttpSessionManager(QObject* parent) : QxtAbstractWebSe /*! * Returns the interface on which the session manager will listen for incoming connections. - * \sa setInterface + * \sa setListenInterface() */ QHostAddress QxtHttpSessionManager::listenInterface() const - { - return qxt_d().iface; - } +{ + return qxt_d().iface; +} /*! * Sets the interface \a iface on which the session manager will listen for incoming @@ -126,7 +143,7 @@ QHostAddress QxtHttpSessionManager::listenInterface() const * The default value is QHostAddress::Any, which will cause the session manager * to listen on all network interfaces. * - * \sa QxtAbstractHttpConnector::listen + * \sa QxtAbstractHttpConnector::listen() */ void QxtHttpSessionManager::setListenInterface(const QHostAddress& iface) { @@ -134,8 +151,11 @@ void QxtHttpSessionManager::setListenInterface(const QHostAddress& iface) } /*! - * Returns the port on which the session manager will listen for incoming connections. - * \sa setInterface + * Returns the port on which the session manager is expected to listen for + * incoming connections. This is always whatever value was supplied in the + * last setPort() and not neccessarily the port number actually being + * used. + * \sa setPort(), serverPort() */ quint16 QxtHttpSessionManager::port() const { @@ -143,19 +163,39 @@ quint16 QxtHttpSessionManager::port() const } /*! - * Sets the \a port on which the session manager will listen for incoming connections. + * Sets the \a port on which the session manager should listen for incoming + * connections. * * The default value is to listen on port 80. This is an acceptable value when * using QxtHttpServerConnector, but it is not likely to be desirable for other - * connectors. + * connectors. You may also use 0 to allow the network layer to dynamically + * assign a port number. In this case, the serverPort() method will + * return the actual port assigned once the session has been successfully + * started. * - * \sa port + * \note Setting the port number after the session has been started will + * have no effect unless it is shutdown and started again. + * + * \sa port(), serverPort() */ void QxtHttpSessionManager::setPort(quint16 port) { qxt_d().port = port; } +/*! + * Returns the port on which the session manager is listening for incoming + * connections. This will be 0 if the session manager has not been started + * or was shutdown. + * \sa setInterface(), setPort() + */ +quint16 QxtHttpSessionManager::serverPort() const +{ + if(qxt_d().connector) + return connector()->serverPort(); + return 0; +} + /*! * \reimp */ @@ -165,9 +205,18 @@ bool QxtHttpSessionManager::start() return connector()->listen(listenInterface(), port()); } +/*! + * \reimp + */ +bool QxtHttpSessionManager::shutdown() +{ + Q_ASSERT(qxt_d().connector); + return connector()->shutdown(); +} + /*! * Returns the name of the HTTP cookie used to track sessions in the web browser. - * \sa setSessionCookieName + * \sa setSessionCookieName() */ QByteArray QxtHttpSessionManager::sessionCookieName() const { @@ -175,11 +224,12 @@ QByteArray QxtHttpSessionManager::sessionCookieName() const } /*! - * Sets the \a name of the HTTP cookie used to track sessions in the web browser. + * Sets the \a name of the HTTP cookie used to track sessions in the web + * browser. * * The default value is "sessionID". * - * \sa sessionCookieName + * \sa sessionCookieName() */ void QxtHttpSessionManager::setSessionCookieName(const QByteArray& name) { @@ -189,7 +239,7 @@ void QxtHttpSessionManager::setSessionCookieName(const QByteArray& name) /*! * Sets the \a connector used to manage connections to web browsers. * - * \sa connector + * \sa connector() */ void QxtHttpSessionManager::setConnector(QxtAbstractHttpConnector* connector) { @@ -203,7 +253,7 @@ void QxtHttpSessionManager::setConnector(QxtAbstractHttpConnector* connector) * This overload is provided for convenience and can construct the predefined * connectors provided with Qxt. * - * \sa connector + * \sa connector() */ void QxtHttpSessionManager::setConnector(Connector connector) { @@ -220,7 +270,7 @@ void QxtHttpSessionManager::setConnector(Connector connector) /*! * Returns the connector used to manage connections to web browsers. - * \sa setConnector + * \sa setConnector() */ QxtAbstractHttpConnector* QxtHttpSessionManager::connector() const { @@ -231,7 +281,7 @@ QxtAbstractHttpConnector* QxtHttpSessionManager::connector() const * Returns \c true if sessions are automatically created for every connection * that does not already have a session cookie associated with it; otherwise * returns \c false. - * \sa setAutoCreateSession + * \sa setAutoCreateSession() */ bool QxtHttpSessionManager::autoCreateSession() const { @@ -245,7 +295,7 @@ bool QxtHttpSessionManager::autoCreateSession() const * Sessions are only created for clients that support HTTP cookies. HTTP/0.9 * clients will never generate a session. * - * \sa autoCreateSession + * \sa autoCreateSession() */ void QxtHttpSessionManager::setAutoCreateSession(bool enable) { @@ -256,7 +306,7 @@ void QxtHttpSessionManager::setAutoCreateSession(bool enable) * Returns the QxtAbstractWebService that is used to respond to requests from * connections that are not associated with a session. * - * \sa setStaticContentService + * \sa setStaticContentService() */ QxtAbstractWebService* QxtHttpSessionManager::staticContentService() const { @@ -270,7 +320,7 @@ QxtAbstractWebService* QxtHttpSessionManager::staticContentService() const * If no static content service is set, connections that are not associated * with a session will receive an "Internal Configuration Error". * - * \sa staticContentService + * \sa staticContentService() */ void QxtHttpSessionManager::setStaticContentService(QxtAbstractWebService* service) { @@ -289,6 +339,19 @@ void QxtHttpSessionManager::postEvent(QxtWebEvent* h) QMetaObject::invokeMethod(this, "processEvents", Qt::QueuedConnection); } +/*! + * This method removes the session cookie value corresponding to a deleted + * service. + */ +void QxtHttpSessionManager::sessionDestroyed(int sessionID) +{ + QMutexLocker locker(&qxt_d().sessionLock); + QUuid key = qxt_d().sessionKeys.key(sessionID); +// qDebug() << Q_FUNC_INFO << "sessionID" << sessionID << "key" << key; + if(!key.isNull()) + qxt_d().sessionKeys.remove(key); +} + /*! * Creates a new session and sends the session key to the web browser. * @@ -307,7 +370,7 @@ int QxtHttpSessionManager::newSession() } while (qxt_d().sessionKeys.contains(key)); qxt_d().sessionKeys[key] = sessionID; - postEvent(new QxtWebStoreCookieEvent(sessionID, qxt_d().sessionCookieName, key)); + postEvent(new QxtWebStoreCookieEvent(sessionID, qxt_d().sessionCookieName, key.toString())); return sessionID; } @@ -319,6 +382,9 @@ int QxtHttpSessionManager::newSession() * Subclasses may override this function to perform preprocessing on each * request, but they must call the base class implementation in order to * generate and dispatch the appropriate events. + * + * To facilitate use with multi-threaded applications, the event will remain + * valid until a response is posted. */ void QxtHttpSessionManager::incomingRequest(quint32 requestID, const QHttpRequestHeader& header, QxtWebContent* content) { @@ -340,6 +406,8 @@ void QxtHttpSessionManager::incomingRequest(quint32 requestID, const QHttpReques if (qxt_d().sessionKeys.contains(sessionCookie)) { sessionID = qxt_d().sessionKeys[sessionCookie]; + if(!sessionID && header.majorVersion() > 0 && qxt_d().autoCreateSession) + sessionID = newSession(); } else if (header.majorVersion() > 0 && qxt_d().autoCreateSession) { @@ -361,11 +429,21 @@ void QxtHttpSessionManager::incomingRequest(quint32 requestID, const QHttpReques state.keepAlive = true; qxt_d().sessionLock.unlock(); - QxtWebRequestEvent* event = new QxtWebRequestEvent(sessionID, requestID, QUrl(header.path())); + QxtWebRequestEvent* event = new QxtWebRequestEvent(sessionID, requestID, QUrl::fromEncoded(header.path().toUtf8())); + qxt_d().eventLock.lock(); + qxt_d().pendingRequests.insert(QPair(sessionID, requestID), event); + qxt_d().eventLock.unlock(); QTcpSocket* socket = qobject_cast(device); if (socket) { - event->remoteAddress = socket->peerAddress().toString(); + event->remoteAddress = socket->peerAddress(); +#ifndef QT_NO_OPENSSL + QSslSocket* sslSocket = qobject_cast(socket); + if(sslSocket) { + event->isSecure = true; + event->clientCertificate = sslSocket->peerCertificate(); + } +#endif } event->method = header.method(); event->cookies = cookies; @@ -385,7 +463,10 @@ void QxtHttpSessionManager::incomingRequest(quint32 requestID, const QHttpReques event->headers.insert("X-Request-Protocol", "HTTP/" + QString::number(state.httpMajorVersion) + '.' + QString::number(state.httpMinorVersion)); if (sessionID && session(sessionID)) { - session(sessionID)->pageRequestedEvent(event); + QxtAbstractWebService *service = session(sessionID); + if(content) + content->setParent(service); // Set content ownership to the service + service->pageRequestedEvent(event); } else if (qxt_d().staticService) { @@ -403,9 +484,11 @@ void QxtHttpSessionManager::incomingRequest(quint32 requestID, const QHttpReques void QxtHttpSessionManager::disconnected(QIODevice* device) { QMutexLocker locker(&qxt_d().sessionLock); - if (qxt_d().connectionState.contains(device)) - delete qxt_d().connectionState[device].onBytesWritten; + if (qxt_d().connectionState.contains(device)) { + qxt_d().connectionState[device].clearHandlers(); + } qxt_d().connectionState.remove(device); + device->deleteLater(); } /*! @@ -451,6 +534,8 @@ void QxtHttpSessionManager::processEvents() { QxtWebStoreCookieEvent* ce = static_cast(e); QString cookie = ce->name + '=' + ce->data; + if (!ce->path.isEmpty()) + cookie += "; path=" + ce->path; if (ce->expiration.isValid()) { cookie += "; max-age=" + QString::number(QDateTime::currentDateTime().secsTo(ce->expiration)) @@ -462,7 +547,9 @@ void QxtHttpSessionManager::processEvents() else if (e->type() == QxtWebEvent::RemoveCookie) { QxtWebRemoveCookieEvent* ce = static_cast(e); - header.addValue("set-cookie", ce->name + "=; max-age=0; expires=" + QDateTime(QDate(1970, 1, 1)).toString("ddd, dd-MMM-YYYY hh:mm:ss GMT")); + QString path; + if(!ce->path.isEmpty()) path = "path=" + ce->path + "; "; + header.addValue("set-cookie", ce->name + "=; "+path+"max-age=0; expires=" + QDateTime(QDate(1970, 1, 1)).toString("ddd, dd-MMM-YYYY hh:mm:ss GMT")); removeIDs.push_front(i); } } @@ -473,9 +560,15 @@ void QxtHttpSessionManager::processEvents() // TODO: This should only be invoked when pipelining occurs // In theory it shouldn't cause any problems as POST is specced to not be pipelined if (content) content->ignoreRemainingContent(); + QHash,QxtWebRequestEvent*>::iterator iPending = + qxt_d().pendingRequests.find(QPair(sessionID, requestID)); + if(iPending != qxt_d().pendingRequests.end()){ + delete *iPending; + qxt_d().pendingRequests.erase(iPending); + } QxtHttpSessionManagerPrivate::ConnectionState& state = qxt_d().connectionState[connector()->getRequestConnection(requestID)]; - + QIODevice* source; header.setStatusLine(pe->status, pe->statusMessage, state.httpMajorVersion, state.httpMinorVersion); if (re) @@ -493,8 +586,7 @@ void QxtHttpSessionManager::processEvents() if (state.httpMajorVersion == 0 || (state.httpMajorVersion == 1 && state.httpMinorVersion == 0)) pe->chunked = false; - connector()->setRequestDataSource( pe->requestID, pe->dataSource ); - QSharedPointer source( pe->dataSource ); + source = pe->dataSource; state.finishedTransfer = false; bool emptyContent = !source->bytesAvailable() && !pe->streaming; state.readyRead = source->bytesAvailable(); @@ -508,40 +600,27 @@ void QxtHttpSessionManager::processEvents() } else { - if (state.onBytesWritten) delete state.onBytesWritten; // disconnect old handler + pe->dataSource = 0; // so that it isn't destroyed when the event is deleted + state.clearHandlers(); // disconnect old handlers + if (!pe->chunked) { state.keepAlive = false; - state.onBytesWritten = QxtMetaObject::bind(this, SLOT(sendNextBlock(int)), - Q_ARG(int, requestID)); - - QxtMetaObject::connect(source.data(), SIGNAL(readyRead()), - QxtMetaObject::bind(this, SLOT(blockReadyRead(int)), - Q_ARG(int, requestID)), - Qt::QueuedConnection); - - QxtMetaObject::connect(source.data(), SIGNAL(aboutToClose()), - QxtMetaObject::bind(this, SLOT(closeConnection(int)), - Q_ARG(int, requestID)), - Qt::QueuedConnection); + state.onBytesWritten = QxtMetaObject::bind(this, SLOT(sendNextBlock(int, QObject*)), Q_ARG(int, requestID), Q_ARG(QObject*, source)); + state.onReadyRead = QxtMetaObject::bind(this, SLOT(blockReadyRead(int, QObject*)), Q_ARG(int, requestID), Q_ARG(QObject*, source)); + state.onAboutToClose = QxtMetaObject::bind(this, SLOT(closeConnection(int)), Q_ARG(int, requestID)); } else { header.setValue("transfer-encoding", "chunked"); - state.onBytesWritten = QxtMetaObject::bind(this, SLOT(sendNextChunk(int)), - Q_ARG(int, requestID)); - - QxtMetaObject::connect(source.data(), SIGNAL(readyRead()), - QxtMetaObject::bind(this, SLOT(chunkReadyRead(int)), - Q_ARG(int, requestID)), - Qt::QueuedConnection); - - QxtMetaObject::connect(source.data(), SIGNAL(aboutToClose()), - QxtMetaObject::bind(this, SLOT(sendEmptyChunk(int)), - Q_ARG(int, requestID)), - Qt::QueuedConnection); + state.onBytesWritten = QxtMetaObject::bind(this, SLOT(sendNextChunk(int, QObject*)), Q_ARG(int, requestID), Q_ARG(QObject*, source)); + state.onReadyRead = QxtMetaObject::bind(this, SLOT(chunkReadyRead(int, QObject*)), Q_ARG(int, requestID), Q_ARG(QObject*, source)); + state.onAboutToClose = QxtMetaObject::bind(this, SLOT(sendEmptyChunk(int, QObject*)), Q_ARG(int, requestID), Q_ARG(QObject*, source)); } QxtMetaObject::connect(device, SIGNAL(bytesWritten(qint64)), state.onBytesWritten, Qt::QueuedConnection); + QxtMetaObject::connect(source, SIGNAL(readyRead()), state.onReadyRead, Qt::QueuedConnection); + QxtMetaObject::connect(source, SIGNAL(aboutToClose()), state.onAboutToClose, Qt::QueuedConnection); + QObject::connect(device, SIGNAL(destroyed()), source, SLOT(deleteLater())); if (state.keepAlive) { @@ -555,9 +634,9 @@ void QxtHttpSessionManager::processEvents() if (state.readyRead) { if (pe->chunked) - sendNextChunk(requestID); + sendNextChunk(requestID, source); else - sendNextBlock(requestID); + sendNextBlock(requestID, source); } } @@ -573,32 +652,24 @@ void QxtHttpSessionManager::processEvents() /*! * \internal */ -void QxtHttpSessionManager::chunkReadyRead(int requestID) +void QxtHttpSessionManager::chunkReadyRead(int requestID, QObject* dataSourceObject) { - if (!connector()) return; - - const QSharedPointer& dataSource = connector()->getRequestDataSource( requestID ); + QIODevice* dataSource = static_cast(dataSourceObject); if (!dataSource->bytesAvailable()) return; - QIODevice* device = connector()->getRequestConnection(requestID); - if (!device) return; - if (!device->bytesToWrite() || qxt_d().connectionState[device].readyRead == false) { qxt_d().connectionState[device].readyRead = true; - sendNextChunk(requestID); + sendNextChunk(requestID, dataSourceObject); } } /*! * \internal */ -void QxtHttpSessionManager::sendNextChunk(int requestID) +void QxtHttpSessionManager::sendNextChunk(int requestID, QObject* dataSourceObject) { - if ( !connector() ) - return; - - const QSharedPointer& dataSource = connector()->getRequestDataSource( requestID ); + QIODevice* dataSource = static_cast(dataSourceObject); QIODevice* device = connector()->getRequestConnection(requestID); QxtHttpSessionManagerPrivate::ConnectionState& state = qxt_d().connectionState[device]; if (state.finishedTransfer) @@ -619,13 +690,13 @@ void QxtHttpSessionManager::sendNextChunk(int requestID) } state.readyRead = false; if (!state.streaming && !dataSource->bytesAvailable()) - QMetaObject::invokeMethod(this, "sendEmptyChunk", Q_ARG(int, requestID)); + QMetaObject::invokeMethod(this, "sendEmptyChunk", Q_ARG(int, requestID), Q_ARG(QObject*, dataSource)); } /*! * \internal */ -void QxtHttpSessionManager::sendEmptyChunk(int requestID) +void QxtHttpSessionManager::sendEmptyChunk(int requestID, QObject* dataSource) { QIODevice* device = connector()->getRequestConnection(requestID); if (!qxt_d().connectionState.contains(device)) return; // in case a disconnect signal and a bytesWritten signal get fired in the wrong order @@ -633,13 +704,11 @@ void QxtHttpSessionManager::sendEmptyChunk(int requestID) if (state.finishedTransfer) return; state.finishedTransfer = true; device->write("0\r\n\r\n"); - + dataSource->deleteLater(); if (state.keepAlive) { delete state.onBytesWritten; state.onBytesWritten = 0; - QSharedPointer& dataSource = connector()->getRequestDataSource( requestID ); - dataSource.clear(); connector()->incomingData(device); } else @@ -654,45 +723,38 @@ void QxtHttpSessionManager::sendEmptyChunk(int requestID) void QxtHttpSessionManager::closeConnection(int requestID) { QIODevice* device = connector()->getRequestConnection(requestID); - if( !device ) return; // already closing/closed QxtHttpSessionManagerPrivate::ConnectionState& state = qxt_d().connectionState[device]; state.finishedTransfer = true; - state.onBytesWritten = NULL; QTcpSocket* socket = qobject_cast(device); if (socket) socket->disconnectFromHost(); else device->close(); - - connector()->doneWithRequest( requestID ); } /*! * \internal */ -void QxtHttpSessionManager::blockReadyRead(int requestID) +void QxtHttpSessionManager::blockReadyRead(int requestID, QObject* dataSourceObject) { - const QSharedPointer& dataSource = connector()->getRequestDataSource( requestID ); + QIODevice* dataSource = static_cast(dataSourceObject); if (!dataSource->bytesAvailable()) return; QIODevice* device = connector()->getRequestConnection(requestID); if (!device->bytesToWrite() || qxt_d().connectionState[device].readyRead == false) { qxt_d().connectionState[device].readyRead = true; - sendNextBlock(requestID); + sendNextBlock(requestID, dataSourceObject); } } /*! * \internal */ -void QxtHttpSessionManager::sendNextBlock(int requestID) +void QxtHttpSessionManager::sendNextBlock(int requestID, QObject* dataSourceObject) { - QSharedPointer& dataSource = connector()->getRequestDataSource( requestID ); + QIODevice* dataSource = static_cast(dataSourceObject); QIODevice* device = connector()->getRequestConnection(requestID); - if (!device) - return; - if (!qxt_d().connectionState.contains(device)) return; // in case a disconnect signal and a bytesWritten signal get fired in the wrong order QxtHttpSessionManagerPrivate::ConnectionState& state = qxt_d().connectionState[device]; if (state.finishedTransfer) return; @@ -701,11 +763,13 @@ void QxtHttpSessionManager::sendNextBlock(int requestID) state.readyRead = false; return; } - QByteArray chunk = dataSource->read(32768); // this is a good chunk size + QByteArray chunk = dataSource->read(32768); // empirically determined to be a good chunk size device->write(chunk); state.readyRead = false; if (!state.streaming && !dataSource->bytesAvailable()) { closeConnection(requestID); + dataSource->deleteLater(); + state.clearHandlers(); } } diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.h index 6ded5a0320..c00e1a15df 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxthttpsessionmanager.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTHTTPSESSIONMANAGER_H #define QXTHTTPSESSIONMANAGER_H @@ -29,8 +35,7 @@ #include "qxtabstractwebsessionmanager.h" #include "qxtabstracthttpconnector.h" #include -#include -#include +#include "qhttpheader.h" class QxtWebEvent; class QxtWebContent; @@ -40,6 +45,11 @@ class QXT_WEB_EXPORT QxtHttpSessionManager : public QxtAbstractWebSessionManager { friend class QxtAbstractHttpConnector; Q_OBJECT + Q_PROPERTY(QHostAddress listenInterface READ listenInterface WRITE setListenInterface) + Q_PROPERTY(QByteArray sessionCookieName READ sessionCookieName WRITE setSessionCookieName) + Q_PROPERTY(quint16 port READ port WRITE setPort) + Q_PROPERTY(quint16 serverPort READ serverPort) + Q_PROPERTY(bool autoCreateSession READ autoCreateSession WRITE setAutoCreateSession) public: enum Connector { HttpServer, Scgi, Fcgi }; @@ -53,6 +63,8 @@ class QXT_WEB_EXPORT QxtHttpSessionManager : public QxtAbstractWebSessionManager quint16 port() const; void setPort(quint16 port); + quint16 serverPort() const; + QByteArray sessionCookieName() const; void setSessionCookieName(const QByteArray& name); @@ -67,8 +79,10 @@ class QXT_WEB_EXPORT QxtHttpSessionManager : public QxtAbstractWebSessionManager QxtAbstractHttpConnector* connector() const; virtual bool start(); + virtual bool shutdown(); protected: + virtual void sessionDestroyed(int sessionID); virtual int newSession(); virtual void incomingRequest(quint32 requestID, const QHttpRequestHeader& header, QxtWebContent* device); @@ -77,11 +91,11 @@ protected Q_SLOTS: private Q_SLOTS: void closeConnection(int requestID); - void chunkReadyRead(int requestID); - void sendNextChunk(int requestID); - void sendEmptyChunk(int requestID); - void blockReadyRead(int requestID); - void sendNextBlock(int requestID); + void chunkReadyRead(int requestID, QObject* dataSource); + void sendNextChunk(int requestID, QObject* dataSource); + void sendEmptyChunk(int requestID, QObject* dataSource); + void blockReadyRead(int requestID, QObject* dataSource); + void sendNextBlock(int requestID, QObject* dataSource); private: void disconnected(QIODevice* device); diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.cpp index e55fd3615f..be4bc73097 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \namespace QxtMetaObject @@ -323,11 +329,7 @@ namespace QxtMetaObject */ bool connect(QObject* sender, const char* signal, QxtBoundFunction* slot, Qt::ConnectionType type) { - if (!sender) - { - qWarning() << "Got connect() with a null sender!"; - return false; - } + Q_ASSERT(sender); const QMetaObject* meta = sender->metaObject(); int methodID = meta->indexOfMethod(meta->normalizedSignature(signal).mid(1).constData()); if (methodID < 0) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.h index a2acdfe99e..be2d72c476 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetaobject.h @@ -1,28 +1,34 @@ -/**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ #ifndef QXTMETAOBJECT_H +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + #define QXTMETAOBJECT_H #include diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.cpp index 68f342be38..c1bc782b43 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.cpp @@ -1,27 +1,33 @@ -/**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ #include "qxtnull.h" +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + // nothing here diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.h index 9e8f7e9b81..6978a97bc0 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnull.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTNULL_H #define QXTNULL_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnullable.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnullable.h index eb2a9e291e..596a792928 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnullable.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtnullable.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtCore module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtNullable QxtNullable diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp index 3297b94ff0..bad6ee7475 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtScgiServerConnector @@ -70,6 +76,26 @@ bool QxtScgiServerConnector::listen(const QHostAddress& iface, quint16 port) return qxt_d().server->listen(iface, port); } +/*! + * \reimp + */ +bool QxtScgiServerConnector::shutdown() +{ + if(qxt_d().server->isListening()){ + qxt_d().server->close(); + return true; + } + return false; +} + +/*! + * \reimp + */ +quint16 QxtScgiServerConnector::serverPort() const +{ + return qxt_d().server->serverPort(); +} + /*! * \internal */ diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.cpp new file mode 100644 index 0000000000..f24214740b --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.cpp @@ -0,0 +1,220 @@ + +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +#include "qxtsslserver.h" +#include +#include + +/*! + * \class QxtSslServer + * \inmodule QxtNetwork + * \brief The QxtSslServer class provides a simple SSL server. + * + * QxtSslServer is a simple SSL server. As a QTcpServer subclass it shares all of the same behaviors + * as its parent class, except that new connections are created as QSslSocket objects instead of + * QTcpSocket objects. + * + * Before QxtSslServer can accept any encrypted connections, the local certificate (see setLocalCertificate) + * and private key (see setPrivateKey) must be set. Failure to set these properties before accepting + * connections will cause all incoming connections to generate sslError signals when negotiating + * encryption. If autoEncrypt is disabled, the local certificate and private key can be set on the + * individual socket objects before starting encryption; this behavior is generally not necessary unless + * you wish to serve up a different certificate based on some property of the connection or some data + * negotiated before beginning encryption. + * + * Unlike QTcpServer, overriding QxtSslServer::incomingConnection() is not recommended. + * + * QxtSslServer is only available if Qt was compiled with OpenSSL support. + */ + +#ifndef QT_NO_OPENSSL +#include + +class QxtSslServerPrivate : public QxtPrivate +{ +public: + QXT_DECLARE_PUBLIC(QxtSslServer) + QSslCertificate localCertificate; + QSslKey privateKey; + bool autoEncrypt; + QQueue pendingConnections; +}; + +/*! + * Constructs a new QxtSslServer object with the specified \a parent. + */ +QxtSslServer::QxtSslServer(QObject* parent) : QTcpServer(parent) +{ + QXT_INIT_PRIVATE(QxtSslServer); + qxt_d().autoEncrypt = true; +} + +/*! + * \reimp + */ +bool QxtSslServer::hasPendingConnections() const +{ + return !qxt_d().pendingConnections.isEmpty(); +} + +/*! + * \reimp + */ +QTcpSocket* QxtSslServer::nextPendingConnection() +{ + if(!hasPendingConnections()) return 0; + return qxt_d().pendingConnections.dequeue(); +} + +/*! + * Sets the certificate to be presented to clients during the SSL handshake. + * + * Setting the certificate only affects new connections established after the certificate + * has been set. + * + * A certificate is the means of identification used in the SSL process. The local + * certificate is used by the remote end to verify the local user's identity against its + * list of Certification Authorities. + * + * \sa localCertificate + * \sa setPrivateKey + */ +void QxtSslServer::setLocalCertificate(const QSslCertificate& cert) +{ + qxt_d().localCertificate = cert; +} + +/*! + * This is an overloaded function, provided for convenience. + * + * Sets the certificate to be presented to clients during the SSL handshake to + * the first certificate contained in the file specified by \a path. + * + * \sa localCertificate + */ +void QxtSslServer::setLocalCertificate(const QString& path, QSsl::EncodingFormat format) +{ + QFile file(path); + if(!file.open(QIODevice::ReadOnly)) return; + setLocalCertificate(QSslCertificate(&file, format)); +} + +/*! + * Returns the local certificate used to identify the server, or an empty certificate if none has been set. + * \sa setLocalCertificate + */ +QSslCertificate QxtSslServer::localCertificate() const +{ + return qxt_d().localCertificate; +} + +/*! + * Sets the private key used for encryption. + * + * Setting the private key only affects new connections established after the key has been set. + * + * \sa privateKey + */ +void QxtSslServer::setPrivateKey(const QSslKey& key) +{ + qxt_d().privateKey = key; +} + +/*! + * This is an overloaded function, provided for convenience. + * + * Sets the private key used for encryption to the key contained in the file specified by + * \a path. The specified algorithm, format, and pass phrase are used to decrypt the key. + * + * \sa privateKey + */ +void QxtSslServer::setPrivateKey(const QString& path, QSsl::KeyAlgorithm algo, QSsl::EncodingFormat format, const QByteArray& passPhrase) +{ + QFile file(path); + if(!file.open(QIODevice::ReadOnly)) return; + setPrivateKey(QSslKey(&file, algo, format, QSsl::PrivateKey, passPhrase)); +} + +/*! + * Returns the private key used to encrypt communication, or an empty key if none has been set. + * \sa setPrivateKey + */ +QSslKey QxtSslServer::privateKey() const +{ + return qxt_d().privateKey; +} + +/*! + * Enables or disables automatically starting encryption on new connections. + * + * Set this property to false if you wish to enable encryption on incoming connections + * at a later time. The default value is true. + * + * \sa autoEncrypt + */ +void QxtSslServer::setAutoEncrypt(bool on) +{ + qxt_d().autoEncrypt = on; +} + +/*! + * Returns true if incoming connections will automatically be encrypted, or false otherwise. + * \sa setAutoEncrypt + */ +bool QxtSslServer::autoEncrypt() const +{ + return qxt_d().autoEncrypt; +} + +/*! + * \reimp + */ +void QxtSslServer::incomingConnection(int socketDescriptor) +{ + QSslSocket* socket = new QSslSocket(this); + if(socket->setSocketDescriptor(socketDescriptor)) { + socket->setLocalCertificate(qxt_d().localCertificate); + socket->setPrivateKey(qxt_d().privateKey); + if(parent()){ + connect(socket, SIGNAL(sslErrors(const QList&)), + parent(), SLOT(sslErrors(const QList&))); + connect(socket, SIGNAL(peerVerifyError(const QSslError&)), + parent(), SLOT(peerVerifyError(const QSslError&))); + } + qxt_d().pendingConnections.enqueue(socket); + // emit newConnection(); // removed: QTcpServerPrivate emits this for us + if(qxt_d().autoEncrypt) socket->startServerEncryption(); + } else { + delete socket; + } +} + +#endif /* QT_NO_OPENSSL */ diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtweb.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtweb.h index 0940ba88e3..6c3e1cd6c3 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtweb.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtweb.h @@ -1,38 +1,45 @@ -/**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ #ifndef QXTWEB_H_INCLUDED +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + #define QXTWEB_H_INCLUDED #include "qxtabstracthttpconnector.h" #include "qxtabstractwebservice.h" #include "qxtabstractwebsessionmanager.h" -#include "qxtwebcgiservice.h" #include "qxthtmltemplate.h" #include "qxthttpsessionmanager.h" +#include "qxtwebcgiservice.h" #include "qxtwebcontent.h" #include "qxtwebevent.h" +#include "qxtwebjsonrpcservice.h" #include "qxtwebservicedirectory.h" #include "qxtwebslotservice.h" diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp index 4ddc00c7e6..ead51ce09b 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtWebCgiService @@ -194,7 +200,7 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) env["SCRIPT_NAME"] = event->originalUrl.path().remove(QRegExp(QRegExp::escape(event->url.path()) + '$')); env["SCRIPT_FILENAME"] = qxt_d().binary; // CGI/1.1 doesn't define this but PHP demands it env.remove("REMOTE_HOST"); - env["REMOTE_ADDR"] = event->remoteAddress; + env["REMOTE_ADDR"] = event->remoteAddress.toString(); // TODO: If we ever support HTTP authentication, we should use these env.remove("AUTH_TYPE"); env.remove("REMOTE_USER"); @@ -212,8 +218,8 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) env["QUERY_STRING"] = event->url.encodedQuery(); // Populate HTTP header environment variables - QMultiHash::const_iterator iter = event->headers.constBegin(); - while (iter != event->headers.constEnd()) + QMultiHash::const_iterator iter = event->headers.begin(); + while (iter != event->headers.end()) { QString key = "HTTP_" + iter.key().toUpper().replace('-', '_'); if (key != "HTTP_CONTENT_TYPE" && key != "HTTP_CONTENT_LENGTH") @@ -222,9 +228,9 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) } // Populate HTTP_COOKIE parameter - iter = event->cookies.constBegin(); + iter = event->cookies.begin(); QString cookies; - while (iter != event->cookies.constEnd()) + while (iter != event->cookies.end()) { if (!cookies.isEmpty()) cookies += "; "; @@ -321,7 +327,7 @@ void QxtWebCgiServicePrivate::processReadyRead() // If a previous header (currently just status) hasn't created an event, create a normal page event here if (!event) { - event = new QxtWebPageEvent(request.sessionID, request.requestID, QSharedPointer(process) ); + event = new QxtWebPageEvent(request.sessionID, request.requestID, process); event->status = code; } // Add other response headers passed from CGI (currently only Content-Type is supported) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.h index 3f68e79466..b944519b65 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBCGISERVICE_H #define QXTWEBCGISERVICE_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice_p.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice_p.h index b7355a3d00..1b1a25339c 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice_p.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice_p.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBCGISERVICE_P_H #define QXTWEBCGISERVICE_P_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp index ff58663569..6fa17026b8 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp @@ -1,37 +1,43 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtWebContent \inmodule QxtWeb -\brief The QxtWebContent class provides and I/O device for data sent by the web browser +\brief The QxtWebContent class provides an I/O device for data sent by the web browser -QxtWebContent is a read-only QIODevice subclass that encapsulates data sent -from the web browser, for instance in a POST or PUT request. +QxtWebContent is a QxtFifo subclass that encapsulates data sent from the web +browser, for instance in a POST or PUT request. In order to avoid delays while reading content sent from the client, and to insulate multiple pipelined requests on the same connection from each other, @@ -43,155 +49,144 @@ QxtWeb uses QxtWebContent as an abstraction for streaming data. #include "qxtwebcontent.h" #include #include +#include +#include #ifndef QXT_DOXYGEN_RUN class QxtWebContentPrivate : public QxtPrivate { public: - QxtWebContentPrivate() : ignoreRemaining(false) {} + QxtWebContentPrivate() : bytesNeeded(0), ignoreRemaining(false) {} QXT_DECLARE_PUBLIC(QxtWebContent) - void init(int contentLength, const QByteArray& start, QIODevice* device) + void init(int contentLength, QIODevice* device) { - this->start = start; - this->device = device; - if (contentLength <= 0) - bytesRemaining = -1; - else - bytesRemaining = contentLength - start.length(); - if (device) - { - QObject::connect(device, SIGNAL(readyRead()), &qxt_p(), SIGNAL(readyRead())); - // QObject::connect(device, SIGNAL(aboutToClose()), this, SIGNAL(aboutToClose())); - // QObject::connect(device, SIGNAL(destroyed()), this, SIGNAL(aboutToClose())); - // ask the object if it has an error signal - if (device->metaObject()->indexOfSignal(QMetaObject::normalizedSignature(SIGNAL(error(QAbstractSocket::SocketError)))) >= 0) - { - QObject::connect(device, SIGNAL(error(QAbstractSocket::SocketError)), &qxt_p(), SLOT(errorReceived(QAbstractSocket::SocketError))); - } - } - qxt_p().setOpenMode(QIODevice::ReadOnly); + if (contentLength < 0) + bytesNeeded = -1; + else{ + bytesNeeded = contentLength - qxt_p().bytesAvailable(); + Q_ASSERT(bytesNeeded >= 0); + } + if(device){ + // Connect a disconnected signal if it has one + if(device->metaObject()->indexOfSignal(QMetaObject::normalizedSignature(SIGNAL(disconnected()))) >= 0){ + QObject::connect(device, SIGNAL(disconnected()), &qxt_p(), SLOT(sourceDisconnect()), Qt::QueuedConnection); + } + // Likewise, connect an error signal if it has one + if(device->metaObject()->indexOfSignal(QMetaObject::normalizedSignature(SIGNAL(error(QAbstractSocket::SocketError)))) >= 0){ + QObject::connect(device, SIGNAL(error(QAbstractSocket::SocketError)), &qxt_p(), SLOT(errorReceived(QAbstractSocket::SocketError))); + } + } } - qint64 bytesRemaining; - QByteArray start; - QIODevice* device; + qint64 bytesNeeded; bool ignoreRemaining; }; #endif /*! - * Constructs a QxtWebContent object. + * Constructs a QxtWebContent object with the specified \a parent. * - * The content provided by this constructor is the first \a contentLength bytes - * read from the provided \a device. + * The content provided by this constructor is the data contained in \a prime, + * followed by whatever data is subsequently written to this object from the + * source device up to the specified \a contentLength. Note that the provided + * \a sourceDevice is used solely to detect socket errors and does not specify + * parentage. This variation is ReadWrite to permit incoming data but should + * never be written to by the service handler. * - * The QxtWebContent object is parented to the \a device. */ -QxtWebContent::QxtWebContent(int contentLength, QIODevice* device) : QIODevice(device) +QxtWebContent::QxtWebContent(int contentLength, const QByteArray& prime, + QObject *parent, QIODevice* sourceDevice) : QxtFifo(prime, parent) { QXT_INIT_PRIVATE(QxtWebContent); - qxt_d().init(contentLength, QByteArray(), device); + qxt_d().init(contentLength, sourceDevice); } /*! - * Constructs a QxtWebContent object. - * - * The content provided by this constructor is the data contained in \a start, - * followed by enough data read from the provided \a device to fill the desired - * \a contentLength. + * Constructs a QxtWebContent object with the specified \a parent. * - * The QxtWebContent object is parented to the \a device. + * The content provided by this constructor is exactly the data contained in + * \a content. This variation is ReadOnly. */ -QxtWebContent::QxtWebContent(int contentLength, const QByteArray& start, QIODevice* device) : QIODevice(device) +QxtWebContent::QxtWebContent(const QByteArray& content, QObject* parent) +: QxtFifo(content, parent) { QXT_INIT_PRIVATE(QxtWebContent); - qxt_d().init(contentLength, start, device); + qxt_d().init(content.size(), 0); + setOpenMode(ReadOnly); } /*! - * Constructs a QxtWebContent object with the specified \a parent. - * - * The content provided by this constructor is exactly the data contained in - * \a content. + * \reimp */ -QxtWebContent::QxtWebContent(const QByteArray& content, QObject* parent) : QIODevice(parent) +qint64 QxtWebContent::readData(char* data, qint64 maxSize) { - QXT_INIT_PRIVATE(QxtWebContent); - qxt_d().init(content.size(), content, 0); + int result = QxtFifo::readData(data, maxSize); + if(bytesAvailable() == 0 && bytesNeeded() == 0) + QMetaObject::invokeMethod(this, "aboutToClose", Qt::QueuedConnection); + return result; } /*! - * \reimp + * Returns \bold true if the total content size is unknown and + * \bold false otherwise. */ -qint64 QxtWebContent::bytesAvailable() const +bool QxtWebContent::wantAll() const { - qint64 available = QIODevice::bytesAvailable() + (qxt_d().device ? qxt_d().device->bytesAvailable() : 0) + qxt_d().start.count(); - if (available > qxt_d().bytesRemaining) - return qxt_d().bytesRemaining; - return available; + return (qxt_d().bytesNeeded == -1); } /*! - * \reimp + * Returns the total number of bytes of content expected. This will be \bold -1 + * if the total content size is unknown. This total includes both unread + * data and that which has not been received yet. To obtain the number of + * bytes available for reading, use bytesAvailable(). + * \sa bytesNeeded(), wantAll() */ -qint64 QxtWebContent::readData(char* data, qint64 maxSize) +qint64 QxtWebContent::unreadBytes() const { - char* writePtr = data; - // read more than 32k; TCP ideally handles 48k blocks but we need wiggle room - if (maxSize > 32768) maxSize = 32768; - - // don't read more than the content-length - int sz = qxt_d().start.count(); - if (sz > 0 && maxSize > sz) - { - memcpy(writePtr, qxt_d().start.constData(), sz); - writePtr += sz; - maxSize -= sz; - qxt_d().start.clear(); - } - else if (sz > 0 && sz > maxSize) - { - memcpy(writePtr, qxt_d().start.constData(), maxSize); - qxt_d().start = qxt_d().start.mid(maxSize); - return maxSize; - } - - if (qxt_d().device == 0) - { - return sz; - } - else if (qxt_d().bytesRemaining >= 0) - { - qint64 readBytes = qxt_d().device->read(writePtr, (maxSize > qxt_d().bytesRemaining) ? qxt_d().bytesRemaining : maxSize); - qxt_d().bytesRemaining -= readBytes; - if (qxt_d().bytesRemaining == 0) QMetaObject::invokeMethod(this, "aboutToClose", Qt::QueuedConnection); - return sz + readBytes; - } - else - { - return sz + qxt_d().device->read(writePtr, maxSize); - } + if(wantAll()) + return -1; + return bytesAvailable() + bytesNeeded(); } /*! - * Returns the number of bytes of content that have not yet been read. - * - * Note that not all of the remaining content may be immediately available for - * reading. This function returns the content length, minus the number of - * bytes that have already been read. + * Returns the number of bytes of content that have not yet been written + * from the source device. This will be \bold -1 if the total content size is + * unknown and \bold zero once all data has been received from the source (the + * readChannelFinished() signal will be emitted when that occurs). */ -qint64 QxtWebContent::unreadBytes() const +qint64 QxtWebContent::bytesNeeded() const { - return qxt_d().start.size() + qxt_d().bytesRemaining; + return qxt_d().bytesNeeded; } /*! * \reimp */ -qint64 QxtWebContent::writeData(const char*, qint64) +qint64 QxtWebContent::writeData(const char *data, qint64 maxSize) { - // always an error to write + if(!(openMode() & WriteOnly)){ + qWarning("QxtWebContent(): size=%lld but read-only", maxSize); + return -1; // Not accepting writes + } + if(maxSize > 0) { + // This must match the QxtFifo implementation for consistency + if(maxSize > INT_MAX) maxSize = INT_MAX; // qint64 could easily exceed QAtomicInt, so let's play it safe + if(qxt_d().bytesNeeded >= 0){ + if(maxSize > qxt_d().bytesNeeded){ + qWarning("QxtWebContent(): size=%lld needed %lld", maxSize, + qxt_d().bytesNeeded); + maxSize = qxt_d().bytesNeeded; + } + qxt_d().bytesNeeded -= maxSize; + Q_ASSERT(qxt_d().bytesNeeded >= 0); + } + if(qxt_d().ignoreRemaining) + return maxSize; + return QxtFifo::writeData(data, maxSize); + } + // Error return -1; } @@ -200,26 +195,28 @@ qint64 QxtWebContent::writeData(const char*, qint64) */ void QxtWebContent::errorReceived(QAbstractSocket::SocketError) { - setErrorString(qxt_d().device->errorString()); + QIODevice *device = qobject_cast(sender()); + if(device) + setErrorString(device->errorString()); } /*! - * Blocks until all of the streaming data has been read from the browser. + * Blocks until all of the streaming data has been read from the browser. * - * Note that this function will block events for the thread on which it is called. - * If the main thread is blocked, QxtWeb will be unable to process additional - * requests until the content has been received. + * Note that this method effectively runs a tight event loop. Although it + * will not block a thread's other activities, it may result in high CPU + * consumption and cause performance problems. It is suggested that you + * avoid use of this method and try to implement services using the + * readChannelFinished() signal instead. */ void QxtWebContent::waitForAllContent() { - if (!qxt_d().device) return; - QByteArray buffer; - while (qxt_d().device && qxt_d().bytesRemaining > 0) - { - buffer = qxt_d().device->readAll(); - qxt_d().start += buffer; - qxt_d().bytesRemaining -= buffer.size(); - if (qxt_d().bytesRemaining > 0) qxt_d().device->waitForReadyRead(-1); + while(qxt_d().bytesNeeded != 0 && !qxt_d().ignoreRemaining){ + // Still need data ... yield processing + if(QCoreApplication::hasPendingEvents()) + QCoreApplication::processEvents(); + if(this->thread() != QThread::currentThread()) + QThread::yieldCurrentThread(); } } @@ -231,11 +228,30 @@ void QxtWebContent::waitForAllContent() */ void QxtWebContent::ignoreRemainingContent() { - if (qxt_d().bytesRemaining <= 0 || !qxt_d().device) return; - if (!qxt_d().ignoreRemaining) - { - qxt_d().ignoreRemaining = true; - QObject::connect(qxt_d().device, SIGNAL(readyRead()), this, SLOT(ignoreRemainingContent())); + if (qxt_d().bytesNeeded == 0) return; + if(!qxt_d().ignoreRemaining){ + qxt_d().ignoreRemaining = true; + qxt_d().bytesNeeded = 0; + } +} + +/*! + * \internal + * This slot handles a disconnect notice from a source I/O device to handle + * cases where the source size is unknown. The internal state is adjusted + * ensuring a reader will unblock in waitForAllContent(). If unread + * data is present, a readyRead() signal will be emitted. + * The readChannelFinished() signal is emitted regardless. + */ +void QxtWebContent::sourceDisconnect() +{ + if (qxt_d().bytesNeeded == 0) return; + if(!qxt_d().ignoreRemaining){ + qxt_d().ignoreRemaining = true; + qxt_d().bytesNeeded = 0; + if(bytesAvailable() != 0) + QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection); + QMetaObject::invokeMethod(this, "readChannelFinished", Qt::QueuedConnection); } } @@ -244,8 +260,11 @@ typedef QPair QxtQueryItem; #endif /*! - * Extracts the key/value pairs from application/x-www-form-urlencoded \a data, - * such as the query string from the URL or the form data from a POST request. + * Parses URL-encoded form data + * + * Extracts the key/value pairs from \bold application/x-www-form-urlencoded + * \a data, such as the query string from the URL or the form data from a + * POST request. */ QHash QxtWebContent::parseUrlEncodedQuery(const QString& data) { diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.h index 06e88a808a..e5cb48f79c 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBCONTENT_H #define QXTWEBCONTENT_H @@ -30,18 +36,20 @@ #include #include #include +#include class QxtWebContentPrivate; -class QXT_WEB_EXPORT QxtWebContent : public QIODevice +class QXT_WEB_EXPORT QxtWebContent : public QxtFifo { Q_OBJECT public: - QxtWebContent(int contentLength, const QByteArray& start, QIODevice* device); - QxtWebContent(int contentLength, QIODevice* device); + QxtWebContent(int contentLength, const QByteArray& start, QObject *parent, + QIODevice* sourceDevice); explicit QxtWebContent(const QByteArray& content, QObject* parent = 0); static QHash parseUrlEncodedQuery(const QString& data); - virtual qint64 bytesAvailable() const; + bool wantAll() const; + qint64 bytesNeeded() const; qint64 unreadBytes() const; void waitForAllContent(); @@ -54,6 +62,7 @@ public Q_SLOTS: virtual qint64 writeData(const char* data, qint64 maxSize); private Q_SLOTS: + void sourceDisconnect(); void errorReceived(QAbstractSocket::SocketError); private: diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.cpp index cd0d757555..9c59b46068 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #include "qxtwebevent.h" #include "qxtwebcontent.h" @@ -89,8 +95,8 @@ browser. /*! * Constructs a QxtWebRequestEvent for the specified \a sessionID, \a requestID and \a url. */ -QxtWebRequestEvent::QxtWebRequestEvent(int sessionID, int requestID, const QUrl& url) - : QxtWebEvent(QxtWebEvent::Request, sessionID), requestID(requestID), url(url), originalUrl(url) {} +QxtWebRequestEvent::QxtWebRequestEvent(int _sessionID, int _requestID, const QUrl& _url) + : QxtWebEvent(QxtWebEvent::Request, _sessionID), requestID(_requestID), url(_url), originalUrl(_url), isSecure(false) {} /*! * Destroys the event and any content that may still be associated with it. @@ -128,6 +134,37 @@ QxtWebRequestEvent::~QxtWebRequestEvent() * Contains the content of the request body, if present. */ +/*! + * \variable QxtWebRequestEvent::isSecure + * If the request was sent over an encrypted channel, such as HTTPS, isSecure will be + * set to \a true and clientCertificate will be set. Otherwise, isSecure will be set + * to \a false. + * + * \sa clientCertificate, remoteAddress + */ + +/*! + * \variable QxtWebRequestEvent::remoteAddress + * This variable will contain the address of the client as a QHostAddress. + * In IPv6 dual-stack systems (generally only Linux), this may be a IPv4 + * mapped address. + * + * \warning This variable was originally declared as a QString value in + * prior releases, albeit undocumented until now. + * + * \sa isSecure, clientCertificate + */ + +/*! + * \variable QxtWebRequestEvent::clientCertificate + * If the request was sent over an encrypted channel, such as HTTPS, clientCertificate + * will contain the certificate presented by the requesting client, if any. + * + * This member variable is not available if Qt was not compiled with SSL support. + * + * \sa isSecure, remoteAddress + */ + /*! * \variable QxtWebRequestEvent::cookies * Contains all of the cookies sent by the web browser. @@ -137,7 +174,7 @@ QxtWebRequestEvent::~QxtWebRequestEvent() * \variable QxtWebRequestEvent::headers * Contains all of the headers sent by the web browser. * - * Note that use of these values may not be portable across session maangers. + * Note that use of these values may not be portable across session managers. */ /* @@ -197,7 +234,7 @@ content that will be sent to a web browser. * QxtWeb takes ownership of the source and will delete it when the response * is completed. */ -QxtWebPageEvent::QxtWebPageEvent(int sessionID, int requestID, QSharedPointer source) +QxtWebPageEvent::QxtWebPageEvent(int sessionID, int requestID, QIODevice* source) : QxtWebEvent(QxtWebEvent::Page, sessionID), dataSource(source), chunked(true), streaming(true), requestID(requestID), status(200), statusMessage("OK"), contentType("text/html") {} @@ -216,7 +253,7 @@ QxtWebPageEvent::QxtWebPageEvent(int sessionID, int requestID, QByteArray source QBuffer* buffer = new QBuffer; buffer->setData(source); buffer->open(QIODevice::ReadOnly); - dataSource = QSharedPointer( buffer ); + dataSource = buffer; } /*! @@ -229,15 +266,15 @@ QxtWebPageEvent::QxtWebPageEvent(QxtWebEvent::EventType typeOverride, int sessio QBuffer* buffer = new QBuffer; buffer->setData(source); buffer->open(QIODevice::ReadOnly); - dataSource = QSharedPointer( buffer ); + dataSource = buffer; } /*! - * Destroys the event + * Destroys the event and any data source attached to it. */ QxtWebPageEvent::~QxtWebPageEvent() { - + if (!dataSource.isNull()) dataSource->deleteLater(); } /*! @@ -323,9 +360,12 @@ a cookie on the web browser. * with the cookie. The browser will delete the cookie automatically after * the specified date. If an expiration date is not supplied, the cookie will * expire when the browser is closed. + * + * The cookie will be assigned a path of / by default. You may change this + * using the \a path member. */ QxtWebStoreCookieEvent::QxtWebStoreCookieEvent(int sessionID, QString name, QString data, QDateTime expiration) - : QxtWebEvent(QxtWebEvent::StoreCookie, sessionID), name(name), data(data), expiration(expiration) {} + : QxtWebEvent(QxtWebEvent::StoreCookie, sessionID), name(name), data(data), expiration(expiration), path("/") {} /*! * \variable QxtWebStoreCookieEvent::name @@ -343,6 +383,14 @@ QxtWebStoreCookieEvent::QxtWebStoreCookieEvent(int sessionID, QString name, QStr * cookie will expire when the web browser is closed. */ +/*! + * \variable QxtWebStoreCookieEvent::path + * Contains the path of the cookie to be stored. + * + * The default value is "/". Set the path to an empty QString to send + * the cookie with no path specifier. + */ + /*! \class QxtWebRemoveCookieEvent @@ -357,6 +405,8 @@ a cookie stored on the web browser. /*! * Constructs a QxtWebRemoveCookieEvent for the specified \a sessionID that * removed the cookie with \a name from the web browser. + * + * The cookie's path is / by default. You may change this using the \a path member. */ QxtWebRemoveCookieEvent::QxtWebRemoveCookieEvent(int sessionID, QString name) : QxtWebEvent(QxtWebEvent::RemoveCookie, sessionID), name(name) {} @@ -366,6 +416,14 @@ QxtWebRemoveCookieEvent::QxtWebRemoveCookieEvent(int sessionID, QString name) * Contains the name of the cookie to be removed. */ +/*! + * \variable QxtWebStoreCookieEvent::path + * Contains the path of the cookie to be removed. + * + * The default value is "/". Set the path to an empty QString to send + * the cookie with no path specifier. + */ + /*! \class QxtWebRedirectEvent diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.h index 1b57c535c2..fa491e9183 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebevent.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBEVENT_H #define QXTWEBEVENT_H @@ -34,6 +40,10 @@ #include #include #include +#include +#ifndef QT_NO_OPENSSL +#include +#endif QT_FORWARD_DECLARE_CLASS(QIODevice) class QxtWebContent; @@ -68,7 +78,7 @@ class QXT_WEB_EXPORT QxtWebRequestEvent : public QxtWebEvent { public: QxtWebRequestEvent(int sessionID, int requestID, const QUrl& url); - ~QxtWebRequestEvent(); + virtual ~QxtWebRequestEvent(); const int requestID; @@ -77,7 +87,11 @@ class QXT_WEB_EXPORT QxtWebRequestEvent : public QxtWebEvent QString contentType; QPointer content; QString method; - QString remoteAddress; + QHostAddress remoteAddress; + bool isSecure; +#ifndef QT_NO_OPENSSL + QSslCertificate clientCertificate; +#endif QMultiHash cookies; QMultiHash headers; @@ -98,11 +112,11 @@ class QxtWebRedirectEvent; class QXT_WEB_EXPORT QxtWebPageEvent : public QxtWebEvent { public: - QxtWebPageEvent(int sessionID, int requestID, QSharedPointer source); + QxtWebPageEvent(int sessionID, int requestID, QIODevice* source = 0); QxtWebPageEvent(int sessionID, int requestID, QByteArray source); // creates a QBuffer virtual ~QxtWebPageEvent(); - QSharedPointer dataSource; // data is read from this device and written to the client + QPointer dataSource; // data is read from this device and written to the client bool chunked; bool streaming; @@ -132,6 +146,7 @@ class QXT_WEB_EXPORT QxtWebStoreCookieEvent : public QxtWebEvent QString name; QString data; QDateTime expiration; + QString path; }; class QXT_WEB_EXPORT QxtWebRemoveCookieEvent : public QxtWebEvent @@ -140,6 +155,7 @@ class QXT_WEB_EXPORT QxtWebRemoveCookieEvent : public QxtWebEvent QxtWebRemoveCookieEvent(int sessionID, QString name); QString name; + QString path; }; class QXT_WEB_EXPORT QxtWebRedirectEvent : public QxtWebPageEvent diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.cpp new file mode 100644 index 0000000000..8033beecf2 --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.cpp @@ -0,0 +1,512 @@ +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +/*! +\class QxtWebJsonRPCService + +\inmodule QxtWeb + +\brief The QxtWebJsonRPCService class provides a Slot based webservice that responds to JSONRPC + +See http://json-rpc.org for details on the protocol + +To create a Webservice, simply subclass QxtWebJsonRPCService. All slots are exposed as jsonrpc method + +\code +class MyService : public QxtWebJsonRPCService +{ +Q_OBJECT +public slots: + int add(int a, int b + { + return a +b; + } +} +\endcode + +\code +curl -d '{"method":"add", "id":1, "params": [9,2] }' localhost:1339 +{"error":null,"id":1,"result":11} +\endcode + +\sa QxtAbstractWebService +*/ + +#include "qxtwebjsonrpcservice_p.h" +#include "qxtwebevent.h" +#include "qxtwebcontent.h" +#include "qxtjson.h" + +#include +#include +#include +#include + + +QxtWebJsonRPCService::Private::Private(QxtWebJsonRPCService *that) + : QObject() + , p(that) + , invokable(0) +{ +} + +void QxtWebJsonRPCService::Private::initTables(QObject *in) +{ + invokable = in; + const QMetaObject *po = invokable->metaObject(); + for (int i = po->methodOffset(); i < po->methodCount(); i++) { + + QxtWebJsonRPCService::Private::Method method; + QMetaMethod mo = po->method (i); +#if QT_VERSION >= 0x50000 + method.name = QByteArray(mo.methodSignature()).split('(').at(0); +#else + method.name = QByteArray(mo.signature()).split('(').at(0); +#endif + method.meta = mo; + method.argCount = mo.parameterTypes ().count(); + method.returns = QByteArray(mo.typeName()).count(); + methods.insert(method.name + QByteArray::number(method.argCount), method); + } +} + +void QxtWebJsonRPCService::Private::readFinished() +{ + QxtWebContent *c = qobject_cast(sender()); + handle(c); +} + +void QxtWebJsonRPCService::Private::handle(QxtWebContent *c) +{ + QxtWebRequestEvent *event = content.take(c); + currentRequest = 0; + c->ignoreRemainingContent(); + + QString data = QString::fromUtf8(c->readAll()); + + QVariantMap var = QxtJSON::parse(data).toMap(); + + if (var.isEmpty()) { + QByteArray resp = "{\"result\": null, \"error\": \"invalid json data\", \"id\": 0}\r\n"; + QxtWebPageEvent *err = new QxtWebPageEvent(event->sessionID, event->requestID, resp); + err->status = 500; + p->postEvent(err); + return; + } + QVariant rid = var.value("id"); + QString action = var.value("method").toString(); + QVariant argsE = var.value("params"); + handle(event, rid, action, argsE); +} + +void QxtWebJsonRPCService::Private::handle(QxtWebRequestEvent *event, QVariant rid, QString action, QVariant argsE) +{ + QVariantMap argsM; + QVariantList args; + + if (argsE.type() == QVariant::Map) { + argsM = argsE.toMap(); + args = argsM.values(); + } else { + args = argsE.toList(); + } + + if (!invokable) + initTables(p); + + + if (!methods.contains(action.toUtf8() + QByteArray::number(args.count()))) { + QVariantMap res; + res.insert("result", QVariant()); + res.insert("error", "no such method or incorrect number of arguments"); + res.insert("id", rid); + QxtWebPageEvent *err = new QxtWebPageEvent(event->sessionID, event->requestID, + QxtJSON::stringify(res).toUtf8() + "\r\n"); + p->postEvent(err); + return; + } + Method method = methods.value(action.toUtf8() + QByteArray::number(args.count())); + if (argsE.type() == QVariant::Map) { + args.clear(); + foreach (const QString &pname, method.meta.parameterNames ()) { + args.append(argsM.value(pname)); + } + } + + + QList vargs; + foreach (const QVariant &ar, args) { + vargs.append(QGenericArgument(ar.typeName(), ar.data())); + } + + QVariant returnValue; + currentRequest = event; + currentRequestId = rid; + requestCanceled = false; + + bool ok = false; + if (method.returns) { + QVariant retA(QVariant::nameToType(method.meta.typeName())); + QGenericReturnArgument ret(retA.typeName(), retA.data()); + if (args.count() > 8) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)), + (vargs.at(6)), + (vargs.at(7)), + (vargs.at(7)) + ); + } + if (args.count() > 7) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)), + (vargs.at(6)), + (vargs.at(7)) + ); + } + else if (args.count() > 6) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)), + (vargs.at(6)) + ); + } + else if (args.count() > 5) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)) + ); + } + else if (args.count() > 4) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)) + ); + } + else if (args.count() > 3) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)) + ); + } + else if (args.count() > 2) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)) + ); + } + else if (args.count() > 1) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)), + (vargs.at(1)) + ); + } + else if (args.count() > 0) + { + ok = method.meta.invoke(invokable, + ret, + (vargs.at(0)) + ); + } + else + { + ok = method.meta.invoke(invokable, + ret + ); + } + returnValue = retA; + // the pass through QGenericReturnArgument didn't make it non null. + returnValue.data_ptr().is_null = 0; + } else { + if (args.count() > 8) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)), + (vargs.at(6)), + (vargs.at(7)), + (vargs.at(7)) + ); + } + if (args.count() > 7) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)), + (vargs.at(6)), + (vargs.at(7)) + ); + } + else if (args.count() > 6) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)), + (vargs.at(6)) + ); + } + else if (args.count() > 5) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)), + (vargs.at(5)) + ); + } + else if (args.count() > 4) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)), + (vargs.at(4)) + ); + } + else if (args.count() > 3) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)), + (vargs.at(3)) + ); + } + else if (args.count() > 2) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)), + (vargs.at(2)) + ); + } + else if (args.count() > 1) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)), + (vargs.at(1)) + ); + } + else if (args.count() > 0) + { + ok = method.meta.invoke(invokable, + (vargs.at(0)) + ); + } + else + { + ok = method.meta.invoke(invokable + ); + } + } + if (!ok) { + QVariantMap res; + res.insert("result", QVariant()); + res.insert("error", "execution failure"); + res.insert("id", rid); + QxtWebPageEvent *err = new QxtWebPageEvent(event->sessionID, event->requestID, + QxtJSON::stringify(res).toUtf8() + "\r\n"); + p->postEvent(err); + return; + } + if (requestCanceled) { + return; + } + + QVariantMap res; + res.insert("result", returnValue); + res.insert("error", QVariant()); + res.insert("id", rid); + QxtWebPageEvent *err = new QxtWebPageEvent(event->sessionID, event->requestID, + QxtJSON::stringify(res).toUtf8() + "\r\n"); + p->postEvent(err); + return; + +} +/*! + Constructs a new QxtWebJsonRPCService with \a sm and \a parent. + */ +QxtWebJsonRPCService::QxtWebJsonRPCService(QxtAbstractWebSessionManager* sm, QObject* parent) + : QxtAbstractWebService(sm, parent) + , d(new Private(this)) +{ + +} + +QxtWebJsonRPCService::~QxtWebJsonRPCService() +{ + delete d; +} + +/*! + * respond to the current request with an error. + * + * The return value of the current slot is NOT used. + * Instead null is returned, adhering to the jsonrpc specificaiton. + * + * Calling this function from somewhere else then a handler slot is undefined behaviour. + */ + +void QxtWebJsonRPCService::throwRPCError(QVariant error) +{ + d->requestCanceled= true; + QxtWebRequestEvent *event = d->currentRequest; + + QVariantMap res; + res.insert("result", QVariant()); + res.insert("error", error); + res.insert("id", d->currentRequestId); + QxtWebPageEvent *err = new QxtWebPageEvent(event->sessionID, event->requestID, + QxtJSON::stringify(res).toUtf8() + "\r\n"); + postEvent(err); +} + +/*! + Returns the current absolute url of this service depending on the request \a event. + */ +QUrl QxtWebJsonRPCService::self(QxtWebRequestEvent* event) + +{ + QStringList u = event->url.path().split('/'); + QStringList o = event->originalUrl.path().split('/'); + u.removeFirst(); + o.removeFirst(); + for (int i = 0;i < u.count();i++) + o.removeLast(); + + + QString r = "/"; + foreach(const QString& d, o) + { + r += d + '/'; + } + return r; +} + +/*! + \reimp + */ +void QxtWebJsonRPCService::pageRequestedEvent(QxtWebRequestEvent* event) +{ + if (event->method == "GET") { + QVariantMap params; + QList > enc = event->url.encodedQueryItems (); + for (int i = 0; i < enc.count(); i++) { + params.insert( + QUrl::fromPercentEncoding (enc.at(i).first), + QUrl::fromPercentEncoding (enc.at(i).second)); + } + QString method = event->url.path().split('/').last(); + d->handle(event, QVariant(), method, params); + return; + } + + + if (!event->content) { + QVariantMap res; + res.insert("result", QVariant()); + res.insert("error", "missing POST data"); + res.insert("id", QVariant()); + QxtWebPageEvent *err = new QxtWebPageEvent(event->sessionID, event->requestID, + QxtJSON::stringify(res).toUtf8() + "\r\n"); + err->status = 500; + postEvent(err); + return; + } + + d->content.insert(event->content, event); + if (event->content->bytesNeeded() == 0) { + d->handle(event->content); + } else { + connect(event->content, SIGNAL(readChannelFinished()), d, SLOT(readFinished())); + } +} + +/*! + \reimp + */ +void QxtWebJsonRPCService::functionInvokedEvent(QxtWebRequestEvent* event) +{ + postEvent(new QxtWebErrorEvent(event->sessionID, event->requestID, 500, "

Not supported

")); +} diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.h new file mode 100644 index 0000000000..0873fe33a1 --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice.h @@ -0,0 +1,56 @@ + +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +#ifndef QXTWEBJSONRPCSERVICE_H +#define QXTWEBJSONRPCSERVICE_H + +#include "qxtabstractwebservice.h" +#include + +class QXT_WEB_EXPORT QxtWebJsonRPCService : public QxtAbstractWebService +{ + Q_OBJECT +public: + explicit QxtWebJsonRPCService(QxtAbstractWebSessionManager* sm, QObject* parent = 0); + virtual ~QxtWebJsonRPCService(); + +protected: + void throwRPCError(QVariant error); + + QUrl self(QxtWebRequestEvent* event); + virtual void pageRequestedEvent(QxtWebRequestEvent* event); + virtual void functionInvokedEvent(QxtWebRequestEvent* event); +private: + class Private; + Private *d; +}; + +#endif // QXTWEBJSONRPCSERVICE_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice_p.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice_p.h new file mode 100644 index 0000000000..04c974fffd --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebjsonrpcservice_p.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +#include "qxtwebjsonrpcservice.h" +#include "qxtwebcontent.h" +#include "qxtwebevent.h" +#include + +class QxtWebJsonRPCService::Private : public QObject +{ +Q_OBJECT +public: + Private(QxtWebJsonRPCService *that); + QMap content; + + QxtWebJsonRPCService *p; + void initTables(QObject *invokable); + bool tablesInitilized; + QObject *invokable; + + struct Method + { + QMetaMethod meta; + QByteArray name; + bool returns; + int argCount; + }; + QMap methods; + + QxtWebRequestEvent *currentRequest; + QVariant currentRequestId; + bool requestCanceled; + +public slots: + void readFinished(); + void handle(QxtWebContent *); + void handle( QxtWebRequestEvent *event, QVariant id, QString method, QVariant args); +}; + diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.cpp index 06209b36e1..06a6f07f27 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! \class QxtWebServiceDirectory diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.h index a0ebe71d2f..854871f594 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBSERVICEDIRECTORY_H #define QXTWEBSERVICEDIRECTORY_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory_p.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory_p.h index cbaa7528e4..c5e8258fe1 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory_p.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebservicedirectory_p.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBSERVICEDIRECTORY_P_H #define QXTWEBSERVICEDIRECTORY_P_H diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.cpp index 0ae2bd9a03..6e4104ef0f 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.cpp @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ /*! @@ -36,7 +42,7 @@ A WebService that resolves the first part of the path to a slot name and passes \code class MyService : public QxtWebSlotService { -Q_OBJECT +//Q_OBJECT public slots: void hello(QxtWebRequestEvent* event, QString a) { diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.h index 4f917825e0..8d0ca2d18d 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebslotservice.h @@ -1,27 +1,33 @@ + /**************************************************************************** - ** - ** Copyright (C) Qxt Foundation. Some rights reserved. - ** - ** This file is part of the QxtWeb module of the Qxt library. - ** - ** This library is free software; you can redistribute it and/or modify it - ** under the terms of the Common Public License, version 1.0, as published - ** by IBM, and/or under the terms of the GNU Lesser General Public License, - ** version 2.1, as published by the Free Software Foundation. - ** - ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY - ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR - ** FITNESS FOR A PARTICULAR PURPOSE. - ** - ** You should have received a copy of the CPL and the LGPL along with this - ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files - ** included with the source distribution for more information. - ** If you did not receive a copy of the licenses, contact the Qxt Foundation. - ** - ** - ** - ****************************************************************************/ +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ #ifndef QXTWEBSLOTSERVICE_H #define QXTWEBSLOTSERVICE_H From 517a96cd8685c827ca073113dbc266bc2c8e07f8 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 20:18:43 +0100 Subject: [PATCH 123/310] QxtWeb: fix compilation with QT_STRICT_ITERATORS --- .../qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp index ead51ce09b..409118c273 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp @@ -218,8 +218,8 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) env["QUERY_STRING"] = event->url.encodedQuery(); // Populate HTTP header environment variables - QMultiHash::const_iterator iter = event->headers.begin(); - while (iter != event->headers.end()) + QMultiHash::const_iterator iter = event->headers.constBegin(); + while (iter != event->headers.constEnd()) { QString key = "HTTP_" + iter.key().toUpper().replace('-', '_'); if (key != "HTTP_CONTENT_TYPE" && key != "HTTP_CONTENT_LENGTH") @@ -228,9 +228,9 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) } // Populate HTTP_COOKIE parameter - iter = event->cookies.begin(); + iter = event->cookies.constBegin(); QString cookies; - while (iter != event->cookies.end()) + while (iter != event->cookies.constEnd()) { if (!cookies.isEmpty()) cookies += "; "; From d02b6232bf8de35e5dc9fc6583b8fc427f521f5e Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 20:37:59 +0100 Subject: [PATCH 124/310] QxtWeb: add missing header --- .../qxtweb-standalone/qxtweb/qxtsslserver.h | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h new file mode 100644 index 0000000000..4a787d20f1 --- /dev/null +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h @@ -0,0 +1,71 @@ + +/**************************************************************************** +** Copyright (c) 2006 - 2011, the LibQxt project. +** See the Qxt AUTHORS file for a list of authors and copyright holders. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** * Neither the name of the LibQxt project nor the +** names of its contributors may be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** +*****************************************************************************/ + +#ifndef QXTSSLSERVER_H +#define QXTSSLSERVER_H + +#include "qxtglobal.h" +#include + +#ifndef QT_NO_OPENSSL +#include + +class QxtSslServerPrivate; +class QXT_NETWORK_EXPORT QxtSslServer : public QTcpServer +{ + Q_OBJECT +public: + QxtSslServer(QObject* parent = 0); + + virtual bool hasPendingConnections() const; + virtual QTcpSocket* nextPendingConnection(); + + void setLocalCertificate(const QSslCertificate& cert); + void setLocalCertificate(const QString& path, QSsl::EncodingFormat format = QSsl::Pem); + QSslCertificate localCertificate() const; + + void setPrivateKey(const QSslKey& key); + void setPrivateKey(const QString& path, QSsl::KeyAlgorithm algo = QSsl::Rsa, + QSsl::EncodingFormat format = QSsl::Pem, const QByteArray& passPhrase = QByteArray()); + QSslKey privateKey() const; + + void setAutoEncrypt(bool on); + bool autoEncrypt() const; + +protected: + virtual void incomingConnection(int socketDescriptor); + +private: + QXT_DECLARE_PRIVATE(QxtSslServer) +}; + +#endif /* QT_NO_OPENSSL */ +#endif From 82753732b9147fa0a489453271d73e2fae6db460 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 21:54:39 +0100 Subject: [PATCH 125/310] qt5: port QxtWeb and the web api --- CMakeLists.txt | 5 ++ src/CMakeLists.txt | 17 ++++--- src/CMakeLists.unix.cmake | 2 - src/CMakeLists.win32.cmake | 2 - src/TomahawkApp.h | 4 +- src/libtomahawk/CMakeLists.txt | 13 ++--- src/web/Api_v1.cpp | 49 ++++++++++--------- src/web/Api_v1.h | 10 ++-- .../qxtweb-standalone/qxtweb/qxtmetatype.h | 4 ++ .../qxtweb/qxtwebcgiservice.cpp | 14 +++++- .../qxtweb/qxtwebcontent.cpp | 8 +++ 11 files changed, 77 insertions(+), 51 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7221bc5e8..8084c1f7fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,6 +148,11 @@ IF( WIN32 ) macro_log_feature(QTSPARKLE_FOUND "qtsparkle" "Library for creating auto updaters written in Qt" "https://github.com/davidsansome/qtsparkle" FALSE "" "") ENDIF( WIN32 ) +#TODO: support external qxt +set(QXTWEB_FOUND TRUE) +set(QXTWEB_LIBRARIES qxtweb-standalone) +set(QXTWEB_INCLUDE_DIRS ${THIRDPARTY_DIR}/qxt/qxtweb-standalone/qxtweb ${CMAKE_CURRENT_BINARY_DIR}) + #### submodules start # automatically init submodules here, don't delete this code we may add submodules again diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2889ce63c8..99b3cbea0a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,8 +35,6 @@ ENDIF() #ENDFOREACH( moddir ) SET( tomahawkSources ${tomahawkSources} - web/Api_v1.cpp - AclRegistryImpl.cpp ShortcutHandler.cpp UbuntuUnityHack.cpp @@ -110,7 +108,6 @@ INCLUDE_DIRECTORIES( libtomahawk mac - ${THIRDPARTY_DIR}/qxt/qxtweb-standalone/qxtweb ${THIRDPARTY_DIR}/breakpad ${TAGLIB_INCLUDES} @@ -121,6 +118,12 @@ INCLUDE_DIRECTORIES( ${LIBLASTFM_INCLUDE_DIRS} ) +IF(QXTWEB_FOUND) + LIST(APPEND tomahawkSources web/Api_v1.cpp) + LIST(APPEND LINK_LIBRARIES ${QXTWEB_LIBRARIES}) + INCLUDE_DIRECTORIES(${QXTWEB_INCLUDE_DIRS}) +ENDIF() + SET( OS_SPECIFIC_LINK_LIBRARIES "" ) IF( WIN32 ) @@ -188,15 +191,14 @@ SET_TARGET_PROPERTIES(tomahawk PROPERTIES AUTOMOC TRUE) MESSAGE( STATUS "OS_SPECIFIC_LINK_LIBRARIES: ${OS_SPECIFIC_LINK_LIBRARIES}" ) -SET(LINK_LIBRARIES "") IF(LIBLASTFM_FOUND) - SET( LINK_LIBRARIES ${LINK_LIBRARIES} ${LIBLASTFM_LIBRARIES} ) + LIST(APPEND LINK_LIBRARIES ${LINK_LIBRARIES} ${LIBLASTFM_LIBRARIES} ) ENDIF(LIBLASTFM_FOUND) IF(QCA2_FOUND) - SET( LINK_LIBRARIES ${LINK_LIBRARIES} ${QCA2_LIBRARIES} ) + LIST(APPEND LINK_LIBRARIES ${LINK_LIBRARIES} ${QCA2_LIBRARIES} ) ENDIF(QCA2_FOUND) IF(WITH_BREAKPAD) - SET( LINK_LIBRARIES ${LINK_LIBRARIES} tomahawk_breakpad ) + LIST(APPEND LINK_LIBRARIES ${LINK_LIBRARIES} tomahawk_breakpad ) ENDIF() TARGET_LINK_LIBRARIES( tomahawk @@ -207,7 +209,6 @@ TARGET_LINK_LIBRARIES( tomahawk ${QT_LIBRARIES} ${MAC_EXTRA_LIBS} ${ECHONEST_LIBRARIES} - ${QXTWEB_LIBRARIES} ${QJSON_LIBRARIES} ${TAGLIB_LIBRARIES} ) diff --git a/src/CMakeLists.unix.cmake b/src/CMakeLists.unix.cmake index 49caf297b7..63a3699e9d 100644 --- a/src/CMakeLists.unix.cmake +++ b/src/CMakeLists.unix.cmake @@ -4,8 +4,6 @@ ADD_DEFINITIONS( -g ) ADD_DEFINITIONS( -fno-operator-names ) ADD_DEFINITIONS( -fPIC ) -SET( QXTWEB_LIBRARIES qxtweb-standalone ) - IF( APPLE ) INCLUDE( "CMakeLists.osx.cmake" ) ENDIF( APPLE ) diff --git a/src/CMakeLists.win32.cmake b/src/CMakeLists.win32.cmake index eac4a788c6..ce3a71ad7d 100644 --- a/src/CMakeLists.win32.cmake +++ b/src/CMakeLists.win32.cmake @@ -5,8 +5,6 @@ ADD_DEFINITIONS( /DWIN32_LEAN_AND_MEAN ) ADD_DEFINITIONS( -static-libgcc ) ADD_DEFINITIONS( -DUNICODE ) -SET( QXTWEB_LIBRARIES qxtweb-standalone ) - # Check for the availability of the Thumbbutton check_cxx_source_compiles( " diff --git a/src/TomahawkApp.h b/src/TomahawkApp.h index 628a74e2d6..ed2e3f6326 100644 --- a/src/TomahawkApp.h +++ b/src/TomahawkApp.h @@ -31,8 +31,8 @@ #include "HeadlessCheck.h" #include "config.h" -#include "QxtHttpServerConnector" -#include "QxtHttpSessionManager" +#include +#include #include #include diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 4322ea769e..60357db5a8 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -370,13 +370,14 @@ IF(LIBATTICA_FOUND) SET( libGuiSources ${libGuiSources} AtticaManager.cpp ) SET( libGuiHeaders ${libGuiHeaders} AtticaManager.h ) INCLUDE_DIRECTORIES( ${LIBATTICA_INCLUDE_DIR} ) + LIST(APPEND LINK_LIBRARIES ${LIBATTICA_LIBRARIES} ${QuaZip_LIBRARIES} ) ENDIF(LIBATTICA_FOUND) IF( UNIX AND NOT APPLE ) IF( BUILD_GUI AND X11_FOUND ) INCLUDE_DIRECTORIES( ${THIRDPARTY_DIR}/libqnetwm ) SET( libSources ${libSources} ${THIRDPARTY_DIR}/libqnetwm/libqnetwm/netwm.cpp ) - SET( LINK_LIBRARIES ${LINK_LIBRARIES} ${X11_LIBRARIES} ) + LIST(APPEND LINK_LIBRARIES ${X11_LIBRARIES} ) ENDIF() ENDIF( UNIX AND NOT APPLE ) @@ -429,7 +430,7 @@ ELSE( APPLE ) ENDIF( APPLE ) IF(LIBLASTFM_FOUND) - SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${LIBLASTFM_LIBRARIES} ) + LIST(APPEND LINK_LIBRARIES ${LIBLASTFM_LIBRARIES} ) ENDIF(LIBLASTFM_FOUND) IF(BUILD_GUI) @@ -444,15 +445,11 @@ ADD_LIBRARY( tomahawklib SHARED ${libSources}) set_target_properties(tomahawklib PROPERTIES AUTOMOC TRUE) IF(QCA2_FOUND) - SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${QCA2_LIBRARIES} ) + LIST(APPEND LINK_LIBRARIES ${QCA2_LIBRARIES} ) ENDIF(QCA2_FOUND) -IF(LIBATTICA_FOUND) - SET( LINK_LIBRARIES ${LINK_LIBRARIES} ${LIBATTICA_LIBRARIES} ${QuaZip_LIBRARIES} ) -ENDIF(LIBATTICA_FOUND) - IF( UNIX AND NOT APPLE ) - SET( LINK_LIBRARIES ${LINK_LIBRARIES} ${QT_QTDBUS_LIBRARY} ) + LIST(APPEND LINK_LIBRARIES ${QT_QTDBUS_LIBRARY} ) ENDIF( UNIX AND NOT APPLE ) TARGET_LINK_LIBRARIES( tomahawklib diff --git a/src/web/Api_v1.cpp b/src/web/Api_v1.cpp index 76327e2f83..9ac84660cf 100644 --- a/src/web/Api_v1.cpp +++ b/src/web/Api_v1.cpp @@ -32,7 +32,10 @@ #include + + using namespace Tomahawk; +using namespace TomahawkUtils; Api_v1::Api_v1(QxtAbstractWebSessionManager* sm, QObject* parent) : QxtWebSlotService(sm, parent) @@ -45,7 +48,7 @@ Api_v1::auth_1( QxtWebRequestEvent* event, QString arg ) { tDebug( LOGVERBOSE ) << "AUTH_1 HTTP" << event->url.toString() << arg; - if ( !event->url.hasQueryItem( "website" ) || !event->url.hasQueryItem( "name" ) ) + if ( !urlHasQueryItem( event->url, "website" ) || !urlHasQueryItem( event->url, "name" ) ) { tDebug( LOGVERBOSE ) << "Malformed HTTP resolve request"; send404( event ); @@ -54,7 +57,7 @@ Api_v1::auth_1( QxtWebRequestEvent* event, QString arg ) QString formToken = uuid(); - if ( event->url.hasQueryItem( "json" ) ) + if ( urlHasQueryItem( event->url, "json" ) ) { // JSON response QVariantMap m; @@ -66,12 +69,12 @@ Api_v1::auth_1( QxtWebRequestEvent* event, QString arg ) // webpage request QString authPage = RESPATH "www/auth.html"; QHash< QString, QString > args; - if ( event->url.hasQueryItem( "receiverurl" ) ) - args[ "url" ] = QUrl::fromPercentEncoding( event->url.queryItemValue( "receiverurl" ).toUtf8() ); + if ( urlHasQueryItem( event->url, "receiverurl" ) ) + args[ "url" ] = urlQueryItemValue( event->url, "receiverurl" ).toUtf8(); args[ "formtoken" ] = formToken; - args[ "website" ] = QUrl::fromPercentEncoding( event->url.queryItemValue( "website" ).toUtf8() ); - args[ "name" ] = QUrl::fromPercentEncoding( event->url.queryItemValue( "name" ).toUtf8() ); + args[ "website" ] = urlQueryItemValue( event->url, "website" ).toUtf8(); + args[ "name" ] = urlQueryItemValue( event->url, "name" ).toUtf8(); sendWebpageWithArgs( event, authPage, args ); } } @@ -138,7 +141,7 @@ Api_v1::auth_2( QxtWebRequestEvent* event, QString arg ) { // do what the client wants QUrl receiverurl = QUrl( queryItems.value( "receiverurl" ), QUrl::TolerantMode ); - receiverurl.addEncodedQueryItem( "authtoken", "#" + authtoken ); + urlAddQueryItem( receiverurl, "authtoken", "#" + authtoken ); tDebug( LOGVERBOSE ) << "Got receiver url:" << receiverurl.toString(); QxtWebRedirectEvent* e = new QxtWebRedirectEvent( event->sessionID, event->requestID, receiverurl.toString() ); @@ -158,9 +161,9 @@ Api_v1::api( QxtWebRequestEvent* event ) tDebug( LOGVERBOSE ) << "HTTP" << event->url.toString(); const QUrl& url = event->url; - if ( url.hasQueryItem( "method" ) ) + if ( urlHasQueryItem( url, "method" ) ) { - const QString method = url.queryItemValue( "method" ); + const QString method = urlQueryItemValue( url, "method" ); if ( method == "stat" ) return stat( event ); if ( method == "resolve" ) return resolve( event ); @@ -194,7 +197,7 @@ Api_v1::sid( QxtWebRequestEvent* event, QString unused ) QxtWebPageEvent* e = new QxtWebPageEvent( event->sessionID, event->requestID, iodev.data() ); e->streaming = iodev->isSequential(); - e->contentType = rp->mimetype().toAscii(); + e->contentType = rp->mimetype().toLatin1(); if ( rp->size() > 0 ) e->headers.insert( "Content-Length", QString::number( rp->size() ) ); postEvent( e ); @@ -221,10 +224,10 @@ Api_v1::stat( QxtWebRequestEvent* event ) if ( !event->content.isNull() ) tDebug( LOGVERBOSE ) << "BODY:" << event->content->readAll(); - if ( event->url.hasQueryItem( "auth" ) ) + if ( urlHasQueryItem( event->url, "auth" ) ) { // check for auth status - DatabaseCommand_ClientAuthValid* dbcmd = new DatabaseCommand_ClientAuthValid( event->url.queryItemValue( "auth" ) ); + DatabaseCommand_ClientAuthValid* dbcmd = new DatabaseCommand_ClientAuthValid( urlQueryItemValue( event->url, "auth" ) ); connect( dbcmd, SIGNAL( authValid( QString, QString, bool ) ), this, SLOT( statResult( QString, QString, bool ) ) ); Database::instance()->enqueue( QSharedPointer(dbcmd) ); } @@ -259,16 +262,16 @@ Api_v1::statResult( const QString& clientToken, const QString& name, bool valid void Api_v1::resolve( QxtWebRequestEvent* event ) { - if ( !event->url.hasQueryItem( "artist" ) || - !event->url.hasQueryItem( "track" ) ) + if ( !urlHasQueryItem( event->url, "artist" ) || + !urlHasQueryItem( event->url, "track" ) ) { tDebug( LOGVERBOSE ) << "Malformed HTTP resolve request"; return send404( event ); } - const QString artist = QUrl::fromPercentEncoding( event->url.queryItemValue( "artist" ).toUtf8() ); - const QString track = QUrl::fromPercentEncoding( event->url.queryItemValue( "track" ).toUtf8() ); - const QString album = QUrl::fromPercentEncoding( event->url.queryItemValue( "album" ).toUtf8() ); + const QString artist = urlQueryItemValue( event->url, "artist" ); + const QString track = urlQueryItemValue( event->url, "track" ); + const QString album = urlQueryItemValue( event->url, "album" ); if ( artist.trimmed().isEmpty() || track.trimmed().isEmpty() ) @@ -278,8 +281,8 @@ Api_v1::resolve( QxtWebRequestEvent* event ) } QString qid; - if ( event->url.hasQueryItem( "qid" ) ) - qid = event->url.queryItemValue( "qid" ); + if ( urlHasQueryItem( event->url, "qid" ) ) + qid = urlQueryItemValue( event->url, "qid" ); else qid = uuid(); @@ -316,14 +319,14 @@ Api_v1::staticdata( QxtWebRequestEvent* event, const QString& str ) void Api_v1::get_results( QxtWebRequestEvent* event ) { - if ( !event->url.hasQueryItem( "qid" ) ) + if ( !urlHasQueryItem( event->url, "qid" ) ) { tDebug( LOGVERBOSE ) << "Malformed HTTP get_results request"; send404( event ); return; } - query_ptr qry = Pipeline::instance()->query( event->url.queryItemValue( "qid" ) ); + query_ptr qry = Pipeline::instance()->query( urlQueryItemValue( event->url, "qid" ) ); if ( qry.isNull() ) { send404( event ); @@ -357,10 +360,10 @@ Api_v1::sendJSON( const QVariantMap& m, QxtWebRequestEvent* event ) QByteArray ctype; QByteArray body = ser.serialize( m ); - if ( event->url.hasQueryItem("jsonp") && !event->url.queryItemValue( "jsonp" ).isEmpty() ) + if ( urlHasQueryItem( event->url, "jsonp" ) && !urlQueryItemValue( event->url, "jsonp" ).isEmpty() ) { ctype = "text/javascript; charset=utf-8"; - body.prepend( QString("%1( ").arg( event->url.queryItemValue( "jsonp" ) ).toAscii() ); + body.prepend( QString("%1( ").arg( urlQueryItemValue( event->url, "jsonp" ) ).toLatin1() ); body.append( " );" ); } else diff --git a/src/web/Api_v1.h b/src/web/Api_v1.h index 3d1739aab6..4ad4c88cf6 100644 --- a/src/web/Api_v1.h +++ b/src/web/Api_v1.h @@ -22,11 +22,11 @@ // See: http://doc.libqxt.org/tip/qxtweb.html -#include "QxtHttpServerConnector" -#include "QxtHttpSessionManager" -#include "QxtWebContent" -#include "QxtWebSlotService" -#include "QxtWebPageEvent" +#include +#include +#include +#include +#include #include #include diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetatype.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetatype.h index 34bde7a05b..d4b75bc28b 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetatype.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtmetatype.h @@ -111,7 +111,11 @@ class /*QXT_CORE_EXPORT*/ QxtMetaType inline void* qxtConstructByName(const char* typeName, const void* copy = 0) { +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + return QMetaType::create(QMetaType::type(typeName), copy); +#else return QMetaType::construct(QMetaType::type(typeName), copy); +#endif } inline void qxtDestroyByName(const char* typeName, void* data) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp index 409118c273..b51a9b73b5 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcgiservice.cpp @@ -215,7 +215,11 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) env["CONTENT_TYPE"] = event->contentType; env["CONTENT_LENGTH"] = QString::number(event->content->unreadBytes()); } +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + env["QUERY_STRING"] = event->url.query(); +#else env["QUERY_STRING"] = event->url.encodedQuery(); +#endif // Populate HTTP header environment variables QMultiHash::const_iterator iter = event->headers.constBegin(); @@ -251,10 +255,18 @@ void QxtWebCgiService::pageRequestedEvent(QxtWebRequestEvent* event) process->setEnvironment(p_env); // Launch process +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + if (event->url.hasQuery() && event->url.query().contains('=')) +#else if (event->url.hasQuery() && event->url.encodedQuery().contains('=')) +#endif { // CGI/1.1 spec says to pass the query on the command line if there's no embedded = sign - process->start(qxt_d().binary + ' ' + QUrl::fromPercentEncoding(event->url.encodedQuery()), QIODevice::ReadWrite); +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + process->start(qxt_d().binary + ' ' + event->url.query(), QIODevice::ReadWrite); +#else + process->start(qxt_d().binary + ' ' + event->url.encodedQuery(), QIODevice::ReadWrite); +#endif } else { diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp index 6fa17026b8..77e3932ddf 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtwebcontent.cpp @@ -52,6 +52,10 @@ QxtWeb uses QxtWebContent as an abstraction for streaming data. #include #include +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) +#include +#endif + #ifndef QXT_DOXYGEN_RUN class QxtWebContentPrivate : public QxtPrivate { @@ -270,7 +274,11 @@ QHash QxtWebContent::parseUrlEncodedQuery(const QString& data) { QUrl post("/?" + data); QHash rv; +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + foreach(const QxtQueryItem& item, QUrlQuery( post ).queryItems()) +#else foreach(const QxtQueryItem& item, post.queryItems()) +#endif { rv.insertMulti(item.first, item.second); } From 6a7baca8aa08bcdf758e6517d84670446867604a Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 21:58:22 +0100 Subject: [PATCH 126/310] qt5: no implicit QString from QUuid --- src/libtomahawk/Typedefs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/Typedefs.h b/src/libtomahawk/Typedefs.h index 988f6d10db..3d5f22785e 100644 --- a/src/libtomahawk/Typedefs.h +++ b/src/libtomahawk/Typedefs.h @@ -217,7 +217,7 @@ typedef QList< QPair< QString, QString > > PairList; inline static QString uuid() { // kinda lame, but - QString q = QUuid::createUuid(); + QString q = QUuid::createUuid().toString(); q.remove( 0, 1 ); q.chop( 1 ); return q; From e821e2ef21405e8375aefc2ab282284b77f555ca Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 22:08:48 +0100 Subject: [PATCH 127/310] qt5: include qtconcurrentrun.h instead of QtConcurrentRun --- src/libtomahawk/network/MsgProcessor.cpp | 7 +++++++ src/libtomahawk/network/MsgProcessor.h | 11 ++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/network/MsgProcessor.cpp b/src/libtomahawk/network/MsgProcessor.cpp index 6409108cd2..4e6a883b83 100644 --- a/src/libtomahawk/network/MsgProcessor.cpp +++ b/src/libtomahawk/network/MsgProcessor.cpp @@ -21,7 +21,14 @@ #include "network/Servent.h" #include "utils/Logger.h" +#include +#include +#include + #include +#include +#include +#include MsgProcessor::MsgProcessor( quint32 mode, quint32 t ) : QObject(), m_mode( mode ), m_threshold( t ), m_totmsgsize( 0 ) diff --git a/src/libtomahawk/network/MsgProcessor.h b/src/libtomahawk/network/MsgProcessor.h index 96699a801c..ae0892dc90 100644 --- a/src/libtomahawk/network/MsgProcessor.h +++ b/src/libtomahawk/network/MsgProcessor.h @@ -30,17 +30,10 @@ #ifndef MSGPROCESSOR_H #define MSGPROCESSOR_H -#include -#include -#include -#include - -#include -#include -#include - #include "Msg.h" +#include + class MsgProcessor : public QObject { Q_OBJECT From 248565fc6db8d6cca25039ac08892f821ecd9f66 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 22:14:39 +0100 Subject: [PATCH 128/310] qt5: qxtweb: woops, some Ascii/Latin1 replacements slipped through --- .../qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp index bad6ee7475..7458420d26 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtscgiserverconnector.cpp @@ -174,7 +174,7 @@ QHttpRequestHeader QxtScgiServerConnector::parseRequest(QByteArray& buffer) } else { - request_m.setValue(QString::fromAscii(name).toLower(), QString::fromAscii(buffer.left(i))); + request_m.setValue(QString::fromLatin1(name).toLower(), QString::fromLatin1(buffer.left(i))); name = ""; } buffer = buffer.mid(i + 1); @@ -207,11 +207,11 @@ QHttpRequestHeader QxtScgiServerConnector::parseRequest(QByteArray& buffer) void QxtScgiServerConnector::writeHeaders(QIODevice* device, const QHttpResponseHeader& response_m) { - device->write(("Status:" + QString::number(response_m.statusCode()) + ' ' + response_m.reasonPhrase() + "\r\n").toAscii()); + device->write(("Status:" + QString::number(response_m.statusCode()) + ' ' + response_m.reasonPhrase() + "\r\n").toLatin1()); foreach(const QString& key, response_m.keys()) { - device->write((key + ':' + response_m.value(key) + "\r\n").toAscii()); + device->write((key + ':' + response_m.value(key) + "\r\n").toLatin1()); } device->write("\r\n"); } From 4d693cf4c964431c56e9e09f3e80b333d0757e12 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 22:45:41 +0100 Subject: [PATCH 129/310] qt5: fix typo --- src/libtomahawk/utils/TomahawkUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index 53e18aa41b..a2fcb5aed5 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -1013,7 +1013,7 @@ QString urlQueryItemValue( const QUrl& url, const QString& key ) { #if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) - return QUrlQuery( url ).queryItemValue( key ).replace( "+", " " ) + return QUrlQuery( url ).queryItemValue( key ).replace( "+", " " ); #else return url.queryItemValue( key ).replace( "+", " " ); #endif From a7cec4648ffe12f58a3f3290846abea0214d5164 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 22:51:20 +0100 Subject: [PATCH 130/310] qt5: don't forward declare QStyleOptionViewItemV4, we need the include for the typedef --- src/libtomahawk/utils/TomahawkUtilsGui.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.h b/src/libtomahawk/utils/TomahawkUtilsGui.h index 5544a2ee18..9fdd8f9ef0 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.h +++ b/src/libtomahawk/utils/TomahawkUtilsGui.h @@ -20,6 +20,9 @@ #ifndef TOMAHAWKUTILSGUI_H #define TOMAHAWKUTILSGUI_H +#include "TomahawkUtils.h" +#include "DllMacro.h" + #include #include #include @@ -27,11 +30,10 @@ #include #include -#include "TomahawkUtils.h" -#include "DllMacro.h" +// include contains typedefs for Qt4/Qt5 compatibility +#include class PlayableItem; -class QStyleOptionViewItemV4; class QPainter; class QPixmap; class QLayout; From 13eb29a93a1208dc4aa4f15950be5c0885e9227b Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:03:04 +0100 Subject: [PATCH 131/310] qt5: port to new QViewHeader API --- src/libtomahawk/playlist/ViewHeader.cpp | 7 ++++++- src/sourcetree/SourceTreeView.cpp | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/ViewHeader.cpp b/src/libtomahawk/playlist/ViewHeader.cpp index 51ab8a3406..02054709d5 100644 --- a/src/libtomahawk/playlist/ViewHeader.cpp +++ b/src/libtomahawk/playlist/ViewHeader.cpp @@ -32,10 +32,15 @@ ViewHeader::ViewHeader( QAbstractItemView* parent ) , m_sigmap( new QSignalMapper( this ) ) , m_init( false ) { +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + setSectionResizeMode( QHeaderView::Interactive ); + setSectionsMovable( true ); +#else setResizeMode( QHeaderView::Interactive ); + setMovable( true ); +#endif setMinimumSectionSize( 60 ); setDefaultAlignment( Qt::AlignLeft ); - setMovable( true ); setStretchLastSection( true ); // m_menu->addAction( tr( "Resize columns to fit window" ), this, SLOT( onToggleResizeColumns() ) ); diff --git a/src/sourcetree/SourceTreeView.cpp b/src/sourcetree/SourceTreeView.cpp index fce8978c7d..f8145d9ac3 100644 --- a/src/sourcetree/SourceTreeView.cpp +++ b/src/sourcetree/SourceTreeView.cpp @@ -117,7 +117,11 @@ SourceTreeView::SourceTreeView( QWidget* parent ) setModel( m_proxyModel ); header()->setStretchLastSection( false ); +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + header()->setSectionResizeMode( 0, QHeaderView::Stretch ); +#else header()->setResizeMode( 0, QHeaderView::Stretch ); +#endif connect( this, SIGNAL( expanded( QModelIndex ) ), SLOT( onItemExpanded( QModelIndex ) ) ); connect( selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onSelectionChanged() ) ); From 069b3f9239c93dfca4baad49c81e95aa2ab1d3bd Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:05:21 +0100 Subject: [PATCH 132/310] qt5: ifdef QFileSystemModel::reset() out, an equivalent in Qt5 seems to be missing --- src/libtomahawk/widgets/CheckDirTree.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libtomahawk/widgets/CheckDirTree.cpp b/src/libtomahawk/widgets/CheckDirTree.cpp index 384cddca21..34563d031a 100644 --- a/src/libtomahawk/widgets/CheckDirTree.cpp +++ b/src/libtomahawk/widgets/CheckDirTree.cpp @@ -89,7 +89,10 @@ CheckDirModel::getFileInfoResult() void CheckDirModel::volumeShowFinished() { +#if ! QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) +//FIXME: this has no equivalent in Qt5, does it just work there? reset(); +#endif #ifdef Q_OS_MAC // Make sure /Volumes is there, if not wait and try again From d829c09e9d1794ac1c6761a6e75610e09dc3b14f Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:12:07 +0100 Subject: [PATCH 133/310] qt5: register AudioErrorCode meta type only once --- src/TomahawkApp.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index 5e8c30583d..c5b83cb690 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -477,8 +477,6 @@ TomahawkApp::registerMetaTypes() qRegisterMetaType< Tomahawk::DynamicPlaylistRevision >("Tomahawk::DynamicPlaylistRevision"); qRegisterMetaType< Tomahawk::QID >("Tomahawk::QID"); - qRegisterMetaType< AudioErrorCode >("AudioErrorCode"); - qRegisterMetaType< Tomahawk::InfoSystem::InfoStringHash >( "Tomahawk::InfoSystem::InfoStringHash" ); qRegisterMetaType< Tomahawk::InfoSystem::InfoType >( "Tomahawk::InfoSystem::InfoType" ); qRegisterMetaType< Tomahawk::InfoSystem::PushInfoFlags >( "Tomahawk::InfoSystem::PushInfoFlags" ); From 8a373681b2d714193effbce5ad90b2ee69b08530 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:22:03 +0100 Subject: [PATCH 134/310] qt5: ifdef two Q_DECLARE_METATYPE invocations out, for some reason they fail with Qt5 --- .../database/DatabaseCommand_LoadAllSortedPlaylists.h | 4 ++++ src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h b/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h index 80d1e33373..38d4e26925 100644 --- a/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h +++ b/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h @@ -61,5 +61,9 @@ class DatabaseCommand_LoadAllSortedPlaylists : public DatabaseCommand DatabaseCommand_LoadAllPlaylists::SortAscDesc m_sortAscDesc; }; +//FIXME: Qt5: this fails with Qt5, is it needed at all? It compiles fine without in Qt4 as well +#if ! QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) Q_DECLARE_METATYPE(QList) +#endif + #endif // DATABASECOMMAND_LOADALLSORTEDPLAYLISTS_H diff --git a/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h b/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h index fdc987bd5b..57ae3598a2 100644 --- a/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h +++ b/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h @@ -142,6 +142,9 @@ Q_OBJECT }; +//FIXME: Qt5: this fails with Qt5, is it needed at all? It compiles fine without in Qt4 as well +#if ! QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) Q_DECLARE_METATYPE( DatabaseCommand_LoadSocialActions::TrackActions ) +#endif #endif // DATABASECOMMAND_LOADSOCIALACTIONS_H From 6f116fadb698c4e2a113a5e1e7117d7cef8b6b2d Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:37:54 +0100 Subject: [PATCH 135/310] qt5: ifdeffing didn't work, needs to be commented out --- .../database/DatabaseCommand_LoadAllSortedPlaylists.h | 4 +--- src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h b/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h index 38d4e26925..83b82b9808 100644 --- a/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h +++ b/src/libtomahawk/database/DatabaseCommand_LoadAllSortedPlaylists.h @@ -62,8 +62,6 @@ class DatabaseCommand_LoadAllSortedPlaylists : public DatabaseCommand }; //FIXME: Qt5: this fails with Qt5, is it needed at all? It compiles fine without in Qt4 as well -#if ! QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) -Q_DECLARE_METATYPE(QList) -#endif +// Q_DECLARE_METATYPE(QList) #endif // DATABASECOMMAND_LOADALLSORTEDPLAYLISTS_H diff --git a/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h b/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h index 57ae3598a2..ecc1c2ebd0 100644 --- a/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h +++ b/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h @@ -143,8 +143,6 @@ Q_OBJECT }; //FIXME: Qt5: this fails with Qt5, is it needed at all? It compiles fine without in Qt4 as well -#if ! QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) -Q_DECLARE_METATYPE( DatabaseCommand_LoadSocialActions::TrackActions ) -#endif +// Q_DECLARE_METATYPE( DatabaseCommand_LoadSocialActions::TrackActions ) #endif // DATABASECOMMAND_LOADSOCIALACTIONS_H From 8261b840c2eda569ae28da0709dfe49679790b92 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:42:27 +0100 Subject: [PATCH 136/310] qt5: move Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoSystemCache* ) to where it belongs --- src/libtomahawk/infosystem/InfoSystem.h | 1 - src/libtomahawk/infosystem/InfoSystemCache.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 381ac3e1f9..523fd3a8d1 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -244,7 +244,6 @@ Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoStringHash ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::PushInfoPair ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::PushInfoFlags ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoType ); -Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoSystemCache* ); Q_DECLARE_METATYPE( QList< Tomahawk::InfoSystem::InfoStringHash > ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoPluginPtr ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoPlugin* ); diff --git a/src/libtomahawk/infosystem/InfoSystemCache.h b/src/libtomahawk/infosystem/InfoSystemCache.h index 740188f263..7ab5f0f7c3 100644 --- a/src/libtomahawk/infosystem/InfoSystemCache.h +++ b/src/libtomahawk/infosystem/InfoSystemCache.h @@ -71,4 +71,6 @@ private slots: } //namespace Tomahawk +Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoSystemCache* ); + #endif //TOMAHAWK_INFOSYSTEMCACHE_H From 48278260c21cfad6f9875b036b94bd3a65144a43 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 5 Jan 2013 23:43:16 +0100 Subject: [PATCH 137/310] qt5: last commit needs additional include in TomahawkApp --- src/TomahawkApp.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index c5b83cb690..bae934be8f 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -28,6 +28,7 @@ #include "Artist.h" #include "Collection.h" #include "infosystem/InfoSystem.h" +#include "infosystem/InfoSystemCache.h" #include "accounts/AccountManager.h" #include "accounts/spotify/SpotifyAccount.h" #include "accounts/lastfm/LastFmAccount.h" From fc4acddaaef8464c777164ddaf12d1285e495fdb Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sun, 6 Jan 2013 01:16:36 +0100 Subject: [PATCH 138/310] 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_cs.ts | 1563 ++++++++++++++++++++-------------------- 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 | 106 +-- lang/tomahawk_sv.ts | 98 +-- lang/tomahawk_tr.ts | 98 +-- lang/tomahawk_zh_CN.ts | 98 +-- lang/tomahawk_zh_TW.ts | 98 +-- 24 files changed, 1923 insertions(+), 1902 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 12aa39786e..1504c58b30 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -921,7 +921,7 @@ connect and stream from you? تقدم - + Properties @@ -1251,67 +1251,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 الآن @@ -1664,44 +1664,44 @@ connect and stream from you? SourceDelegate - + Track اغنية - + Album البوم - + Artist فنان - + Local محلية - + Top 10 توب ١٠ - + All available tracks جميع الأغاني المتاحة - - + + Show أظهر - - + + Hide إخفي @@ -1801,68 +1801,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &نسخ الرابط - + &Delete %1 &أحذف %1 - + Add to my Playlists أضف إلى لوائحي للأغاني - + Add to my Automatic Playlists أضف إلى لوائحي الأوتوماتيكية للأغاني - + Add to my Stations أضف إلى إذاعاتي - + &Export Playlist &تصدير قائمة الأغاني - + playlist قائمة الأغاني - + automatic playlist قائمة أغاني أوتوماتيكية - + station إذاعة - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? هل ترغب في حذف %1 <b>"%2"</b>؟ - + Delete احذف - + Save XSPF حفظ XSPF - + Playlists (*.xspf) قوائم أغاني (*.xspf) @@ -2981,22 +2981,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall الأكثر شهرة بالإجمال - + Artists فنانين - + Albums ألبومات - + Tracks أغاني @@ -3045,7 +3045,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums ألبومات @@ -3097,13 +3097,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up &إلحق - - + + &Listen Along &استمع مع @@ -3247,7 +3247,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection مجموعتي الخاصة @@ -3270,7 +3270,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3557,7 +3557,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. عذراً، ترشيحك "%1" لم يطابق أي نتائج. @@ -3608,7 +3608,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 6c0a2b2009..5d2f8c9f0d 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -926,7 +926,7 @@ Tomahawk създаде доклад относно това и изпращай Напред - + Properties Настройки @@ -1258,67 +1258,67 @@ Tomahawk създаде доклад относно това и изпращай 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 току-що @@ -1673,44 +1673,44 @@ Tomahawk създаде доклад относно това и изпращай SourceDelegate - + Track Песен - + Album Албум - + Artist Артист - + Local Локално - + Top 10 Първите 10 - + All available tracks Всички налични изпълнения - - + + Show Покажи - - + + Hide Скрий @@ -1811,68 +1811,68 @@ Tomahawk създаде доклад относно това и изпращай SourceTreeView - + &Copy Link &Копирай адресът - + &Delete %1 &Изтрий %1 - + Add to my Playlists Добави към моите списъци - + Add to my Automatic Playlists Добави към моите автоматично-генерирани списъци - + Add to my Stations Добави към станциите ми - + &Export Playlist &Изнеси списък - + playlist списък - + automatic playlist автоматично-генериран списък - + station станция - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Наистина ли желаеш да изтриеш %1 <b>''%2" </b> - + Delete Изтрий - + Save XSPF Запази XSPF - + Playlists (*.xspf) Списъци (*.xspf) @@ -2995,22 +2995,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Най-известни - + Artists Артисти - + Albums Албуми - + Tracks Песни @@ -3059,7 +3059,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Албуми @@ -3111,13 +3111,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up &Последвай - - + + &Listen Along &Слушай заедно @@ -3261,7 +3261,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Моята колекция @@ -3284,7 +3284,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Локална мрежа @@ -3574,7 +3574,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Съжалявам, твоят филтър %1 не върна никакъв резултат. @@ -3625,7 +3625,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 9d6c0e732a..e5587675aa 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1248,67 +1248,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 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link - + &Delete %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist - + playlist - + automatic playlist - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF - + Playlists (*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up - - + + &Listen Along @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3597,7 +3597,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 0721d1d4d1..92b9043c53 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1249,67 +1249,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 @@ -1662,44 +1662,44 @@ connect and stream from you? SourceDelegate - + Track Cançó - + Album Àlbum - + Artist Artista - + Local Local - + Top 10 Top 10 - + All available tracks Totes les cançons disponibles - - + + Show Mostra - - + + Hide Amaga @@ -1799,68 +1799,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Copia l'Enllaç - + &Delete %1 &Esborra %1 - + Add to my Playlists Afegeix a les meves Llistes - + Add to my Automatic Playlists Afegeix a les meves Llistes Automàtiques - + Add to my Stations Afegeix a les meves Emissores - + &Export Playlist E&xporta la Llista de Reproducció - + playlist llista - + automatic playlist llista automàtica - + station emissora - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Voleu esborrar %1 <b>"%2"</b>? - + Delete - + Save XSPF Desa com XSPF - + Playlists (*.xspf) Llistes de reproducció (*.xspf) @@ -2979,22 +2979,22 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top General - + Artists Artistes - + Albums Àlbums - + Tracks Cançons @@ -3043,7 +3043,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Àlbums @@ -3095,13 +3095,13 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::LatchManager - + &Catch Up &Atrapa - - + + &Listen Along &Escolta a la vegada @@ -3245,7 +3245,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. TomahawkApp - + My Collection La meva Col·lecció @@ -3268,7 +3268,7 @@ introduïu el PIN aquí: TomahawkSettings - + Local Network @@ -3555,7 +3555,7 @@ introduïu el PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. El filtre '%1' no ha obtingut cap resultat. @@ -3606,7 +3606,7 @@ introduïu el PIN aquí: TreeView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 076e7ec024..71099c0161 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -5,17 +5,18 @@ Allow %1 to connect and stream from you? - + Chcete dovolit %1, +se s vámi spojil? Allow Streaming - + Povolit přístup Deny Access - + Odepřít přístup @@ -23,7 +24,7 @@ connect and stream from you? Tomahawk needs you to decide whether %1 is allowed to connect. - + Tomahawk chce vědět, zda se chcete spojit s %1. @@ -31,17 +32,17 @@ connect and stream from you? Dialog - + Dialog Description goes here - + Popis zde Add Account - + Přidat účet @@ -49,17 +50,17 @@ connect and stream from you? Online - + Připojený Connecting... - + Připojuje se... Offline - + Nepřipojený @@ -67,18 +68,18 @@ connect and stream from you? Connections - + Spojení Connect &All - + Spojit &vše Disconnect &All - + &Odpojit vše @@ -86,7 +87,7 @@ connect and stream from you? Invite - + Pozvat @@ -94,7 +95,7 @@ connect and stream from you? Configure Accounts - + Nastavit účty @@ -102,159 +103,159 @@ connect and stream from you? &Listen Along - + &Poslouchat Stop &Listening Along - + Zastavit &poslech &Follow in real-time - + &Sledovat ve skutečném čase &Listen Privately - + Zapnout režim &sokromého poslechu &Listen Publicly - + Opustit režim so&kromého poslechu &Load Playlist - + &Nahrát seznam skladeb &Rename Playlist - + &Přejmenovat seznam skladeb &Copy Playlist Link - + &Kopírovat odkaz k tomuto seznamu skladeb &Play - + Pře&hrát &Stop - + &Zastavit &Previous Track - + Před&chozí skladba &Next Track - + &Další skladba &Quit - + U&končit Load &XSPF... - + Nahrát &XSPF... U&pdate Collection - + &Aktualizovat sbírku Fully &Rescan Collection - + Sbírku pro&hledat znovu Show Offline Sources - + Ukázat zdroje nepřipojené k internetu &Configure Tomahawk... - + &Nastavit Tomahawk... Minimize - + Zmenšit Zoom - + Zvětšení Hide Menu Bar - + Skrýt pruh s hlavní nabídkou Diagnostics... - + Diagnostika... About &Tomahawk... - + &O programu Tomahawk... &Legal Information... - + &Právní informace... &View Logfile - + &Zobrazit soubor se zápisem Check For Updates... - + Prověřit, zda již je novější vydání... &Controls - + &Ovládání &Settings - + Na&stavení &Help - + Nápo&věda &Window - + &Okno Main Menu - + Hlavní nabídka @@ -262,27 +263,27 @@ connect and stream from you? Tracklist - + Seznam skladeb Other Albums - + Jiná alba Sorry, we could not find any other albums for this artist! - + Promiňte, nepodařilo se najít žádná jiná alba tohoto umělce! Sorry, we could not find any tracks for this album! - + Promiňte, nepodařilo se najít žádné skladby pro toto album! Other Albums by %1 - + Jiná alba %1 @@ -291,12 +292,12 @@ connect and stream from you? All albums from %1 - + Všechna alba %1 All albums - + Všechna alba @@ -304,32 +305,32 @@ connect and stream from you? Top Hits - + Nejlepší písně Related Artists - + Podobní umělci Albums - + Alba Sorry, we could not find any albums for this artist! - + Promiňte, nepodařilo se najít žádná alba tohoto umělce! Sorry, we could not find any related artists! - + Promiňte, nepodařilo se najít žádné podobné umělce! Sorry, we could not find any top hits for this artist! - + Sorry, wir konnten keine Lieder für diesen Künstler finden! @@ -337,37 +338,37 @@ connect and stream from you? Shuffle - + Zamíchat Repeat - + Opakovat Time Elapsed - + Uběhlý čas Time Remaining - + Zbývající čas Playing from %1 - + Přehrávání od %1 Share - + Sdílet Love - + Mít rád @@ -375,17 +376,17 @@ connect and stream from you? Sorry, Tomahawk couldn't find the track '%1' by %2 - + Promiňte, Tomahawku se nepodařilo najít skladbu '%1' od %2 Sorry, Tomahawk couldn't find the artist '%1' - + Promiňte, Tomahawku se nepodařilo najít umělce '%1' Sorry, Tomahawk couldn't find the album '%1' by %2 - + Promiňte, Tomahawku se nepodařilo najít album '%1' od %2 @@ -393,24 +394,24 @@ connect and stream from you? Create new Playlist - + Vytvořit nový seznam skladeb Create new Station - + Vytvořit novou stanici New Station - + Nová stanice %1 Station - + %1 stanice @@ -418,12 +419,12 @@ connect and stream from you? Playlists - + Seznamy skladeb Stations - + Stanice @@ -431,7 +432,7 @@ connect and stream from you? Clear - + Vyprázdnit @@ -440,12 +441,12 @@ connect and stream from you? Show Footnotes - + Ukázat poznámky Hide Footnotes - + Skrýt poznámky @@ -453,53 +454,53 @@ connect and stream from you? Tomahawk Crash Reporter - + Hlásič chyb Tomahawku <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style=" font-weight:600;">Promiňte!</span> Tomahawk spadl. Řekněte nám o tom, prosím! Tomahawk pro vás vytvořil zprávu o chybě, která nám může pomoci zlepšit stabilitu budoucích verzí. Tuto zprávu nyní můžete poslat přímo vývojářům Tomahawku.</p></body></html> Send this report - + Odeslat zprávu Don't send - + Neodesílat Abort - + Zrušit You can disable sending crash reports in the configuration dialog. - + Předávání zpráv o chybách můžete vypnout v nastavení. Uploaded %L1 of %L2 KB. - + Nahráno %L1 z %L2 KB. Close - + Zavřít Sent! <b>Many thanks</b>. - + Odesláno! <b>Děkujeme</b>. Failed to send crash info. - + Odeslání zprávy o chybě se nezdařilo. @@ -507,7 +508,7 @@ connect and stream from you? Unknown - + Neznámý @@ -515,17 +516,17 @@ connect and stream from you? About - + O Delete Account - + Smazat účet About this Account - + O tomto účtu @@ -533,17 +534,17 @@ connect and stream from you? Tomahawk Diagnostics - + Diagnostický nástroj Tomahawku &Copy to Clipboard - + &Kopírovat do schránky Open &Log-file - + &Otevřít soubor se zápisem @@ -551,97 +552,97 @@ connect and stream from you? Steer this station: - + Řídit tuto stanici: Much less - + Mnohem méně Less - + Méně A bit less - + O něco méně Keep at current - + Ponechat takto A bit more - + O něco více More - + Více Much more - + Mnohem více Tempo - + Tempo Loudness - + Hlasitost Danceability - + Tanečnost Energy - + Energie Song Hotttnesss - + Oblíbenost písně Artist Hotttnesss - + Oblíbenost umělce Artist Familiarity - + Podobnost umělce By Description - + Podle popisu Enter a description - + Zadat popis Apply steering command - + Použít řídící příkaz Reset all steering commands - + Nastavit všechny řídící příkazy znovu @@ -649,7 +650,7 @@ connect and stream from you? Filter... - + Filtr... @@ -657,12 +658,12 @@ connect and stream from you? This playlist is currently empty. - + Tento seznam skladeb je nyní prázdný. This playlist is currently empty. Add some tracks to it and enjoy the music! - + Tento seznam skladeb je nyní prázdný. Přidejte do něj nějaké skladby a vychutnávejte hudbu! @@ -670,7 +671,7 @@ connect and stream from you? Indexing database - + Zrejstříkovat databázi @@ -678,7 +679,7 @@ connect and stream from you? Filter... - + Filtr... @@ -686,32 +687,32 @@ connect and stream from you? Scrobble tracks to Last.fm - + Odesílat skladby Last.fm Username: - + Uživatelské jméno: Password: - + Heslo: Test Login - + Vyzkoušet přihlášení Import Playback History - + Zavést historii přehrávání Synchronize Loved Tracks - + Seřídit nejmilejší písně @@ -719,7 +720,7 @@ connect and stream from you? Last.fm - + Last.fm @@ -727,7 +728,7 @@ connect and stream from you? %1 is listening along with you! - + %1 poslouchá s vámi! @@ -735,27 +736,27 @@ connect and stream from you? Load XSPF - + Nahrát XSPF Playlist URL - + Adresa (URL) seznamu skladeb Enter URL... - + Zadat adresu (URL)... ... - + ... Automatically update - + Aktualizovat automaticky @@ -763,12 +764,12 @@ connect and stream from you? Load XSPF File - + Nahrát soubor XSPF XSPF Files (*.xspf) - + Soubory XSPF (*.xspf) @@ -776,12 +777,12 @@ connect and stream from you? Bookmarks - + Záložky Saved tracks - + Uložené písně @@ -789,32 +790,32 @@ connect and stream from you? Top Loved Tracks - + Nejoblíbenější skladby Sorry, we could not find any loved tracks! - + Promiňte, nepodařilo se najít žádné oblíbené skladby! The most loved tracks from all your friends - + Nejoblíbenější skladby všech vašich přátel All of your loved tracks - + Vaše nejmilejší skladby All of %1's loved tracks - + %1's nejmilejších skladeb Loved Tracks - + Nejmilejší skladby @@ -822,107 +823,107 @@ connect and stream from you? Tags - + Značky Title: - + Název: Title... - + Název... Artist: - + Umělec: Artist... - + Umělec... Album: - + Album: Album... - + Album... Track Number: - + Číslo skladby: Duration: - + Doba trvání: 00.00 - + 00.00 Year: - + Rok: Bitrate: - + Datový tok: File - + Soubor File Name: - + Název souboru: File Name... - + Název souboru... File Size... - + Velikost souboru... File size... - + Velikost souboru... File Size: - + Velikost souboru: Back - + Zpět Forward - + Vpřed - + Properties - + Vlastnosti @@ -930,27 +931,27 @@ connect and stream from you? Enter a title for the new playlist: - + Zadejte název nového seznamu skladeb: Tomahawk offers a variety of ways to help you create playlists and find music you enjoy! - + Tomahawk nabízí rozmanité cesty, aby vám pomohl při vytváření seznamů skladeb a při hledání hudby, kterou máte rádi! Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist: - + Jednoduše zadejte žánr nebo značku a Tomahawk navrhne několik písní a pomůže vám s vytvořením nového seznamu skladeb: &Create Playlist - + &Vytvořit seznam skladeb Create a new playlist - + Vytvořit nový seznam skladeb @@ -958,7 +959,7 @@ connect and stream from you? New Releases - + Novinky @@ -966,103 +967,103 @@ connect and stream from you? Artist - + Umělec Title - + Název Composer - + Skladatel Album - + Album Track - + Skladba Duration - + Doba trvání Bitrate - + Datový tok Age - + Stáří Year - + Rok Size - + Velikost Origin - + Původ Accuracy - + Přesnost Perfect match - + Přesná shoda Very good match - + Velmi dobrá shoda Good match - + Dobrá shoda Vague match - + Mlhavá shoda Bad match - + Špatná shoda Very bad match - + Velmi špatná shoda Not available - + Nedostupné Name - + Název @@ -1070,12 +1071,12 @@ connect and stream from you? played %1 by you - + vyslechnuto %1 vámi played %1 by %2 - + vyslechnuto %1 %2 @@ -1084,31 +1085,31 @@ connect and stream from you? played %1 by you e.g. played 3 hours ago by you - + vyslechnuto %1 vámi played %1 by %2 e.g. played 3 hours ago by SomeSource - + vyslechnuto %1 %2 added %1 e.g. added 3 hours ago - + přidáno %1 by <b>%1</b> e.g. by SomeArtist - + od <b>%1</b> by <b>%1</b> on <b>%2</b> e.g. by SomeArtist on SomeAlbum - + od <b>%1</b> na <b>%2</b> @@ -1116,23 +1117,23 @@ connect and stream from you? A playlist you created %1. - + Seznam skladeb, který jste vytvořil %1. A playlist by %1, created %2. - + Seznam skladeb od %1, vytvořen %2. All tracks by %1 on album %2 - + Seznam skladeb od %1 na albu. %2 All tracks by %1 - + Všechny skladby od %1 @@ -1140,37 +1141,37 @@ connect and stream from you? New Playlist - + Nový seznam skladeb Just a regular old playlist... Give it a name, drag in some tracks, and go! - + Zcela normální seznam skladeb... Dejte mu jméno, přidejte nějaké skladby, a začínáme! Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you! - + Ještě přesně nevíte, co chcete? S trochou pomoci může Tomahawk vytvořit seznam skladeb dle vaší chuti! Name: - + Název: New Playlist... - + Nový seznam skladeb... Create Manual Playlist - + Vytvořit ruční seznam skladeb Create Automatic Playlist - + Vytvořit automatický seznam skladeb @@ -1178,12 +1179,12 @@ connect and stream from you? This playlist is currently empty. - + Tento seznam skladeb je nyní prázdný. This playlist is currently empty. Add some tracks to it and enjoy the music! - + Tento seznam skladeb je nyní prázdný. Přidejte do něj nějaké skladby a vychutnávejte hudbu! @@ -1191,153 +1192,154 @@ connect and stream from you? Proxy Settings - + Nastavení Proxy Hostname of proxy server - + Název počítače serveru Proxy Host - + Hostitelský počítač Port - + Přípojka (port) Proxy login - + Přihlášení Proxy User - + Uživatel Password - + Heslo Proxy password - + Heslo pro Proxy No Proxy Hosts: (Overrides system proxy) - + Výjimky Proxy: +(má přednost před systémovou Proxy) localhost *.example.com (space separated) - + localhost *.example.com (odděleno mezerami) Use proxy for DNS lookups? - + Použít Proxy pro dotazy DNS? QObject - + %n year(s) ago - + před %n rokempřed %n rokypřed %n roky - + %n year(s) - + %n rok%n roky%n roků - + %n month(s) ago - + před %n měsícempřed %n měsícipřed %n měsíci - + %n month(s) - + %n měsíc%n měsíce%n měsíců - + %n week(s) ago - + před %n týdnempřed %n týdnypřed %n týdny - + %n week(s) - + %n týden%n týdny%n týdnů - + %n day(s) ago - + před %n dnempřed %n dnypřed %n dny - + %n day(s) - + %n den%n dny%n dnů - + %n hour(s) ago - + před %n hodinoupřed %n hodinamipřed %n hodinami - + %n hour(s) - + %n hodina%n hodiny%n hodin - + %1 minutes ago - + před %1 minutami - + %1 minutes - + %1 minuty - + just now - + právě teď Friend Finders - + Hledač přátel Music Finders - + Hledač hudby Status Updaters - + Obnova stavu %1 Config - + %1 nastavení %1 Configuration - + %1 nastavení @@ -1345,7 +1347,7 @@ connect and stream from you? ZIP/UNZIP API error %1 - + Chyba ZIP/UNZIP API %1 @@ -1354,17 +1356,17 @@ connect and stream from you? Open Queue - + Otevřít čekací řadu Open Queue - %n item(s) - + Otevřít čekací řadu - jedna píseňOtevřít čekací řadu - %n písněOtevřít čekací řadu - %n písní Close Queue - + Zavřít čekací řadu @@ -1372,7 +1374,7 @@ connect and stream from you? Related Artists - + Podobní umělci @@ -1380,12 +1382,12 @@ connect and stream from you? Not found: %1 - + Nenalezeno: %1 Failed to load: %1 - + Nepodařilo se nahrát: %1 @@ -1393,7 +1395,7 @@ connect and stream from you? Search - + Hledat @@ -1401,12 +1403,12 @@ connect and stream from you? Search: %1 - + Hledat: %1 Results for '%1' - + Výsledky pro '%1' @@ -1414,67 +1416,67 @@ connect and stream from you? Collection - + Sbírka Advanced - + Pokročilé All - + Vše Some changed settings will not take effect until Tomahawk is restarted - + Některá změněná nastavení se neprojeví, dokud Tomahawk nebude spuštěn znovu Services - + Služby Install from file - + Instalovat ze souboru Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Nastavit účty a služby, jež Tomahawk používa pro hledání a získávání hudby, ke spojování se s vašimi přáteli a pro aktualizaci vašeho stavu. Manage how Tomahawk finds music on your computer. - + Spravovat, jak Tomahawk ve vašem systému hledá hudbu. Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Nastavit pokročilá nastavení Tomahawku, jako jsou volby pro síť, interakci prohlížeče a další. Install resolver from file - + Instalovat řešitele ze souboru Delete all Access Control entries? - + Smazat všechna udělená přístupová oprávnění? Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. - + Opravdu chcete smazat všechna nastavení přístupových práv? Budete znovu dotazován na nastavení přístupových oprávnění pro každé spojení. Information - + Informace @@ -1482,7 +1484,7 @@ connect and stream from you? Filter by capability: - + Filtrovat podle způsobilosti: @@ -1490,77 +1492,77 @@ connect and stream from you? Remote Peer Connection Method - + Spojení s jinými Tomahawky None (outgoing connections only) - + Žádné (možná jen odchozí spojení) Use UPnP to establish port forward (recommended) - + Použít UPnP pro předání přípojky dál (doporučeno) Use static external IP address/host name and port - + Použít statickou vnější adresu/název hostitele a přípojku Set this to your external IP address or host name. Make sure to forward the port to this host! - + Zde nastavte svou vnější adresu IP nebo název hostitele. Přípojku musíte tomuto počítači předat dál sami! Static Host Name: - + Statický název počítače: Static Port: - + Statická přípojka: SOCKS Proxy - + SOCKS Proxy Use SOCKS Proxy - + Použít SOCKS Proxy Proxy Settings... - + Nastavení Proxy… Other Settings - + Další nastavení Allow web browsers to interact with Tomahawk (recommended) - + Povolit internetovým prohlížečům komunikaci s Tomahawkem (doporučeno) Send reports after Tomahawk crashed - + Odeslat zprávu o chybě, když Tomahawk spadl Show notification when a new song starts to play - + Ukázat oznámení, když začne hrát nová píseň Clear All Access Control Entries - + Smazat všechna udělená přístupová oprávnění @@ -1568,7 +1570,7 @@ connect and stream from you? Path to scan for music files: - + Cesta k hudebním souborům: @@ -1576,22 +1578,22 @@ connect and stream from you? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - + Echo Nest může analyzovat popisná data vaší sbírky, aby vám nabídl radiostanice podle vašich potřeb. Když je tato volba zapnuta, můžete vy (a všichni vaši přátelé) vytvářet automatické seznamy skladeb a stanice, jež jsou založeny na vaší osobní hudební chuti. Upload collection list to The Echo Nest to enable user radio - + Předat seznam nynější sbírky Echo Nest pro zapnutí uživatelského rádia (User Radio) Watch for changes - + Sledovat změny a aktualizovat automaticky Time between scans, in seconds: - + Doba mezi dvěma prohlédnutími (v sekundách): @@ -1599,12 +1601,12 @@ connect and stream from you? On - + Zapnuto Off - + Vypnuto @@ -1612,17 +1614,17 @@ connect and stream from you? Popular New Albums From Your Friends - + Oblíbená nová alba vašich přátel Most Played Playlists - + Nejvíce poslouchané seznamy skladeb Most Played Tracks You Don't Have - + Nejvíce poslouchané písně, jež neznáte @@ -1630,77 +1632,77 @@ connect and stream from you? Facebook - + Facebook Twitter - + Twitter Tweet - + Zpráva Listening to "%1" by %2. %3 - + Poslouchá "%1" od %2, %3 Listening to "%1" by %2 on "%3". %4 - + Poslouchá "%1" od %2 na "%3", %4 %1 characters left - + Zbývá %1 znaků SourceDelegate - + Track - + Skladba - + Album - + Album - + Artist - + Umělec - + Local - + Místní - + Top 10 - + Nejlepších deset - + All available tracks - + Všechny dostupné skladby - - + + Show - + Ukázat - - + + Hide - + Skrýt @@ -1708,32 +1710,32 @@ connect and stream from you? Recent Albums - + Nedávná alba Latest Additions - + Nedávné přídavky Recently Played Tracks - + Nedávno poslouchané skladby New Additions - + Nové přídavky My recent activity - + Moje poslední činnosti Recent activity from %1 - + Poslední činnosti od %1 @@ -1741,127 +1743,127 @@ connect and stream from you? Collection - + Sbírka Latest Additions - + Nedávné přídavky Recently Played - + Nedávno poslouchané SuperCollection - + Supersbírka Latest additions to your collection - + Nejnovější písně ve vaší sbírce Latest additions to %1's collection - + Nejnovější písně ve sbírce %1's Sorry, we could not find any recent additions! - + Promiňte, ale nepodařilo se najít žádné nedávné přídavky! Recently Played Tracks - + Nedávno poslouchané skladby Your recently played tracks - + Vaše nedávno poslouchané skladby %1's recently played tracks - + %1's nedávno poslouchaných skladeb Sorry, we could not find any recent plays! - + Promiňte, ale nepodařilo se najít žádné nedávno přehrávané skladby! SourceTreeView - + &Copy Link - + &Kopírovat odkaz - + &Delete %1 - + &Smazat %1 - + Add to my Playlists - + Přidat do mých seznamů skladeb - + Add to my Automatic Playlists - + Přidat do mých automatických seznamů skladeb - + Add to my Stations - + Přidat do mých stanic - + &Export Playlist - + &Vyvést seznam skladeb - + playlist - + Seznam skladeb - + automatic playlist - + Automatický seznam skladeb - + station - + Stanice - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Chcete smazat %1 <b>"%2"</b>? - + Delete - + Smazat - + Save XSPF - + Uložit XSPF - + Playlists (*.xspf) - + Seznamy skladeb (*.xspf) @@ -1869,72 +1871,72 @@ connect and stream from you? Group - + Skupina Collection - + Sbírka Playlist - + Seznam skladeb Automatic Playlist - + Automatický seznam skladeb Station - + Stanice Browse - + Procházet Search History - + Historie hledání My Music - + Moje hudba SuperCollection - + Supersbírka Dashboard - + Přístrojová deska Recently Played - + Nedávno poslouchané Charts - + Žebříčky New Releases - + Novinky Friends - + Přátelé @@ -1942,57 +1944,57 @@ connect and stream from you? Configure your Spotify account - + Nastavit účet u Spotify Username or Facebook Email - + Uživatelské jméno nebo e-mail pro Facebook Log In - + Přihlášení Right click on any Tomahawk playlist to sync it to Spotify. - + Klepnutí pravým tlačítkem myši na jakýkoli seznam skladeb Tomahawk pro jeho seřízení se službou Spotify. Select All - + Vybrat vše Sync Starred tracks to Loved tracks - + Seřídit Starred Tracks s nejmilejšími písněmi High Quality Streams - + Vysoce kvalitní proudy Spotify playlists to keep in sync: - + Seznamy Spotify, které chcete seřídit: Delete Tomahawk playlist when removing synchronization - + Smazat seznamy skladeb v Tomahawku při odstranění seřízení Username: - + Uživatelské jméno: Password: - + Heslo: @@ -2000,7 +2002,7 @@ connect and stream from you? Delete associated Spotify playlist? - + Chcete smazat příslušný seznam skladeb Spotify? @@ -2008,17 +2010,17 @@ connect and stream from you? Copy Artist Link - + Kopírovat odkaz pro tohoto umělce Copy Album Link - + Kopírovat odkaz pro toto album Copy Track Link - + Kopírovat odkaz pro tuto skladbu @@ -2026,32 +2028,32 @@ connect and stream from you? Add Account - + Přidat účet Remove - + Odstranit %1 downloads - + %1 stažení Online - + Připojený Connecting... - + Připojuje se... Offline - + Nepřipojený @@ -2059,12 +2061,12 @@ connect and stream from you? Manual Install Required - + Je potřeba ruční instalace Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - + Bohužel není instalace tohoto řešitele ve vašem systému možná.<br/><br/>Použijte, prosím, "Instalovat ze souboru" a nainstalujte jej ručněl. Další informace naleznete zde:<br/><br/>http://www.tomahawk-player.org/resolvers/%1 @@ -2072,22 +2074,22 @@ connect and stream from you? Configure this Google Account - + Nastavit tento účet u služby Google Google Address: - + Adresa Google: Enter your Google login to connect with your friends using Tomahawk! - + Zadejte své přihlášení Google a spojte se pomocí Tomahawku s vašimi přáteli! username@gmail.com - + uživatel@gmail.com @@ -2095,7 +2097,7 @@ connect and stream from you? Connect to Google Talk to find your friends - + Spojit se s Google Talk kvůli nalezení přátel @@ -2103,17 +2105,17 @@ connect and stream from you? Enter Google Address - + Zadat adresu Google Add Friend - + Přidat přítele Enter Google Address: - + Adresa Google: @@ -2121,7 +2123,7 @@ connect and stream from you? Scrobble your tracks to last.fm, and find freely downloadable tracks to play - + Odesílat informace o poslouchaných skladbách Last.fm a poslouchat volně dostupné skladby @@ -2129,60 +2131,60 @@ connect and stream from you? Testing... - + Zkouší se... Test Login - + Vyzkoušet přihlášení Importing %1 e.g. Importing 2012/01/01 - + Zavádí se %1 Importing History... - + Zavádí se historie... History Incomplete. Resume Text on a button that resumes import - + Historie neúplná. Pokračovat Playback History Imported - + Zavedena historie přehrávání Failed - + Nepodařilo se Success - + Úspěch Could not contact server - + Nepodařilo se spojit se se serverem Synchronizing... - + Seřizuje se... Synchronization Finished - + Seřizování dokončeno @@ -2190,47 +2192,47 @@ connect and stream from you? Sync with Spotify - + Seřídit se Spotify Re-enable syncing with Spotify - + Zapnout znovu seřizování se Spotify Create local copy - + Vytvořit místní kopii Subscribe to playlist changes - + Odebírat změny seznamu skladeb Re-enable playlist subscription - + Zapnout znovu odběr seznamu skladeb Stop subscribing to changes - + Zastavit odběr změn Enable Spotify collaborations - + Zapnout spolupráci se Spotify Disable Spotify collaborations - + Vypnout spolupráci se Spotify Stop syncing with Spotify - + Zastavit seřizování se Spotify @@ -2238,28 +2240,28 @@ connect and stream from you? Logging in... - + Přihlašuje se... Failed: %1 - + Nepodařilo se: %1 Logged in as %1 - + Přihlášen jako %1 Log Out - + Odhlásit se Log In - + Přihlásit se @@ -2267,7 +2269,7 @@ connect and stream from you? Play music from and sync your playlists with Spotify Premium - + Přehrávat hudbu a seřizovat své seznamy skladeb se Spotify Premium @@ -2275,7 +2277,7 @@ connect and stream from you? Connect to your Twitter followers. - + Spojte se se svými druhy u služby Twitter. @@ -2285,32 +2287,32 @@ connect and stream from you? Tweet! - + Zpráva! Status: No saved credentials - + Stav: Žádné uložené přihlašovací údaje Authenticate - + Ověřit pravost Status: Credentials saved for %1 - + Stav: Přihlašovací údaje uloženy pro %1 De-authenticate - + Zrušit ověření pravosti @@ -2321,87 +2323,90 @@ connect and stream from you? Tweetin' Error - + Chyba zpravodajství The credentials could not be verified. You may wish to try re-authenticating. - + Přihlašovací údaje k účtu se nepodařilo ověřit. +Měl byste ještě jednou zkusit ověření pravosti. Status: Error validating credentials - + Stav: Chyba při schvalování přihlašovacích údajů. Žádné uložené přihlašovací údaje Global Tweet - + Souhrnná zpráva Direct Message - + Soukromá zpráva Send Message! - + Poslat zprávu! @Mention - + @zmínka Send Mention! - + Poslat zmínku! You must enter a user name for this type of tweet. - + Pro tento druh zprávy musíte zadat své uživatelské jméno. Your saved credentials could not be loaded. You may wish to try re-authenticating. - + Vaše uložené přihlašovací údaje se nepodařilo nahrát. +Měl byste ještě jednou zkusit ověření pravosti. Your saved credentials could not be verified. You may wish to try re-authenticating. - + Vaše uložené přihlašovací údaje se nepodařilo potvrdit. +Měl byste ještě jednou zkusit ověření pravosti. There was an error posting your status -- sorry! - + Při zveřejňování vašeho stavu se vyskytla chyba. Je nám to líto! Tweeted! - + Zpráva odeslána! Your tweet has been posted! - + Vaše zpráva byla zveřejněna! There was an error posting your direct message -- sorry! - + Při zasílání vaší soukromé zprávy se vyskytla chyba. Je nám to líto! Your message has been posted! - + Vaše zpráva byla zaslána! @@ -2409,7 +2414,7 @@ You may wish to try re-authenticating. Log on to your Jabber/XMPP account to connect to your friends - + Přihlašte se a použijte svůj účet u služby Jabber/XMPP pro spojení se s vašimi přáteli @@ -2418,7 +2423,7 @@ You may wish to try re-authenticating. Local Network - + Místní síť @@ -2426,12 +2431,12 @@ You may wish to try re-authenticating. Local Network - + Místní síť Automatically connect to Tomahawks on the local network - + Automaticky se spojit s ostatními Tomahawky v místní síti @@ -2439,79 +2444,79 @@ You may wish to try re-authenticating. &Play - + &Přehrát Add to &Queue - + Přidat do řa&dy Continue Playback after this &Track - + Po této skladbě &pokračovat v přehrávání Stop Playback after this &Track - + Po této skladbě &zastavit přehrávání &Love - + &Oblíbená píseň &Go to "%1" - + &Jít na "%1" Go to "%1" - + Jít na "%1" &Copy Track Link - + &Kopírovat odkaz pro tuto skladbu Copy Album &Link - + Kopírovat odkaz pro toto &album Copy Artist &Link - + Kopírovat odkaz pro tohoto &umělce Un-&Love - + Zrušit zařazení mezi o&blíbené písně &Delete Items - + &Odstranit položky Properties... - + Vlastnosti... &Delete Item - + Odstranit &položku @@ -2519,32 +2524,32 @@ You may wish to try re-authenticating. playlist - + Seznam skladeb artist - + Umělec track - + Skladba album - + Album Fetching %1 from database - + Natahuje se %1 z databáze Parsing %1 %2 - + Zpracovává se %1 %2 @@ -2552,7 +2557,7 @@ You may wish to try re-authenticating. Click to collapse - + Klepnout pro složení @@ -2563,12 +2568,14 @@ You may wish to try re-authenticating. Could not find a playable track. Please change the filters or try again. - + Nepodařilo se najít žádnou přehratelnou skladbu. + +Změňte, prosím, filtr a zkuste to znovu. Failed to generate preview with the desired filters - + Nepodařilo se vytvořit náhled a vybraným filtrem @@ -2576,12 +2583,12 @@ Please change the filters or try again. Type: - + Typ: Generate - + Vytvořit @@ -2589,17 +2596,17 @@ Please change the filters or try again. Add some filters above to seed this station! - + Přidejte nějaké filtry pro spuštění této stanice! Press Generate to get started! - + Stiskněte Vytvořit, a začínáme! Add some filters above, and press Generate to get started! - + Přidejte nějaké filtry výše a stiskněte Vytvořit, a jde se na to! @@ -2609,7 +2616,9 @@ Please change the filters or try again. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - + Stanice už nemá žádné další skladby! + +Zkuste vyladit filtry pro nové písně. @@ -2622,23 +2631,23 @@ Try tweaking the filters for a new set of songs to play. is - + je from user - + od uživatele No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings - + Nenalezeni žádní uživatelé se zapnutým katalogem EchoNest. Pokuste se tuto volbu zapnout v nastavení pod Sbírka similar to - + podobný @@ -2649,7 +2658,7 @@ Try tweaking the filters for a new set of songs to play. Less - + Méně @@ -2660,304 +2669,304 @@ Try tweaking the filters for a new set of songs to play. More - + Více 0 BPM - + 0 ÚZM 500 BPM - + 500 ÚZM 0 secs - + 0 s 3600 secs - + 3600 s -100 dB - + -100 dB 100 dB - + 100 dB Major - + Dur Minor - + Moll C - + C C Sharp - + Cis D - + D E Flat - + Es E - + V F - + F F Sharp - + Fis G - + G A Flat - + As A - + A B Flat - + B B - + H Ascending - + Vzestupně Descending - + Sestupně Tempo - + Tempo Duration - + Doba trvání Loudness - + Hlasitost Artist Familiarity - + Podobnost umělce Artist Hotttnesss - + Oblíbenost umělce Song Hotttnesss - + Oblíbenost písně Latitude - + Stupeň zeměpisné šířky Longitude - + Stupeň zeměpisné délky Mode - + Režim Key - + Klíč Energy - + Energie Danceability - + Tanečnost only by ~%1 - + jen od %1 similar to ~%1 - + podobné %1 with genre ~%1 - + ze žánru %1 from no one - + od nikoho My Collection - + Moje sbírka from my radio - + z mého rádia from %1 radio - + z rádia %1 Variety - + Rozmanitost Adventurousness - + Dobrodružnost very low - + velmi nízká low - + nízká moderate - + přiměřená high - + vysoká very high - + velmi vysoká with %1 %2 - + s %1 %2 about %1 BPM - + přibližně %1 ÚZM about %n minute(s) long - + přibližně %n minutu dlouhápřibližně %n minuty dlouhápřibližně %n minut dlouhá about %1 dB - + přibližně %1 dB at around %1%2 %3 - + asi na %1%2 %3 in %1 - + v %1 in a %1 key - + v tónině %1 sorted in %1 %2 order - + tříděno podle %1 %2 with a %1 mood - + s náladou %1 in a %1 style - + ve stylu %1 @@ -2965,30 +2974,30 @@ Try tweaking the filters for a new set of songs to play. Error fetching Grooveshark information from the network! - + Nepodařilo se nahrát data Grooveshark. Chyba při natahování informací ze sítě! Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Všeobecně nejlepší - + Artists - + Umělci - + Albums - + Alba - + Tracks - + Skladby @@ -2996,12 +3005,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk is playing "%1" by %2%3. - + Tomahawk hraje "%1" od %2%3. on "%1" - + na "%1" @@ -3009,35 +3018,35 @@ Try tweaking the filters for a new set of songs to play. Top Tracks - + Nejlepší skladby Loved Tracks - + Nejmilejší skladby Hyped Tracks - + Zveličené skladby Top Artists - + Nejlepší umělci Hyped Artists - + Zveličení umělci Tomahawk::InfoSystem::NewReleasesPlugin - + Albums - + Alba @@ -3045,7 +3054,7 @@ Try tweaking the filters for a new set of songs to play. Listening to "%1" by %2 and loving it! %3 - + Poslouchám "%1" od %2 a líbí se mi to! %3 @@ -3053,7 +3062,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching iTunes information from the network! - + Nepodařilo se nahrát data iTunes. Chyba při natahování informací ze sítě! @@ -3061,41 +3070,41 @@ Try tweaking the filters for a new set of songs to play. New Playlist - + Nový seznam skladeb Failed to save tracks - + Nepodařilo se uložit skladby Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Některé skladby v seznamu skladeb neobsahují ani umělce ani název. Tyto budou přehlíženy. XSPF Error - + Chyba XSPF This is not a valid XSPF playlist. - + Toto není platný seznam skladeb XSPF. Tomahawk::LatchManager - + &Catch Up - + &Skočit na nynější název - - + + &Listen Along - + &Poslouchat @@ -3104,12 +3113,12 @@ Try tweaking the filters for a new set of songs to play. Would you like to delete the playlist <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Chcete smazat seznam skladeb <b>"%2"</b>? Delete - + Smazat @@ -3117,37 +3126,37 @@ Try tweaking the filters for a new set of songs to play. and - + a You - + Tobě you - + tobě and - + a %n other(s) - + %n dalšímu%n dalším%n dalším %n people - + %n člověku%n lidem%n lidem loved this track - + se tato skladba líbí @@ -3155,7 +3164,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Rdio information from the network! - + Nepodařilo se nahrát data Rdio. Chyba při natahování informací ze sítě! @@ -3163,7 +3172,7 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! - + Nepodařilo se zpracovat zkrácený odkaz (síťová chyba)! @@ -3171,7 +3180,7 @@ Try tweaking the filters for a new set of songs to play. Track '%1' by %2 is not streamable. - + Skladba '%1' od %2 přehratelná. @@ -3180,42 +3189,42 @@ Try tweaking the filters for a new set of songs to play. Scanning (%L1 tracks) - + Prohledává se (%L1 skladeb) Scanning - + Prohledává se Checking - + Přezkušuje se Syncing - + Seřizuje se Importing - + Zavádí se Saving (%1%) - + Ukládá se (%1%) Online - + Připojený Offline - + Nepřipojený @@ -3223,7 +3232,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Spotify information from the network! - + Nepodařilo se nahrát data Spotify. Chyba při natahování informací ze sítě! @@ -3231,15 +3240,15 @@ Try tweaking the filters for a new set of songs to play. Automatically update from XSPF - + Aktualizovat automaticky z XSPF TomahawkApp - + My Collection - + Moje sbírka @@ -3247,21 +3256,22 @@ Try tweaking the filters for a new set of songs to play. Twitter PIN - + PIN pro Twitter After authenticating on Twitter's web site, enter the displayed PIN number here: - + Po potvrzení pravosti Tomahawku na internetových stránkách +služby Twitter zde zadejte tam zobrazené číslo PIN: TomahawkSettings - + Local Network - + Místní síť @@ -3269,48 +3279,48 @@ enter the displayed PIN number here: &Stop Playback after current Track - + Po této skladbě &zastavit přehrávání Hide Tomahawk Window - + Skrýt okno s Tomahawkem Show Tomahawk Window - + Ukázat okno s Tomahawkem Currently not playing. - + Nyní se nic nepřehrává. Play - + Přehrát Pause - + Pozastavit &Love - + &Označit za oblíbenou píseň Un-&Love - + Zrušit zařazení mezi o&blíbené písně &Continue Playback after current Track - + Po této skladbě &pokračovat v přehrávání @@ -3318,183 +3328,183 @@ enter the displayed PIN number here: Tomahawk - + Tomahawk Back - + Zpět Go back one page - + Jít o jednu stranu zpět Forward - + Vpřed Go forward one page - + Jít o jednu stranu vpřed Hide Menu Bar - + Skrýt pruh s hlavní nabídkou Show Menu Bar - + Ukázat pruh s hlavní nabídkou Search for any artist, album or song... - + Hledat umělce, album nebo píseň... &Main Menu - + Hlavní &nabídka Connect To Peer - + Spojit se s jiným Tomahawkem Enter peer address: - + Zadejte adresu protějšku: Enter peer port: - + Zadejte přípojku protějšku: Enter peer key: - + Zadejte klíč protějšku: XSPF Error - + Chyba XSPF This is not a valid XSPF playlist. - + Toto není platný seznam skladeb XSPF. Failed to save tracks - + Nepodařilo se uložit skladby Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Některé skladby v seznamu skladeb neobsahují ani umělce ani název. Tyto budou přehlíženy. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. Ujistěte se, že máte nainstalováno vhodné jádro Phonona potřebné přídavné moduly. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. Station - + Stanice Create New Station - + Vytvořit novou stanici Name: - + Název: Playlist - + Seznam skladeb Automatic Playlist - + Automatický seznam skladeb Pause - + Pozastavit &Play - + &Přehrát Authentication Error - + Chyba při ověřování Error connecting to SIP: Authentication failed! - + Chyba spojení se SIP: Potvrzení pravosti se nezdařilo! %1 by %2 track, artist name - + %1 od %2 %1 - %2 current track, some window title - + %1 - %2 <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1</h2> - + <h2><b>Tomahawk %1</h2> Copyright 2010 - 2012 - + Autorské právo 2010 - 2012 Thanks to: - + Poděkování: About Tomahawk - + O Tomahawku @@ -3502,7 +3512,7 @@ enter the displayed PIN number here: Top Hits - + Nejlepší písně @@ -3510,45 +3520,45 @@ enter the displayed PIN number here: Similar Tracks - + Podobné skladby Sorry, but we could not find similar tracks for this song! - + Promiňte, ale nepodařilo se najít podobné skladby pro tuto píseň! You've listened to this track %n time(s). - + Tuto píseň jste si poslechl jednou.Tuto píseň jste si poslechl %n krát.Tuto píseň jste si poslechl %n krát. You've never listened to this track before. - + Tuto píseň jste si ještě nikdy neposlechl. You first listened to it on %1. - + Tuto píseň jste si poprvé poslechl %1. You've listened to %1 %n time(s). - + %1 jste si poslechl jednou.%1 jste si poslechl %n krát.%1 jste si poslechl %n krát. You've never listened to %1 before. - + %1 jste si předtím ještě nikdy neposlechl. TrackView - + Sorry, your filter '%1' did not match any results. - + Promiňte, vašemu filtru '%1' se nepodařilo najít žádné výsledky. @@ -3557,13 +3567,13 @@ enter the displayed PIN number here: from streaming artist - track from friend - + od to streaming artist - track to friend - + komu @@ -3571,7 +3581,7 @@ enter the displayed PIN number here: Unknown - + Neznámý @@ -3579,27 +3589,27 @@ enter the displayed PIN number here: All Artists - + Všichni umělci My Collection - + Moje sbírka Collection of %1 - + Sbírka %1 TreeView - + Sorry, your filter '%1' did not match any results. - + Promiňte, vašemu filtru '%1' se nepodařilo najít žádné výsledky. @@ -3607,27 +3617,27 @@ enter the displayed PIN number here: Configure this Twitter account - + Nastavit tento účet u služby Twitter The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. - + Přídavný modul pro Twitter vám umožňuje se spojit s dalšími přáteli u služby Twitter, kteří provozují Tomahawk, přehrávat jejich hudbu, posílat zprávy. Status: No saved credentials - + Stav: Žádné uložené přihlašovací údaje Authenticate with Twitter - + Ověřit se službou Twitter Twitter Connections - + Spojení Twitter @@ -3637,37 +3647,41 @@ If you only want to post tweets, you're done. If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! You can re-send a sync message at any time simply by sending another tweet using the button. - + Pokud jen chcete zasílat zprávy, jste nyní hotovi. + +Pokud chcete Tomahawk spojit s přáteli používajícími službu Twitter, vyberte nyní typ zpávy a stiskněte tlačítko níže, abyste odeslali seřizovací zprávu. Musíte se vzájemně na Twitter sledovat, protože Tomahawk používá při spojení 'Direct Messages' (soukromá zpráva). Buďte trpěliví -- prvopočáteční spojení může trvat i několik minut! + +Kdykoli můžete odeslat novou seřizovací zprávu. Select the kind of tweet you would like, then press the button to post it: - + Vyberte požadovaný druh zprávy a klepněte na tlačítko pro jeho odeslání: Global Tweet - + Souhrnná zpráva @Mention - + @zmínka Direct Message - + Soukromá zpráva e.g. @tomahawk - + např. @tomahawk Send Message - + Poslat zprávu @@ -3675,7 +3689,7 @@ You can re-send a sync message at any time simply by sending another tweet using Enter Twitter username - + Zadat uživatelské jméno u služby Twitter @@ -3683,42 +3697,42 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + Tento seznam skladeb je prázdný! After you have scanned your music collection you will find your tracks right here. - + Poté co byla prohledána vaše hudební sbírka, najdete své skladby přesně zde. This collection is empty. - + Tato sbírka je prázdná. SuperCollection - + Supersbírka Combined libraries of all your online friends - + Spojená sbírka všech vašich přátel Recently Played Tracks - + Nedávno poslouchané skladby Recently played tracks from all your friends - + Naposledy poslouchané skladby všech vašich přátel Sorry, we could not find any recent plays! - + Promiňte, ale nepodařilo se najít žádné nedávno poslouchané skladby! @@ -3726,32 +3740,32 @@ You can re-send a sync message at any time simply by sending another tweet using Recent Additions - + Nedávné přídavky Newest Stations & Playlists - + Nejnovější stanice a seznamy skladeb Recently Played Tracks - + Nedávno poslouchané skladby Recently played tracks - + Nedávno poslouchané skladby No recently created playlists in your network. - + Ve vaší síti nejsou žádné nedávno vytvořené seznamy skladeb. Welcome to Tomahawk - + Vítejte v Tomahawku @@ -3759,7 +3773,7 @@ You can re-send a sync message at any time simply by sending another tweet using Charts - + Žebříčky @@ -3767,7 +3781,7 @@ You can re-send a sync message at any time simply by sending another tweet using Wikipedia - + Wikipedie @@ -3777,26 +3791,30 @@ You can re-send a sync message at any time simply by sending another tweet using Terms for %1: - + +Pojmy pro %1: + No terms found, sorry. - + Nenalezen žádný pojem. Promiňte. Hotttness for %1: %2 - + +Oblíbenost %1: %2 Familiarity for %1: %2 - + +Stupeň známosti %1: %2 @@ -3805,7 +3823,10 @@ Lyrics for "%1" by %2: %3 - + Slova písně pro "%1" od %2: + +%3 + @@ -3813,22 +3834,22 @@ Lyrics for "%1" by %2: Failed to parse contents of XSPF playlist - + Nepodařilo se přečíst obsah seznamu skladeb XSPF Some playlist entries were found without artist and track name, they will be omitted - + Nekteré záznamy v seznamu skladeb byly nalezeny bez umělce nebo názvu skladby, a proto se přehlíží Failed to fetch the desired playlist from the network, or the desired file does not exist - + Chyba při nahrávání požadovaného seznamu skladeb ze sítě, nebo požadovaný soubor neexistuje New Playlist - + Nový seznam skladeb @@ -3836,78 +3857,78 @@ Lyrics for "%1" by %2: Xml stream console - + Konzole proudu XML Filter - + Filtr Save log - + Uložit zápis Disabled - + Vypnuto By JID - + Podle JID By namespace uri - + Podle jmenného prostoru URI By all attributes - + Podle všech vlastností Visible stanzas - + Viditelné sloky Information query - + Dotaz na informace Message - + Zpráva Presence - + Přítomnost Custom - + Vlastní Close - + Zavřít Save XMPP log to file - + Uložit zápis XMPP OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt) - + Formát OpenDocument (*.odf);;Soubor HTML (*.html);;Prostý text (*.txt) @@ -3915,72 +3936,72 @@ Lyrics for "%1" by %2: Xmpp Configuration - + Nastavení XMPP Configure this Xmpp account - + Nastavit tento účet u XMPP Enter your Xmpp login to connect with your friends using Tomahawk! - + Zadejte své přihlášení u Xmpp a spojte se pomocí Tomahawku s vašimi přáteli! Login Information - + Informace přihlášení Xmpp ID: - + Uživatel XMPP: e.g. user@example.com - + např. uživatel@příklad.cz Password: - + Heslo: An account with this name already exists! - + Ǔčet se stejným názvem už existuje! Advanced Xmpp Settings - + Pokročilá nastavení XMPP Server: - + Server: Port: - + Přípojka: Lots of servers don't support this (e.g. GTalk, jabber.org) - + Mnoho serverů toto nepodporuje (např. GTalk, jabber.org) Publish currently playing track - + Zveřejnit nyní přehrávanou skladbu Enforce secure connection - + Vynutit bezpečné spojení @@ -3988,112 +4009,112 @@ Lyrics for "%1" by %2: User Interaction - + Interakce uživatele Host is unknown - + Hostitel je neznámý Item not found - + Záznam nenalezen Authorization Error - + Chyba při ověřování Remote Stream Error - + Chyba spojení Remote Connection failed - + Chyba spojení Internal Server Error - + Chyba vnitřního serveru System shutdown - + Vypnutí systému Conflict - + Střet Unknown - + Neznámý Do you want to add <b>%1</b> to your friend list? - + Chcete přidat <b>%1</b> ke svým přátelům? No Compression Support - + Žádná podpora pro kompresi Enter Jabber ID - + Zadat ID pro Jabber No Encryption Support - + Žádná podpora pro šifrování No Authorization Support - + Žádná podpora pro povolování No Supported Feature - + Žádná podporovaná vlastnost Add Friend - + Přidat přítele Enter Xmpp ID: - + Identifikátor uživatele XMPP: Add Friend... - + Přidat přítele... XML Console... - + Konzole XML... I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Promiňte-- Jsem jen automatická přítomnost používaná přehrávačem Tomahawk (http://gettomahawk.com). Pokud jste dostal tuto zprávu, osoba, již se pokoušíte zastihnout, pravděpodobně není přihlášena. Zkuste to proto, prosím, později znovu! Authorize User - + Povolit uživatele @@ -4101,17 +4122,17 @@ Lyrics for "%1" by %2: Local Network configuration - + Nastavení místní sítě This plugin will automatically find other users running Tomahawk on your local network - + Tento přídavný modul najde další uživatele provozující Tomahawk ve vaší místní síti Connect automatically when Tomahawk starts - + Spojit automaticky při spuštění Tomahawku \ No newline at end of file diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 7dac2bb004..166c138ae0 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -921,7 +921,7 @@ erlauben sich mit dir zu verbinden? Vorwärts - + Properties Eigenschaften @@ -1250,67 +1250,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 @@ -1663,44 +1663,44 @@ erlauben sich mit dir zu verbinden? SourceDelegate - + Track Lied - + Album Album - + Artist Künstler - + Local Lokal - + Top 10 Top 10 - + All available tracks Alle verfügbaren Stücke - - + + Show Einblenden - - + + Hide Verstecken @@ -1800,68 +1800,68 @@ erlauben sich mit dir zu verbinden? SourceTreeView - + &Copy Link &Kopiere Link - + &Delete %1 &Lösche %1 - + Add to my Playlists Zu meinen Playlisten hinzufügen - + Add to my Automatic Playlists Zu meinen Automatischen Playlisten hinzufügen - + Add to my Stations Zu meinen Stationen hinzufügen - + &Export Playlist Playlist &exportieren - + playlist Playlist - + automatic playlist Automatische Playlist - + station Station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Möchtest du die %1 <b>"%2"</b> löschen? - + Delete Löschen - + Save XSPF XSPF speichern - + Playlists (*.xspf) Playlisten (*.xspf) @@ -2978,22 +2978,22 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top Allgemein - + Artists Künstler - + Albums Alben - + Tracks Stücke @@ -3042,7 +3042,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Alben @@ -3094,13 +3094,13 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::LatchManager - + &Catch Up Zum aktuellen Titel &springen - - + + &Listen Along &Mithören @@ -3244,7 +3244,7 @@ Versuch die Filter anzupassen für neue Lieder. TomahawkApp - + My Collection Meine Sammlung @@ -3267,7 +3267,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TomahawkSettings - + Local Network Lokales Netzwerk @@ -3554,7 +3554,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. @@ -3605,7 +3605,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 88109d01e0..2aec0e4348 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -920,7 +920,7 @@ connect and stream from you? Μπροστά - + Properties @@ -1249,67 +1249,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 μόλις τώρα @@ -1662,44 +1662,44 @@ connect and stream from you? SourceDelegate - + Track Κομμάτι - + Album Άλμπουμ - + Artist Καλλιτέχνης - + Local Τοπικό - + Top 10 Κορυφαία 10 - + All available tracks Όλα τα διαθέσιμα τραγούδια - - + + Show Προβολή - - + + Hide Απόκρυψη @@ -1799,68 +1799,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Αντιγραφή Υπερσυνδέσμου - + &Delete %1 &Διαγραφή %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist &Εξαγωγή Λίστας Αναπαραγωγής - + playlist - + automatic playlist - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Θέλετε να διαγράψετε την %1 <b>"%2"</b>; - + Delete Διαγραφή - + Save XSPF Αποθήκευση XSPF - + Playlists (*.xspf) Λίστες Αναπαραγωγής (*.xspf) @@ -2979,22 +2979,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -3043,7 +3043,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3095,13 +3095,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up - - + + &Listen Along @@ -3245,7 +3245,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Η Συλλογή μου @@ -3267,7 +3267,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3554,7 +3554,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Συγγνώμη, το φίλτρο «%1» δεν αντιστοίχισε αποτελέσματα. @@ -3605,7 +3605,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 dc443bbda5..078cd80ec6 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -921,7 +921,7 @@ connect and stream from you? Forward - + Properties Properties @@ -1250,67 +1250,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 @@ -1666,44 +1666,44 @@ connect and stream from you? SourceDelegate - + Track Track - + Album Album - + Artist Artist - + Local Local - + Top 10 Top 10 - + All available tracks All available tracks - - + + Show Show - - + + Hide Hide @@ -1803,68 +1803,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Copy Link - + &Delete %1 &Delete %1 - + Add to my Playlists Add to my Playlists - + Add to my Automatic Playlists Add to my Automatic Playlists - + Add to my Stations Add to my Stations - + &Export Playlist &Export Playlist - + playlist playlist - + automatic playlist automatic playlist - + station station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Would you like to delete the %1 <b>"%2"</b>? - + Delete Delete - + Save XSPF Save XSPF - + Playlists (*.xspf) Playlists (*.xspf) @@ -2983,22 +2983,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top Overall - + Artists Artists - + Albums Albums - + Tracks Tracks @@ -3047,7 +3047,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albums @@ -3099,13 +3099,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up &Catch Up - - + + &Listen Along &Listen Along @@ -3249,7 +3249,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection My Collection @@ -3272,7 +3272,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Local Network @@ -3559,7 +3559,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Sorry, your filter '%1' did not match any results. @@ -3610,7 +3610,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 706fa3e3a6..d450651174 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -921,7 +921,7 @@ conectarse a usted y transmitir música? Adelante - + Properties Propiedades @@ -1250,67 +1250,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 @@ -1666,44 +1666,44 @@ y estaciones basadas en sus gustos personales. SourceDelegate - + Track Pista - + Album Álbum - + Artist Artista - + Local Local - + Top 10 Top 10 - + All available tracks Todas las pistas disponibles - - + + Show Mostrar - - + + Hide Ocultar @@ -1803,68 +1803,68 @@ y estaciones basadas en sus gustos personales. SourceTreeView - + &Copy Link &Copiar enlace - + &Delete %1 &Eliminar %1 - + Add to my Playlists Añadir a mis listas de reproducción - + Add to my Automatic Playlists Añadir a mis listas de reproducción automáticas - + Add to my Stations Añadir a mis estaciones - + &Export Playlist &Exportar lista de reproducción - + playlist lista de reproducción - + automatic playlist lista de reproducción automática - + station estación - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? ¿Borrar lista de reproducción %1 <b>"%2"</b>? - + Delete Eliminar - + Save XSPF Guardar XSPF - + Playlists (*.xspf) Listas de reproducción (*.xspf) @@ -2983,22 +2983,22 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top total - + Artists Artistas - + Albums Álbumes - + Tracks Pistas @@ -3047,7 +3047,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Álbumes @@ -3099,13 +3099,13 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::LatchManager - + &Catch Up &Actualizar - - + + &Listen Along &Escuchar juntos @@ -3249,7 +3249,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. TomahawkApp - + My Collection Mi colección @@ -3272,7 +3272,7 @@ introduzca su número PIN aquí: TomahawkSettings - + Local Network @@ -3559,7 +3559,7 @@ introduzca su número PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. Lo siento, tu filtro '%1' no ha encontrado resultados. @@ -3610,7 +3610,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 79767f313c..87b53e5546 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -921,7 +921,7 @@ yhdistää ja toistaa sinulta virtaa? Seuraava - + Properties Ominaisuudet @@ -1250,67 +1250,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 @@ -1668,44 +1668,44 @@ käyttäjäradion käyttöönottamiseksi SourceDelegate - + Track Kappale - + Album Albumi - + Artist Artisti - + Local Paikallinen - + Top 10 Kymmenen kärki - + All available tracks Kaikki saatavilla olevat kappaleet - - + + Show Näytä - - + + Hide Piilota @@ -1805,68 +1805,68 @@ käyttäjäradion käyttöönottamiseksi SourceTreeView - + &Copy Link &Kopioi linkki - + &Delete %1 &Poista %1 - + Add to my Playlists Lisää omiin soittolistoihin - + Add to my Automatic Playlists Lisää omiin automaattisiin soittolistoihin - + Add to my Stations Lisää omiin asemiin - + &Export Playlist &Vie soittolista - + playlist soittolistan - + automatic playlist automaattisen soittolistan - + station aseman - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Haluatko poistaa %1 <b>”%2”</b>? - + Delete Poista - + Save XSPF Tallenna XSPF - + Playlists (*.xspf) Soittolistat (*.xspf) @@ -2986,22 +2986,22 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Kokonaisuudessaan parhaat - + Artists Artistit - + Albums Albumit - + Tracks Kappaleet @@ -3050,7 +3050,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumit @@ -3102,13 +3102,13 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::LatchManager - + &Catch Up &Ota kiinni - - + + &Listen Along Kuuntele &mukana @@ -3252,7 +3252,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< TomahawkApp - + My Collection Oma kokoelma @@ -3275,7 +3275,7 @@ anna siellä näytetty PIN-koodi tähän: TomahawkSettings - + Local Network Paikallisverkko @@ -3562,7 +3562,7 @@ anna siellä näytetty PIN-koodi tähän: TrackView - + Sorry, your filter '%1' did not match any results. Valitettavasti suodattimesi ”%1” ei tuottanut yhtään tuloksia. @@ -3613,7 +3613,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 e97303bc3d..16e59fbb94 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -921,7 +921,7 @@ de se connecter et streamer de vous? Avancer - + Properties Propriétés @@ -1250,67 +1250,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 @@ -1663,44 +1663,44 @@ de se connecter et streamer de vous? SourceDelegate - + Track Piste - + Album Album - + Artist Artiste - + Local Local - + Top 10 Top 10 - + All available tracks Tous les titres disponibles - - + + Show Afficher - - + + Hide Masquer @@ -1800,68 +1800,68 @@ de se connecter et streamer de vous? SourceTreeView - + &Copy Link &Copier le lien - + &Delete %1 &Supprimer %1 - + Add to my Playlists Ajoute a mes listes de lecture - + Add to my Automatic Playlists Ajoute a mes listes de lecture automatique - + Add to my Stations Ajouter à mes stations - + &Export Playlist &Exporter la liste de lecture - + playlist liste de lecture - + automatic playlist liste de lecture automatique - + station station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Voulez-vous supprimer la %1 <b>"%2"</b>? - + Delete Supprimer - + Save XSPF Enregistrer XSPF - + Playlists (*.xspf) Listes de lecture (*.xspf) @@ -2980,22 +2980,22 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top global - + Artists Artistes - + Albums Albums - + Tracks Pistes @@ -3044,7 +3044,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albums @@ -3096,13 +3096,13 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::LatchManager - + &Catch Up &Rattraper son retard - - + + &Listen Along &Ecouter avec @@ -3246,7 +3246,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. TomahawkApp - + My Collection Ma Collection @@ -3269,7 +3269,7 @@ saisissez le numéro PIN ici : TomahawkSettings - + Local Network Réseau local @@ -3556,7 +3556,7 @@ saisissez le numéro PIN ici : TrackView - + Sorry, your filter '%1' did not match any results. Désolé, votre filtre '%1' ne correspond à aucun résultat. @@ -3607,7 +3607,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 20d3add403..1c6268cec2 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -920,7 +920,7 @@ connect and stream from you? Adiante - + Properties Propiedades @@ -1249,67 +1249,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 @@ -1662,44 +1662,44 @@ connect and stream from you? SourceDelegate - + Track Pista - + Album Álbum - + Artist Artista - + Local Local - + Top 10 Os 10 primeiros - + All available tracks Tódolas pistas dispoñíbeis - - + + Show Mostrar - - + + Hide Agochar @@ -1799,69 +1799,69 @@ connect and stream from you? SourceTreeView - + &Copy Link Copiar a &ligazón - + &Delete %1 &Borrar %1 - + Add to my Playlists Engadir ás miñas listas de reprodución - + Add to my Automatic Playlists Engadir ás miñas listas reprodución automática - + Add to my Stations Engadir á miña emisora - + &Export Playlist &Exportar a lista de reprodución - + playlist Lista de reprodución - + automatic playlist lista de reprodución automática - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Queres eliminar a %1 que se chama <b>«%2»</b>? - + Delete Borrar - + Save XSPF Gardar XSPF - + Playlists (*.xspf) Listas de reprodución (*.xspf) @@ -2981,22 +2981,22 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top xeral - + Artists Artistas - + Albums Álbums - + Tracks Pistas @@ -3045,7 +3045,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Álbums @@ -3097,13 +3097,13 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::LatchManager - + &Catch Up &Chistar - - + + &Listen Along &Escoitar xuntos @@ -3247,7 +3247,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. TomahawkApp - + My Collection A miña colección @@ -3269,7 +3269,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3557,7 +3557,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. O filtro «%1» non dá ningún resultado. @@ -3608,7 +3608,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 e06b43fbb4..5c4195a4a5 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1248,67 +1248,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 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link - + &Delete %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist - + playlist - + automatic playlist - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF - + Playlists (*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up - - + + &Listen Along @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3597,7 +3597,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 b661f3bcb6..45e38c005f 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -920,7 +920,7 @@ connect and stream from you? Előre - + Properties Tulajdonságok @@ -1248,67 +1248,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 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track Zeneszám - + Album Album - + Artist Előadó - + Local Helyi - + Top 10 Top 10 - + All available tracks Összes elérhető zeneszám - - + + Show Mutatás - - + + Hide Elrejtés @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link - + &Delete %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist - + playlist lejátszólista - + automatic playlist automatikus lejátszólista - + station rádióállomás - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete Törlés - + Save XSPF XSPF mentése - + Playlists (*.xspf) Lejátszólisták (*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumok @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up - - + + &Listen Along @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Saját kollekció @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3597,7 +3597,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 ba7facd299..24cfc80ba2 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1248,67 +1248,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 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track Traccia - + Album Album - + Artist Artista - + Local Locale - + Top 10 Top 10 - + All available tracks Tutte le tracce disponibili - - + + Show Mostra - - + + Hide Nascondi @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Copia link - + &Delete %1 &Cancella %1 - + Add to my Playlists Aggiungi alle mie playlist - + Add to my Automatic Playlists Aggiungi alle mie playlist automatiche - + Add to my Stations Aggiungi alle mie stazioni - + &Export Playlist &Esporta playlist - + playlist playlist - + automatic playlist playlist automatica - + station stazione - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Vuoi cancellare %1 <b>"%2"</b>? - + Delete - + Save XSPF Salva XSPF - + Playlists (*.xspf) Playlist (*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists Artisti - + Albums Album - + Tracks Tracce @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Album @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up &Raggiungilo - - + + &Listen Along &Ascolta assieme @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection La mia collezione @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Spiacente, il tuo filtro %1 non ha trovato nessun risultato. @@ -3597,7 +3597,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 83f37e51a6..1f0722ac23 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -921,7 +921,7 @@ connect and stream from you? 次へ - + Properties 情報 @@ -1250,67 +1250,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 たった今 @@ -1666,44 +1666,44 @@ connect and stream from you? SourceDelegate - + Track トラック - + Album アルバム - + Artist アーティスト - + Local ローカル - + Top 10 トップ10 - + All available tracks 利用可能トラック - - + + Show 表示 - - + + Hide 隠す @@ -1803,68 +1803,68 @@ connect and stream from you? SourceTreeView - + &Copy Link リンクをコピー - + &Delete %1 %1を削除 - + Add to my Playlists プレイリストに追加する - + Add to my Automatic Playlists 自動プレイリストに追加する - + Add to my Stations ステーションに追加する - + &Export Playlist プレイリストを書き出し - + playlist プレイリスト - + automatic playlist 自動プレイリスト - + station ステーション - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? <b>"%2"</b>と言う%1を削除しますか? - + Delete 削除 - + Save XSPF XSPFを保存する - + Playlists (*.xspf) プレイリスト (*.xspf) @@ -2983,22 +2983,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall もっともトップ - + Artists アーティスト - + Albums アルバム - + Tracks トラック @@ -3047,7 +3047,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums アルバム @@ -3099,13 +3099,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up 追いつける - - + + &Listen Along 共有聴取 @@ -3249,7 +3249,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection マイコレクション @@ -3272,7 +3272,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network ローカルネットワーク @@ -3559,7 +3559,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 @@ -3610,7 +3610,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index a0c3fae3d3..41e3274580 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -920,7 +920,7 @@ connect and stream from you? Pirmyn - + Properties @@ -1248,67 +1248,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 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track Takelis - + Album Albumas - + Artist Atlikėjas - + Local - + Top 10 Top 10 - + All available tracks Visi prieinami takeliai - - + + Show Rodyti - - + + Hide Slėpti @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Kopijuoti nuorodą - + &Delete %1 Paša&linti %1 - + Add to my Playlists Pridėti prie mano grojaraščių - + Add to my Automatic Playlists Pridėti prie mano automatinių grojaraščių - + Add to my Stations Pridėti prie mano stočių - + &Export Playlist - + playlist grojaraštis - + automatic playlist automatinis grojaraštis - + station stotis - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Ar norite pašalinti %1 <b>"%2"</b>? - + Delete Pašalinti - + Save XSPF Išsaugoti XSPF - + Playlists (*.xspf) Grojaraščiai (*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists Atlikėjai - + Albums Albumai - + Tracks Takeliai @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumai @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up &Pasivyti - - + + &Listen Along K&lausytis kartu @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Mano kolekcija @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3597,7 +3597,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 a2d5d04a88..4f138c77df 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -921,7 +921,7 @@ połączyć się i strumieniować od ciebie? - + Properties @@ -1250,67 +1250,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ą @@ -1663,44 +1663,44 @@ połączyć się i strumieniować od ciebie? SourceDelegate - + Track Utwór - + Album Album - + Artist Artysta - + Local Lokalny - + Top 10 Top 10 - + All available tracks Wszystkie dostępne utwory - - + + Show Pokaż - - + + Hide Ukryj @@ -1800,68 +1800,68 @@ połączyć się i strumieniować od ciebie? SourceTreeView - + &Copy Link &Kopiuj Link - + &Delete %1 &Usuń %1 - + Add to my Playlists Dodaj do moich List odtwarzania - + Add to my Automatic Playlists Dodaj do moich Automatycznych list odtwarzania - + Add to my Stations Dodaj do moich Stacji - + &Export Playlist &Eksportuj Listę - + playlist lista odtwarzania - + automatic playlist automatyczna lista odtwarzania - + station stacja - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF Zapisz XSPF - + Playlists (*.xspf) Listy (*.xspf) @@ -2980,22 +2980,22 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top Wszechczasów - + Artists Artyści - + Albums Albumy - + Tracks Utwory @@ -3044,7 +3044,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumy @@ -3096,13 +3096,13 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::LatchManager - + &Catch Up &Dogoń - - + + &Listen Along &Słuchaj razem @@ -3246,7 +3246,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. TomahawkApp - + My Collection Moja Kolekcja @@ -3269,7 +3269,7 @@ wprowadź pokazany numer PIN tutaj: TomahawkSettings - + Local Network @@ -3556,7 +3556,7 @@ wprowadź pokazany numer PIN tutaj: TrackView - + Sorry, your filter '%1' did not match any results. Przepraszamy, twój filtr '%1' nie dopasował żadnych wyników. @@ -3607,7 +3607,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 30d2dadade..c5257c0c61 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -921,7 +921,7 @@ se conecte e faça o stream de você? Avançar - + Properties Propriedades @@ -1250,67 +1250,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 @@ -1663,44 +1663,44 @@ se conecte e faça o stream de você? SourceDelegate - + Track Faixa - + Album Álbum - + Artist Artista - + Local Local - + Top 10 10 Mais - + All available tracks Todas as faixas disponíveis - - + + Show Mostrar - - + + Hide Ocultar @@ -1800,68 +1800,68 @@ se conecte e faça o stream de você? SourceTreeView - + &Copy Link &Copiar link - + &Delete %1 &Excluir %1 - + Add to my Playlists Adicionar às minhas Playlists - + Add to my Automatic Playlists Adicionar às minhas Playlists Automáticas - + Add to my Stations Adicionar às minhas Estações - + &Export Playlist &Exportar Playlist - + playlist playlist - + automatic playlist playlist automática - + station estação - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Gostaria de deletar a %1 <b>"%2"</b>? - + Delete Excluir - + Save XSPF Salvar XSPF - + Playlists (*.xspf) Playlists (*.xspf) @@ -2980,22 +2980,22 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Classificação Geral - + Artists Artistas - + Albums Álbuns - + Tracks Faixas @@ -3044,7 +3044,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Álbuns @@ -3096,13 +3096,13 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::LatchManager - + &Catch Up &Alcançar - - + + &Listen Along &Ouvir Junto @@ -3246,7 +3246,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. TomahawkApp - + My Collection Minha Coleção @@ -3269,7 +3269,7 @@ colocar o número PIN mostrado aqui: TomahawkSettings - + Local Network Rede local @@ -3556,7 +3556,7 @@ colocar o número PIN mostrado aqui: TrackView - + Sorry, your filter '%1' did not match any results. Desculpe, o seu filtro '%1' não encontreou nenhum resultado. @@ -3607,7 +3607,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 2a72f6082e..9b884f77e1 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -925,7 +925,7 @@ connect and stream from you? Вперед - + Properties Свойства @@ -1026,7 +1026,7 @@ connect and stream from you? Accuracy - + Совпадение @@ -1080,7 +1080,7 @@ connect and stream from you? played %1 by %2 - Песня %1 проиграна %2 + Песня %1 воспроизводилась %2 @@ -1254,67 +1254,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 только что @@ -1667,44 +1667,44 @@ connect and stream from you? SourceDelegate - + Track Трек - + Album Альбом - + Artist Исполнитель - + Local Локальная - + Top 10 Топ 10 - + All available tracks Доступные песни - - + + Show Показать - - + + Hide Спрятать @@ -1804,68 +1804,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Скопировать Cсылку - + &Delete %1 &Удалить %1 - + Add to my Playlists Добавить к моим Плейлистам - + Add to my Automatic Playlists Добавить к моим Автоматическим Плейлистам - + Add to my Stations Добавить к моим Станциям - + &Export Playlist &Экспорт Плейлиста - + playlist плейлист - + automatic playlist автоматический плейлист - + station станция - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Вы хотите удалить %1 <b>"%2"</b>? - + Delete Удалить - + Save XSPF Сохранить XSPF - + Playlists (*.xspf) Плейлисты (*.xspf) @@ -2982,22 +2982,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Самые популярные - + Artists Исполнители - + Albums Альбомы - + Tracks Песни @@ -3046,7 +3046,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Альбом @@ -3098,13 +3098,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up &Подхватить - - + + &Listen Along &Слушать Его @@ -3248,7 +3248,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection Моя коллекция @@ -3270,7 +3270,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Домашняя сеть @@ -3557,7 +3557,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Ваш поиск '%1' недал результатов. @@ -3602,13 +3602,13 @@ enter the displayed PIN number here: Collection of %1 - Коллекция из %1 + Коллекция %1 TreeView - + Sorry, your filter '%1' did not match any results. К сожалению, '%1' фильтр не найдено ни одного результата. @@ -3718,7 +3718,7 @@ You can re-send a sync message at any time simply by sending another tweet using Combined libraries of all your online friends - Комбинированные библиотек всех ваших друзей онлайн + Комбинированная библиотека всех ваших друзей онлайн diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 6251f7859e..d34cd30731 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1249,67 +1249,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 @@ -1662,44 +1662,44 @@ connect and stream from you? SourceDelegate - + Track Spår - + Album Album - + Artist Artist - + Local Lokalt - + Top 10 Topp 10 - + All available tracks Alla tillgängliga spår - - + + Show Visa - - + + Hide Göm @@ -1799,68 +1799,68 @@ connect and stream from you? SourceTreeView - + &Copy Link &Kopiera länk - + &Delete %1 &Ta bort %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist &Exportera spellista - + playlist - + automatic playlist - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF Spara XSPF - + Playlists (*.xspf) Spellistor (*.xspf) @@ -2976,22 +2976,22 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Generell topplista - + Artists Artister - + Albums Album - + Tracks Spår @@ -3040,7 +3040,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3092,13 +3092,13 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::LatchManager - + &Catch Up &Häng med - - + + &Listen Along &Spela med @@ -3242,7 +3242,7 @@ Försök att ändra i filtrerna för att få en ny låtlista TomahawkApp - + My Collection Min Samling @@ -3265,7 +3265,7 @@ anger du PIN-koden här: TomahawkSettings - + Local Network @@ -3552,7 +3552,7 @@ anger du PIN-koden här: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. @@ -3603,7 +3603,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 5a13c979bd..5208df5a1d 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1248,67 +1248,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 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track - + Album - + Artist - + Local - + Top 10 - + All available tracks - - + + Show - - + + Hide @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link - + &Delete %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist - + playlist - + automatic playlist - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF - + Playlists (*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up - - + + &Listen Along @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3597,7 +3597,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 60c66e8b6e..314d7cc432 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -920,7 +920,7 @@ connect and stream from you? 下一个 - + Properties 属性 @@ -1249,67 +1249,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 刚刚 @@ -1664,44 +1664,44 @@ connect and stream from you? SourceDelegate - + Track 歌曲 - + Album 专辑 - + Artist 艺术家 - + Local 本地 - + Top 10 Top 10 - + All available tracks 所有可用的歌曲 - - + + Show 显示 - - + + Hide 隐藏 @@ -1801,68 +1801,68 @@ connect and stream from you? SourceTreeView - + &Copy Link 复制链接 - + &Delete %1 删除%1 - + Add to my Playlists 添加到我的播放列表 - + Add to my Automatic Playlists 添加到我的自动播放列表 - + Add to my Stations 添加到我的电台 - + &Export Playlist 导出播放列表 - + playlist 播放列表 - + automatic playlist 自动播放列表 - + station 电台 - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? 要删除 %1 <b>"%2"</b> 吗? - + Delete 删除 - + Save XSPF 保存 XSPF - + Playlists (*.xspf) 播放列表 (*.xspf) @@ -2981,22 +2981,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall 全局排行榜 - + Artists 艺术家 - + Albums 专辑 - + Tracks 歌曲 @@ -3045,7 +3045,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums 专辑 @@ -3097,13 +3097,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up 跟上 - - + + &Listen Along 一起听 @@ -3247,7 +3247,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection 我的收藏 @@ -3270,7 +3270,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3557,7 +3557,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. 抱歉,未找到任何匹配 '%1' 的结果。 @@ -3608,7 +3608,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 6dedcd01ca..f5e11ae921 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -920,7 +920,7 @@ connect and stream from you? - + Properties @@ -1248,67 +1248,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 剛才 @@ -1661,44 +1661,44 @@ connect and stream from you? SourceDelegate - + Track 曲目 - + Album 專輯 - + Artist 演出者 - + Local 本地 - + Top 10 前10名 - + All available tracks - - + + Show 顯示 - - + + Hide 隱藏 @@ -1798,68 +1798,68 @@ connect and stream from you? SourceTreeView - + &Copy Link 複製鏈接 - + &Delete %1 - + Add to my Playlists - + Add to my Automatic Playlists - + Add to my Stations - + &Export Playlist 匯出播放清單 - + playlist - + automatic playlist - + station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF 儲存 XSPF - + Playlists (*.xspf) 播放清單(*.xspf) @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists 演出者 - + Albums 專輯 - + Tracks 曲目 @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums 專輯 @@ -3087,13 +3087,13 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::LatchManager - + &Catch Up - - + + &Listen Along @@ -3237,7 +3237,7 @@ Try tweaking the filters for a new set of songs to play. TomahawkApp - + My Collection 我的收藏 @@ -3259,7 +3259,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3546,7 +3546,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. @@ -3597,7 +3597,7 @@ enter the displayed PIN number here: TreeView - + Sorry, your filter '%1' did not match any results. From 61c347d21b42d8fbd6fc07cb348b2bf881078cc9 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 6 Jan 2013 01:40:47 +0100 Subject: [PATCH 139/310] Add friendlyNames to InfoPlugins and show them in the diagnostics dialog --- src/DiagnosticsDialog.cpp | 15 +++++++++++++++ .../accounts/lastfm/LastFmInfoPlugin.h | 2 ++ .../accounts/spotify/SpotifyInfoPlugin.h | 2 ++ src/libtomahawk/infosystem/InfoSystem.cpp | 15 +++++++++++++++ src/libtomahawk/infosystem/InfoSystem.h | 8 ++++++-- src/libtomahawk/infosystem/InfoSystemWorker.cpp | 8 ++++++++ src/libtomahawk/infosystem/InfoSystemWorker.h | 2 ++ 7 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/DiagnosticsDialog.cpp b/src/DiagnosticsDialog.cpp index eedf4f1913..339f74ebea 100644 --- a/src/DiagnosticsDialog.cpp +++ b/src/DiagnosticsDialog.cpp @@ -30,6 +30,8 @@ #include "sip/SipHandler.h" #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" +#include "infosystem/InfoSystem.h" +#include "infosystem/InfoSystemWorker.h" #include #include @@ -81,6 +83,19 @@ DiagnosticsDialog::updateLogView() log.append( " visible: false\n" ); } + log.append( "\n\nINFOPLUGINS:\n" ); + QThread* infoSystemWorkerThreadSuperClass = Tomahawk::InfoSystem::InfoSystem::instance()->workerThread(); + Tomahawk::InfoSystem::InfoSystemWorkerThread* infoSystemWorkerThread = qobject_cast< Tomahawk::InfoSystem::InfoSystemWorkerThread* >(infoSystemWorkerThreadSuperClass); + + foreach(const Tomahawk::InfoSystem::InfoPluginPtr& plugin, infoSystemWorkerThread->worker()->plugins()) + { + log.append(" "); + log.append( plugin->friendlyName() ); + log.append("\n"); + } + + log.append( "\n\n" ); + log.append( "ACCOUNTS:\n" ); const QList< Tomahawk::source_ptr > sources = SourceList::instance()->sources( true ); diff --git a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h index 3df617da69..6e202b216a 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h +++ b/src/libtomahawk/accounts/lastfm/LastFmInfoPlugin.h @@ -51,6 +51,8 @@ class DLLEXPORT LastFmInfoPlugin : public InfoPlugin LastFmInfoPlugin( Accounts::LastFmAccount* account ); virtual ~LastFmInfoPlugin(); + const QString friendlyName() const { return "LastFM"; }; + public slots: void settingsChanged(); diff --git a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h index 4383df5b18..e74cb58775 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h +++ b/src/libtomahawk/accounts/spotify/SpotifyInfoPlugin.h @@ -45,6 +45,8 @@ class DLLEXPORT SpotifyInfoPlugin : public InfoPlugin explicit SpotifyInfoPlugin( Accounts::SpotifyAccount* account ); virtual ~SpotifyInfoPlugin(); + const QString friendlyName() const { return "Spotify"; }; + public slots: void albumListingResult( const QString& msgType, const QVariantMap& msg, const QVariant& extraData ); diff --git a/src/libtomahawk/infosystem/InfoSystem.cpp b/src/libtomahawk/infosystem/InfoSystem.cpp index dcfd8aa2f0..f1cae7698f 100644 --- a/src/libtomahawk/infosystem/InfoSystem.cpp +++ b/src/libtomahawk/infosystem/InfoSystem.cpp @@ -68,10 +68,25 @@ InfoPlugin::InfoPlugin() { } + InfoPlugin::~InfoPlugin() { } + +void +InfoPlugin::setFriendlyName( const QString& friendlyName ) +{ + m_friendlyName = friendlyName; +} + +const QString +InfoPlugin::friendlyName() const +{ + return m_friendlyName; +} + + InfoSystem* InfoSystem::s_instance = 0; InfoSystem* diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 523fd3a8d1..2ef4078802 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -109,6 +109,9 @@ class DLLEXPORT InfoPlugin : public QObject virtual ~InfoPlugin(); + void setFriendlyName( const QString& friendlyName ); + virtual const QString friendlyName() const; + QSet< InfoType > supportedGetTypes() const { return m_supportedGetTypes; } QSet< InfoType > supportedPushTypes() const { return m_supportedPushTypes; } @@ -133,6 +136,7 @@ protected slots: protected: InfoType m_type; + QString m_friendlyName; QSet< InfoType > m_supportedGetTypes; QSet< InfoType > m_supportedPushTypes; @@ -141,7 +145,7 @@ protected slots: }; -class InfoSystemCacheThread : public QThread +class DLLEXPORT InfoSystemCacheThread : public QThread { Q_OBJECT @@ -157,7 +161,7 @@ class InfoSystemCacheThread : public QThread }; -class InfoSystemWorkerThread : public QThread +class DLLEXPORT InfoSystemWorkerThread : public QThread { Q_OBJECT diff --git a/src/libtomahawk/infosystem/InfoSystemWorker.cpp b/src/libtomahawk/infosystem/InfoSystemWorker.cpp index 86b3f1af0b..4bceb6efe6 100644 --- a/src/libtomahawk/infosystem/InfoSystemWorker.cpp +++ b/src/libtomahawk/infosystem/InfoSystemWorker.cpp @@ -65,6 +65,13 @@ InfoSystemWorker::~InfoSystemWorker() } +const QList< InfoPluginPtr > +InfoSystemWorker::plugins() const +{ + return m_plugins; +} + + void InfoSystemWorker::init( Tomahawk::InfoSystem::InfoSystemCache* cache ) { @@ -221,6 +228,7 @@ InfoSystemWorker::loadInfoPlugins( const QStringList& pluginPaths ) if ( infoPlugin ) { tDebug() << Q_FUNC_INFO << "Loaded info plugin:" << loader.fileName(); + infoPlugin->setFriendlyName( loader.fileName() ); addInfoPlugin( InfoPluginPtr( infoPlugin ) ); } else diff --git a/src/libtomahawk/infosystem/InfoSystemWorker.h b/src/libtomahawk/infosystem/InfoSystemWorker.h index e19bd0179d..9b977571b7 100644 --- a/src/libtomahawk/infosystem/InfoSystemWorker.h +++ b/src/libtomahawk/infosystem/InfoSystemWorker.h @@ -48,6 +48,8 @@ class DLLEXPORT InfoSystemWorker : public QObject InfoSystemWorker(); ~InfoSystemWorker(); + const QList< InfoPluginPtr > plugins() const; + signals: void info( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output ); void finished( QString target ); From 033e6a305978a7d56a2e5e01afefc85b74faa925 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 6 Jan 2013 01:59:25 +0100 Subject: [PATCH 140/310] qt5: port InfoPlugins --- src/infoplugins/generic/charts/ChartsPlugin.cpp | 1 - src/infoplugins/generic/charts/ChartsPlugin.h | 1 + src/infoplugins/generic/discogs/DiscogsPlugin.cpp | 1 - src/infoplugins/generic/discogs/DiscogsPlugin.h | 1 + src/infoplugins/generic/echonest/EchonestPlugin.cpp | 1 - src/infoplugins/generic/echonest/EchonestPlugin.h | 1 + src/infoplugins/generic/hypem/HypemPlugin.cpp | 1 - src/infoplugins/generic/hypem/HypemPlugin.h | 1 + .../generic/musicbrainz/MusicBrainzPlugin.cpp | 1 - .../generic/musicbrainz/MusicBrainzPlugin.h | 1 + .../generic/musixmatch/MusixMatchPlugin.cpp | 1 - src/infoplugins/generic/musixmatch/MusixMatchPlugin.h | 1 + .../generic/newreleases/NewReleasesPlugin.cpp | 1 - .../generic/newreleases/NewReleasesPlugin.h | 2 ++ src/infoplugins/generic/rovi/RoviPlugin.cpp | 1 - src/infoplugins/generic/rovi/RoviPlugin.h | 1 + src/infoplugins/generic/spotify/SpotifyPlugin.cpp | 1 - src/infoplugins/generic/spotify/SpotifyPlugin.h | 1 + src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h | 1 + src/infoplugins/linux/mpris/MprisPlugin.h | 1 + src/infoplugins/mac/adium/AdiumPlugin.h | 1 + src/libtomahawk/TomahawkPlugin.h | 11 +++++++++++ src/libtomahawk/infosystem/InfoSystem.h | 1 + 23 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 src/libtomahawk/TomahawkPlugin.h diff --git a/src/infoplugins/generic/charts/ChartsPlugin.cpp b/src/infoplugins/generic/charts/ChartsPlugin.cpp index 0e87efd98f..f5667c693d 100644 --- a/src/infoplugins/generic/charts/ChartsPlugin.cpp +++ b/src/infoplugins/generic/charts/ChartsPlugin.cpp @@ -38,7 +38,6 @@ #include #include #include -#include #define CHART_URL "http://charts.tomahawk-player.org/" //#define CHART_URL "http://localhost:8080/" diff --git a/src/infoplugins/generic/charts/ChartsPlugin.h b/src/infoplugins/generic/charts/ChartsPlugin.h index a4c506f151..ebd0f1d0cf 100644 --- a/src/infoplugins/generic/charts/ChartsPlugin.h +++ b/src/infoplugins/generic/charts/ChartsPlugin.h @@ -36,6 +36,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT ChartsPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp index 405895f159..0b1cdeff93 100644 --- a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp +++ b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp @@ -27,7 +27,6 @@ #include #include -#include using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/discogs/DiscogsPlugin.h b/src/infoplugins/generic/discogs/DiscogsPlugin.h index 7471e2e119..ecf3ac8342 100644 --- a/src/infoplugins/generic/discogs/DiscogsPlugin.h +++ b/src/infoplugins/generic/discogs/DiscogsPlugin.h @@ -34,6 +34,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT DiscogsPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/echonest/EchonestPlugin.cpp b/src/infoplugins/generic/echonest/EchonestPlugin.cpp index da2c964394..e2bbb22f84 100644 --- a/src/infoplugins/generic/echonest/EchonestPlugin.cpp +++ b/src/infoplugins/generic/echonest/EchonestPlugin.cpp @@ -24,7 +24,6 @@ #include "utils/Logger.h" #include -#include namespace Tomahawk { diff --git a/src/infoplugins/generic/echonest/EchonestPlugin.h b/src/infoplugins/generic/echonest/EchonestPlugin.h index bdd4e6a3a1..e461060b14 100644 --- a/src/infoplugins/generic/echonest/EchonestPlugin.h +++ b/src/infoplugins/generic/echonest/EchonestPlugin.h @@ -37,6 +37,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT EchonestPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/hypem/HypemPlugin.cpp b/src/infoplugins/generic/hypem/HypemPlugin.cpp index abb55b36d9..7cc557dac3 100644 --- a/src/infoplugins/generic/hypem/HypemPlugin.cpp +++ b/src/infoplugins/generic/hypem/HypemPlugin.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include "Album.h" #include "Typedefs.h" diff --git a/src/infoplugins/generic/hypem/HypemPlugin.h b/src/infoplugins/generic/hypem/HypemPlugin.h index 63fc2f4c89..d0c9502e02 100644 --- a/src/infoplugins/generic/hypem/HypemPlugin.h +++ b/src/infoplugins/generic/hypem/HypemPlugin.h @@ -36,6 +36,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT HypemPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp index 0629507306..51dbdb7cb6 100644 --- a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp +++ b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.cpp @@ -24,7 +24,6 @@ #include #include -#include using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.h b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.h index 71ddb75b2a..ac278bd111 100644 --- a/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.h +++ b/src/infoplugins/generic/musicbrainz/MusicBrainzPlugin.h @@ -34,6 +34,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT MusicBrainzPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp index ec255752b0..550ea20cc2 100644 --- a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp +++ b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.cpp @@ -24,7 +24,6 @@ #include #include -#include using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.h b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.h index 5c17c0c757..96c5dbad28 100644 --- a/src/infoplugins/generic/musixmatch/MusixMatchPlugin.h +++ b/src/infoplugins/generic/musixmatch/MusixMatchPlugin.h @@ -34,6 +34,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT MusixMatchPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp b/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp index 32cfb5a210..f8285d74ef 100644 --- a/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp +++ b/src/infoplugins/generic/newreleases/NewReleasesPlugin.cpp @@ -38,7 +38,6 @@ #include #include #include -#include #define CHART_URL "http://charts.tomahawk-player.org/" //#define CHART_URL "http://localhost:8080/" diff --git a/src/infoplugins/generic/newreleases/NewReleasesPlugin.h b/src/infoplugins/generic/newreleases/NewReleasesPlugin.h index 884fac9017..212b058bd2 100644 --- a/src/infoplugins/generic/newreleases/NewReleasesPlugin.h +++ b/src/infoplugins/generic/newreleases/NewReleasesPlugin.h @@ -37,8 +37,10 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT NewReleasesPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) + public: NewReleasesPlugin(); virtual ~NewReleasesPlugin(); diff --git a/src/infoplugins/generic/rovi/RoviPlugin.cpp b/src/infoplugins/generic/rovi/RoviPlugin.cpp index e5c74d191a..d067917d78 100644 --- a/src/infoplugins/generic/rovi/RoviPlugin.cpp +++ b/src/infoplugins/generic/rovi/RoviPlugin.cpp @@ -25,7 +25,6 @@ #include #include -#include using namespace Tomahawk::InfoSystem; diff --git a/src/infoplugins/generic/rovi/RoviPlugin.h b/src/infoplugins/generic/rovi/RoviPlugin.h index b54c3577a9..87fc3bc08d 100644 --- a/src/infoplugins/generic/rovi/RoviPlugin.h +++ b/src/infoplugins/generic/rovi/RoviPlugin.h @@ -35,6 +35,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT RoviPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/generic/spotify/SpotifyPlugin.cpp b/src/infoplugins/generic/spotify/SpotifyPlugin.cpp index 38e38db40d..a3ce8d3679 100644 --- a/src/infoplugins/generic/spotify/SpotifyPlugin.cpp +++ b/src/infoplugins/generic/spotify/SpotifyPlugin.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include "Album.h" #include "Typedefs.h" diff --git a/src/infoplugins/generic/spotify/SpotifyPlugin.h b/src/infoplugins/generic/spotify/SpotifyPlugin.h index c216000905..b8de3967d1 100644 --- a/src/infoplugins/generic/spotify/SpotifyPlugin.h +++ b/src/infoplugins/generic/spotify/SpotifyPlugin.h @@ -37,6 +37,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT SpotifyPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h index fc672c00ab..a83e2dc625 100644 --- a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h +++ b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.h @@ -31,6 +31,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT FdoNotifyPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/linux/mpris/MprisPlugin.h b/src/infoplugins/linux/mpris/MprisPlugin.h index 8a11fc1d42..47a82ca763 100644 --- a/src/infoplugins/linux/mpris/MprisPlugin.h +++ b/src/infoplugins/linux/mpris/MprisPlugin.h @@ -36,6 +36,7 @@ namespace InfoSystem class INFOPLUGINDLLEXPORT MprisPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/infoplugins/mac/adium/AdiumPlugin.h b/src/infoplugins/mac/adium/AdiumPlugin.h index 3687f1ab9e..02980eff74 100644 --- a/src/infoplugins/mac/adium/AdiumPlugin.h +++ b/src/infoplugins/mac/adium/AdiumPlugin.h @@ -36,6 +36,7 @@ namespace InfoSystem { class INFOPLUGINDLLEXPORT AdiumPlugin : public InfoPlugin { + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.InfoPlugin" ) Q_OBJECT Q_INTERFACES( Tomahawk::InfoSystem::InfoPlugin ) diff --git a/src/libtomahawk/TomahawkPlugin.h b/src/libtomahawk/TomahawkPlugin.h new file mode 100644 index 0000000000..cf6c35760c --- /dev/null +++ b/src/libtomahawk/TomahawkPlugin.h @@ -0,0 +1,11 @@ +#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) + #if defined(Q_EXPORT_PLUGIN) + #undef Q_EXPORT_PLUGIN + #undef Q_EXPORT_PLUGIN2 + #endif + + #define Q_EXPORT_PLUGIN(a) + #define Q_EXPORT_PLUGIN2(a, b) +#else + # define Q_PLUGIN_METADATA(a) +#endif \ No newline at end of file diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 2ef4078802..c46fe46b79 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -23,6 +23,7 @@ #include "DllMacro.h" #include "utils/TomahawkUtils.h" #include "Typedefs.h" +#include "TomahawkPlugin.h" #include #include From 110fb0100ddc3e748f0531d4dcf3226762d68fe5 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 6 Jan 2013 03:52:20 +0100 Subject: [PATCH 141/310] qt5: cmake: allow building Tomahawk against Qt4 and Qt5 --- CMakeLists.txt | 98 ++++++++++++++----- CMakeModules/AddTomahawkPlugin.cmake | 7 +- lang/translations.cmake | 16 +-- src/CMakeLists.txt | 31 ++---- src/accounts/zeroconf/ZeroconfAccount.cpp | 2 - src/breakpad/CrashReporter/CMakeLists.txt | 37 ++++--- src/infoplugins/linux/CMakeLists.txt | 31 +++--- .../linux/fdonotify/FdoNotifyPlugin.cpp | 1 - src/libtomahawk/CMakeLists.txt | 27 +---- .../qxt/qxtweb-standalone/CMakeLists.txt | 10 +- 10 files changed, 145 insertions(+), 115 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8084c1f7fc..58d6eb335b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,26 +81,76 @@ INCLUDE( GNUInstallDirs ) # installer creation INCLUDE( TomahawkCPack.cmake ) -#deps +# deps INCLUDE( MacroOptionalFindPackage ) INCLUDE( MacroLogFeature ) -# Check if we need qtgui: -SET(NEEDED_QT4_COMPONENTS QtCore QtXml QtNetwork ) -IF( NOT BUILD_GUI ) - ADD_DEFINITIONS( -DENABLE_HEADLESS ) - MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} in HEADLESS mode ***" ) -ELSE() - MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} full GUI version ***" ) - LIST(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" ) -ENDIF() +# headless mode +if( NOT BUILD_GUI ) + add_definitions( -DENABLE_HEADLESS ) + message( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} in HEADLESS mode ***" ) +else() + message( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} full GUI version ***" ) +endif() -IF( BUILD_GUI AND UNIX AND NOT APPLE ) - FIND_PACKAGE( X11 ) -ENDIF() -macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} ) -macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too") +find_package(Qt5Core QUIET) +if(Qt5Core_DIR) + find_package(Qt5Widgets QUIET) + message(STATUS "Found Qt5! Please keep in mind, this is highly experimental and not our main development..") + + macro(qt_wrap_ui) + qt5_wrap_ui(${ARGN}) + endmacro() + + macro(qt_add_resources) + qt5_add_resources(${ARGN}) + endmacro() + + find_package(Qt5LinguistTools REQUIRED) + macro(qt_add_translation) + qt5_add_translation(${ARGN}) + endmacro() + + macro(setup_qt) + endmacro() + + #FIXME: CrashReporter depends on deprecated QHttp + set(WITH_CRASHREPORTER OFF) + set(WITH_BREAKPAD OFF) +else() + message(STATUS "Could not find Qt5, now searching for Qt4... you're better off this way!") + + set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork") + if(BUILD_GUI) + list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" ) + endif() + + macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} ) + macro_logfeature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too") + + macro(qt5_use_modules) + endmacro() + + macro(setup_qt) + if(NOT BUILD_GUI) + set(QT_DONT_USE_QTGUI TRUE) + endif() + if(UNIX AND NOT APPLE) + set(QT_USE_QTDBUS TRUE) + endif() + set(QT_USE_QTSQL TRUE) + set(QT_USE_QTNETWORK TRUE) + set(QT_USE_QTXML TRUE) + set(QT_USE_QTWEBKIT TRUE) + + include( ${QT_USE_FILE} ) + endmacro() +endif() + +if(BUILD_GUI AND UNIX AND NOT APPLE) + find_package( X11 ) +endif() macro_optional_find_package(Phonon 4.5.0) macro_log_feature(PHONON_FOUND "Phonon" "The Phonon multimedia library" "http://phonon.kde.org" TRUE "" "") @@ -143,6 +193,10 @@ macro_log_feature(QTWEETLIB_FOUND "QTweetLib" "Qt Twitter Library" "https://gith macro_optional_find_package(LibLastFm 1.0.0) macro_log_feature(LIBLASTFM_FOUND "liblastfm" "Qt library for the Last.fm webservices" "https://github.com/eartle/liblastfm" TRUE "" "liblastfm is needed for scrobbling tracks to Last.fm and fetching cover artwork") +# we need pthreads too +macro_optional_find_package(Threads) +macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading") + IF( WIN32 ) macro_optional_find_package(QtSparkle) macro_log_feature(QTSPARKLE_FOUND "qtsparkle" "Library for creating auto updaters written in Qt" "https://github.com/davidsansome/qtsparkle" FALSE "" "") @@ -153,6 +207,12 @@ set(QXTWEB_FOUND TRUE) set(QXTWEB_LIBRARIES qxtweb-standalone) set(QXTWEB_INCLUDE_DIRS ${THIRDPARTY_DIR}/qxt/qxtweb-standalone/qxtweb ${CMAKE_CURRENT_BINARY_DIR}) +### libportfwd +set(LIBPORTFWD_INCLUDE_DIR ${THIRDPARTY_DIR}/libportfwd/include) +set(LIBPORTFWD_LIBRARY tomahawk_portfwd) +set(LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY}) +add_subdirectory(${THIRDPARTY_DIR}/libportfwd) + #### submodules start # automatically init submodules here, don't delete this code we may add submodules again @@ -167,15 +227,7 @@ set(QXTWEB_INCLUDE_DIRS ${THIRDPARTY_DIR}/qxt/qxtweb-standalone/qxtweb ${CMAKE_C #### submodules end -### libportfwd -SET( LIBPORTFWD_INCLUDE_DIR ${THIRDPARTY_DIR}/libportfwd/include ) -SET( LIBPORTFWD_LIBRARY tomahawk_portfwd ) -SET( LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY} ) -ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd ) -# we need pthreads too -macro_optional_find_package(Threads) -macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading") macro_optional_find_package(KDE4) macro_optional_find_package(KDE4Installed) diff --git a/CMakeModules/AddTomahawkPlugin.cmake b/CMakeModules/AddTomahawkPlugin.cmake index f4cd96fa1e..3b7864f61e 100644 --- a/CMakeModules/AddTomahawkPlugin.cmake +++ b/CMakeModules/AddTomahawkPlugin.cmake @@ -59,12 +59,12 @@ macro(add_tomahawk_plugin) # qt stuff include_directories(${CMAKE_CURRENT_BINARY_DIR}) if(PLUGIN_UI) - qt4_wrap_ui(PLUGIN_UI_SOURCES ${PLUGIN_UI}) + qt_wrap_ui(PLUGIN_UI_SOURCES ${PLUGIN_UI}) list(APPEND PLUGIN_SOURCES ${PLUGIN_UI_SOURCES}) endif() if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/resources.qrc") - qt4_add_resources(PLUGIN_RC_SOURCES "resources.qrc") + qt_add_resources(PLUGIN_RC_SOURCES "resources.qrc") list(APPEND PLUGIN_SOURCES ${PLUGIN_RC_SOURCES}) unset(PLUGIN_RC_SOURCES) endif() @@ -72,6 +72,9 @@ macro(add_tomahawk_plugin) # add target add_library(${target} MODULE ${PLUGIN_SOURCES}) + # add qt modules + qt5_use_modules(${target} Core Network Widgets Sql Xml DBus) + # definitions - can this be moved into set_target_properties below? add_definitions(${QT_DEFINITIONS}) set_target_properties(${target} PROPERTIES AUTOMOC TRUE COMPILE_DEFINITIONS ${PLUGIN_EXPORT_MACRO}) diff --git a/lang/translations.cmake b/lang/translations.cmake index 7ce1ba4220..45ea39a854 100644 --- a/lang/translations.cmake +++ b/lang/translations.cmake @@ -21,25 +21,25 @@ macro(add_tomahawk_translations language) file( WRITE ${CMAKE_BINARY_DIR}/lang/tomahawk_i18n.qrc "${tomahawk_i18n_qrc_content}" ) - QT4_ADD_TRANSLATION( QM_FILES ${TS_FILES} ) + qt_add_translation(QM_FILES ${TS_FILES}) ## HACK HACK HACK - around rcc limitations to allow out of source-tree building - SET( trans_file tomahawk_i18n ) - SET( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc ) - SET( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) - SET( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) + set( trans_file tomahawk_i18n ) + set( trans_srcfile ${CMAKE_BINARY_DIR}/lang/${trans_file}.qrc ) + set( trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc ) + set( trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${trans_file}.cxx ) # Copy the QRC file to the output directory - ADD_CUSTOM_COMMAND( + add_custom_command( OUTPUT ${trans_infile} COMMAND ${CMAKE_COMMAND} -E copy ${trans_srcfile} ${trans_infile} MAIN_DEPENDENCY ${trans_srcfile} ) # Run the resource compiler (rcc_options should already be set) - ADD_CUSTOM_COMMAND( + add_custom_command( OUTPUT ${trans_outfile} - COMMAND ${QT_RCC_EXECUTABLE} + COMMAND ${Qt5Core_RCC_EXECUTABLE} ARGS ${rcc_options} -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 99b3cbea0a..07f014fdbe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,26 +1,14 @@ PROJECT( tomahawk ) CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) -IF( "${gui}" STREQUAL "no" ) - SET( QT_DONT_USE_QTGUI TRUE ) -ENDIF() -IF( UNIX AND NOT APPLE ) - SET( QT_USE_QTDBUS TRUE ) -ENDIF( UNIX AND NOT APPLE ) -SET( QT_USE_QTSQL TRUE ) -SET( QT_USE_QTNETWORK TRUE ) -SET( QT_USE_QTXML TRUE ) -SET( QT_USE_QTWEBKIT TRUE ) - -INCLUDE( ${QT_USE_FILE} ) -INCLUDE( AddAppIconMacro ) - -#SET( CMAKE_BUILD_TYPE "Release" ) -SET( CMAKE_VERBOSE_MAKEFILE ON ) -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) -SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) -SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) +setup_qt() + +include( AddAppIconMacro ) + +# SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) +# SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) +# SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" ) MESSAGE( "Building in debug mode, enabling all debug updates" ) SET( DEBUG_BUILD ON ) @@ -164,7 +152,7 @@ SET( final_src ${final_src} ${tomahawkMoc} ${tomahawkSources} ${trans_outfile}) IF( BUILD_GUI ) LIST(APPEND tomahawkSources ${tomahawkSourcesGui}) - qt4_wrap_ui( tomahawkUI_H ${tomahawkUI} ) + qt_wrap_ui( tomahawkUI_H ${tomahawkUI} ) IF( WITH_CRASHREPORTER ) ADD_SUBDIRECTORY( breakpad/CrashReporter ) @@ -172,7 +160,7 @@ IF( BUILD_GUI ) ENDIF() kde4_add_app_icon( tomahawkSources "${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon-*.png" ) -qt4_add_resources( RC_SRCS "../resources.qrc" ) +qt_add_resources( RC_SRCS "../resources.qrc" ) SET( final_src ${final_src} ${tomahawkUI_H} ${tomahawkMoc} ${tomahawkSources} ${RC_SRCS} ) @@ -188,6 +176,7 @@ IF( WIN32 ) ENDIF( WIN32 ) SET_TARGET_PROPERTIES(tomahawk PROPERTIES AUTOMOC TRUE) +qt5_use_modules(tomahawk Core Widgets Network Sql WebKitWidgets) MESSAGE( STATUS "OS_SPECIFIC_LINK_LIBRARIES: ${OS_SPECIFIC_LINK_LIBRARIES}" ) diff --git a/src/accounts/zeroconf/ZeroconfAccount.cpp b/src/accounts/zeroconf/ZeroconfAccount.cpp index 0a86fb3d1a..6a750e52d4 100644 --- a/src/accounts/zeroconf/ZeroconfAccount.cpp +++ b/src/accounts/zeroconf/ZeroconfAccount.cpp @@ -22,8 +22,6 @@ #include "Zeroconf.h" #include "Source.h" -#include - using namespace Tomahawk; using namespace Accounts; diff --git a/src/breakpad/CrashReporter/CMakeLists.txt b/src/breakpad/CrashReporter/CMakeLists.txt index 439f19b9f9..622d4843ba 100644 --- a/src/breakpad/CrashReporter/CMakeLists.txt +++ b/src/breakpad/CrashReporter/CMakeLists.txt @@ -1,26 +1,31 @@ PROJECT( CrashReporter ) cmake_policy(SET CMP0017 NEW) -FIND_PACKAGE( Qt4 REQUIRED ) -SET( QT_USE_QTNETWORK TRUE ) +setup_qt() +set(crashreporter_SOURCES main.cpp CrashReporter.cpp) +set(crashreporter_UI CrashReporter.ui) +set(crashreporter_RC ../../../resources.qrc) -SET( crashreporter_SOURCES main.cpp CrashReporter.cpp ) -SET( crashreporter_UI CrashReporter.ui ) -SET( crashreporter_RC ../../../resources.qrc ) +qt_wrap_ui( crashreporter_UI_HEADERS ${crashreporter_UI} ) +qt_add_resources( crashreporter_RC_RCC ${crashreporter_RC} ) -QT4_WRAP_UI( crashreporter_UI_HEADERS ${crashreporter_UI} ) -QT4_ADD_RESOURCES( crashreporter_RC_RCC ${crashreporter_RC} ) +include_directories( ${CMAKE_CURRENT_BINARY_DIR} ../../libtomahawk ) -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) +target_link_libraries(tomahawk_crash_reporter + tomahawklib + ${QT_LIBRARIES} +) + +set_target_properties(tomahawk_crash_reporter PROPERTIES AUTOMOC ON) install(TARGETS tomahawk_crash_reporter RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}) + +qt5_use_modules(tomahawk_crash_reporter Widgets Network) diff --git a/src/infoplugins/linux/CMakeLists.txt b/src/infoplugins/linux/CMakeLists.txt index 237b5038ec..c8d5591606 100644 --- a/src/infoplugins/linux/CMakeLists.txt +++ b/src/infoplugins/linux/CMakeLists.txt @@ -1,17 +1,22 @@ -IF(BUILD_GUI AND X11_FOUND) - INCLUDE_DIRECTORIES( ${THIRDPARTY_DIR}/libqnetwm ) - SET(fdo_srcs - fdonotify/FdoNotifyPlugin.cpp - fdonotify/ImageConverter.cpp - ${THIRDPARTY_DIR}/libqnetwm/libqnetwm/netwm.cpp - ) - SET(FDO_LINK_LIBRARIES ${LINK_LIBRARIES} ${X11_LIBRARIES}) +# don't build with Qt5 because QX11Info is missing there +if(NOT Qt5Core_DIR) - add_tomahawk_plugin(fdonotify - TYPE infoplugin EXPORT_MACRO INFOPLUGINDLLEXPORT_PRO - SOURCES "${fdo_srcs}" LINK_LIBRARIES "${FDO_LINK_LIBRARIES}" - ) -ENDIF() + IF(BUILD_GUI AND X11_FOUND) + INCLUDE_DIRECTORIES( ${THIRDPARTY_DIR}/libqnetwm ) + SET(fdo_srcs + fdonotify/FdoNotifyPlugin.cpp + fdonotify/ImageConverter.cpp + ${THIRDPARTY_DIR}/libqnetwm/libqnetwm/netwm.cpp + ) + SET(FDO_LINK_LIBRARIES ${LINK_LIBRARIES} ${X11_LIBRARIES}) + + add_tomahawk_plugin(fdonotify + TYPE infoplugin EXPORT_MACRO INFOPLUGINDLLEXPORT_PRO + SOURCES "${fdo_srcs}" LINK_LIBRARIES "${FDO_LINK_LIBRARIES}" + ) + ENDIF() + +endif() SET(mpris_srcs mpris/MprisPluginRootAdaptor.cpp diff --git a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp index eef36037fc..5fe28b310d 100644 --- a/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp +++ b/src/infoplugins/linux/fdonotify/FdoNotifyPlugin.cpp @@ -48,7 +48,6 @@ #include #include #include -#include namespace Tomahawk { diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 60357db5a8..18157cadf3 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -1,17 +1,6 @@ project( tomahawklib ) -SET( QT_USE_QTGUI TRUE ) -SET( QT_USE_QTSQL TRUE ) -SET( QT_USE_QTNETWORK TRUE ) -SET( QT_USE_QTXML TRUE ) -SET( QT_USE_QTSVG TRUE ) -SET( QT_USE_QTUITOOLS TRUE ) - -IF( UNIX AND NOT APPLE ) - SET( QT_USE_QTDBUS TRUE ) -ENDIF( UNIX AND NOT APPLE ) - -include( ${QT_USE_FILE} ) +setup_qt() add_definitions( ${QT_DEFINITIONS} ) add_definitions( -DQT_SHARED ) @@ -358,7 +347,6 @@ include_directories( ${PHONON_INCLUDES} ${LIBPORTFWD_INCLUDE_DIR} - ${THIRDPARTY_DIR}/qxt/qxtweb-standalone/qxtweb ${QuaZip_INCLUDE_DIR} ) @@ -373,14 +361,6 @@ IF(LIBATTICA_FOUND) LIST(APPEND LINK_LIBRARIES ${LIBATTICA_LIBRARIES} ${QuaZip_LIBRARIES} ) ENDIF(LIBATTICA_FOUND) -IF( UNIX AND NOT APPLE ) - IF( BUILD_GUI AND X11_FOUND ) - INCLUDE_DIRECTORIES( ${THIRDPARTY_DIR}/libqnetwm ) - SET( libSources ${libSources} ${THIRDPARTY_DIR}/libqnetwm/libqnetwm/netwm.cpp ) - LIST(APPEND LINK_LIBRARIES ${X11_LIBRARIES} ) - ENDIF() -ENDIF( UNIX AND NOT APPLE ) - IF( WIN32 ) SET( OS_SPECIFIC_LINK_LIBRARIES ${OS_SPECIFIC_LINK_LIBRARIES} @@ -437,12 +417,13 @@ IF(BUILD_GUI) LIST(APPEND libSources ${libGuiSources} ) ENDIF() -qt4_wrap_ui( libUI_H ${libUI} ) +qt_wrap_ui(libUI_H ${libUI}) SET( libSources ${libSources} ${libUI_H} ) -ADD_LIBRARY( tomahawklib SHARED ${libSources}) +add_library( tomahawklib SHARED ${libSources}) set_target_properties(tomahawklib PROPERTIES AUTOMOC TRUE) +qt5_use_modules(tomahawklib Widgets Network Sql WebKitWidgets Concurrent Xml UiTools Svg) IF(QCA2_FOUND) LIST(APPEND LINK_LIBRARIES ${QCA2_LIBRARIES} ) diff --git a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt index 81b42432b7..43bfc48e9b 100644 --- a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt +++ b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt @@ -1,15 +1,11 @@ PROJECT(libqxtweb-standalone) CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) -SET(CMAKE_VERBOSE_MAKEFILE ON) -SET(CMAKE_INSTALL_PREFIX ".") IF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 ) CMAKE_POLICY(SET CMP0017 NEW) ENDIF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 ) -FIND_PACKAGE( Qt4 4.6.0 COMPONENTS QtCore QtNetwork REQUIRED ) -set(QT_USE_QTNETWORK TRUE) -include( ${QT_USE_FILE} ) +setup_qt() SET(qxtweb "qxtweb") @@ -84,7 +80,9 @@ ENDIF() target_link_libraries( qxtweb-standalone - ${QT_LIBRARIES} + ${QT_LIBRARIES} ) +qt5_use_modules(qxtweb-standalone Network) + set_target_properties(qxtweb-standalone PROPERTIES AUTOMOC TRUE) From d7ba7ead9971db030dbe5913b601d0215b6abd60 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 6 Jan 2013 04:58:31 +0100 Subject: [PATCH 142/310] qt5: that should have ended up in the latest commit, too late for git for me --- CMakeLists.txt | 17 +++++++++++++++-- lang/translations.cmake | 2 +- src/libtomahawk/CMakeLists.txt | 14 +++++++++++--- src/libtomahawk/TomahawkPlugin.h | 2 ++ src/libtomahawk/utils/TomahawkUtilsGui.cpp | 2 ++ 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58d6eb335b..fec9d78027 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,6 +115,7 @@ if(Qt5Core_DIR) macro(setup_qt) endmacro() + set(QT_RCC_EXECUTABLE "${Qt5Core_RCC_EXECUTABLE}") #FIXME: CrashReporter depends on deprecated QHttp set(WITH_CRASHREPORTER OFF) set(WITH_BREAKPAD OFF) @@ -123,15 +124,27 @@ else() set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork") if(BUILD_GUI) - list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" ) + list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" "QtSvg" ) endif() macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} ) - macro_logfeature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too") + macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too") macro(qt5_use_modules) endmacro() + macro(qt_wrap_ui) + qt4_wrap_ui(${ARGN}) + endmacro() + + macro(qt_add_resources) + qt4_add_resources(${ARGN}) + endmacro() + + macro(qt_add_translation) + qt4_add_translation(${ARGN}) + endmacro() + macro(setup_qt) if(NOT BUILD_GUI) set(QT_DONT_USE_QTGUI TRUE) diff --git a/lang/translations.cmake b/lang/translations.cmake index 45ea39a854..a83c7620f7 100644 --- a/lang/translations.cmake +++ b/lang/translations.cmake @@ -39,7 +39,7 @@ macro(add_tomahawk_translations language) # Run the resource compiler (rcc_options should already be set) add_custom_command( OUTPUT ${trans_outfile} - COMMAND ${Qt5Core_RCC_EXECUTABLE} + COMMAND ${QT_RCC_EXECUTABLE} ARGS ${rcc_options} -name ${trans_file} -o ${trans_outfile} ${trans_infile} MAIN_DEPENDENCY ${trans_infile} DEPENDS ${QM_FILES} diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 18157cadf3..3d66288e83 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -154,12 +154,20 @@ set( libGuiSources widgets/searchlineedit/SearchLineEdit.cpp ) -IF(QCA2_FOUND) +if(QCA2_FOUND) set( libGuiSources ${libGuiSources} utils/GroovesharkParser.cpp ) set( libGuiHeaders ${libGuiHeaders} utils/GroovesharkParser.h ) -ENDIF(QCA2_FOUND) +endif() + +if(UNIX AND NOT APPLE) + if(BUILD_GUI AND X11_FOUND) + include_directories( ${THIRDPARTY_DIR}/libqnetwm ) + list(APPEND libSources ${libSources} ${THIRDPARTY_DIR}/libqnetwm/libqnetwm/netwm.cpp) + list(APPEND LINK_LIBRARIES ${X11_LIBRARIES}) + endif() +endif() -set( libSources +list(APPEND libSources TomahawkSettings.cpp SourceList.cpp Pipeline.cpp diff --git a/src/libtomahawk/TomahawkPlugin.h b/src/libtomahawk/TomahawkPlugin.h index cf6c35760c..06c869cffb 100644 --- a/src/libtomahawk/TomahawkPlugin.h +++ b/src/libtomahawk/TomahawkPlugin.h @@ -1,3 +1,5 @@ +#include + #if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) #if defined(Q_EXPORT_PLUGIN) #undef Q_EXPORT_PLUGIN diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index c0db158946..247be38ebb 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -39,6 +39,8 @@ #include #include +//FIXME: Qt5: this doesnt fail because Q_WS_X11 is deprecated +//TODO: change to Q_OS_X11 and fix errors #ifdef Q_WS_X11 #include #include From f6f15223db41c9fb0f6be9d66fe010104fe83614 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 6 Jan 2013 14:17:26 +0100 Subject: [PATCH 143/310] Fix compilation for windows --- src/infoplugins/generic/discogs/DiscogsPlugin.cpp | 2 +- src/infoplugins/generic/rovi/RoviPlugin.cpp | 2 +- thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp index 0b1cdeff93..2ba800e6cc 100644 --- a/src/infoplugins/generic/discogs/DiscogsPlugin.cpp +++ b/src/infoplugins/generic/discogs/DiscogsPlugin.cpp @@ -23,7 +23,7 @@ #include "utils/Logger.h" #include "utils/Closure.h" -#include +#include #include #include diff --git a/src/infoplugins/generic/rovi/RoviPlugin.cpp b/src/infoplugins/generic/rovi/RoviPlugin.cpp index d067917d78..19d6d034c6 100644 --- a/src/infoplugins/generic/rovi/RoviPlugin.cpp +++ b/src/infoplugins/generic/rovi/RoviPlugin.cpp @@ -21,7 +21,7 @@ #include "utils/Logger.h" -#include +#include #include #include diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h index 4a787d20f1..4c815683d3 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtsslserver.h @@ -39,7 +39,7 @@ #include class QxtSslServerPrivate; -class QXT_NETWORK_EXPORT QxtSslServer : public QTcpServer +class QxtSslServer : public QTcpServer { Q_OBJECT public: From 7fb494c780a9d184c78724311cb6e485350189ce Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 24 Sep 2012 23:48:27 +0200 Subject: [PATCH 144/310] Don't use CMAKE_SYSTEM for version info - too detailed build time information --- CMakeLists.txt | 10 ++++++++++ src/Config.h.in | 8 +++++++- src/DiagnosticsDialog.cpp | 3 ++- src/accounts/xmpp/sip/XmppSip.cpp | 2 +- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fec9d78027..487ad42736 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,16 @@ SET( TOMAHAWK_ORGANIZATION_DOMAIN "tomahawk-player.org" ) SET( TOMAHAWK_APPLICATION_NAME "Tomahawk" ) SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" ) +IF( WIN32 ) + SET( TOMAHAWK_SYSTEM "Windows" ) +ELSEIF( APPLE ) + SET( TOMAHAWK_SYSTEM "OS X" ) +ELSEIF( UNIX ) + SET( TOMAHAWK_SYSTEM "Linux") +ELSE() + SET( TOMAHAWK_SYSTEM "Uknown Platform, please let the Tomahawk team know, this actually happened" ) +ENDIF() + SET( TOMAHAWK_VERSION_MAJOR 0 ) SET( TOMAHAWK_VERSION_MINOR 5 ) SET( TOMAHAWK_VERSION_PATCH 99 ) diff --git a/src/Config.h.in b/src/Config.h.in index 7e838925da..159c61a31a 100644 --- a/src/Config.h.in +++ b/src/Config.h.in @@ -1,11 +1,17 @@ #ifndef CONFIG_H_IN #define CONFIG_H_IN +#cmakedefine TOMAHAWK_ORGANIZATION_NAME "${TOMAHAWK_ORGANIZATION_NAME}" +#cmakedefine TOMAHAWK_ORGANIZATION_DOMAIN "${TOMAHAWK_ORGANIZATION_DOMAIN}" +#cmakedefine TOMAHAWK_APPLICATION_NAME "${TOMAHAWK_APPLICATION_NAME}" +#cmakedefine TOMAHAWK_VERSION "${TOMAHAWK_VERSION}" +#cmakedefine TOMAHAWK_SYSTEM "${TOMAHAWK_SYSTEM}" + #cmakedefine DEBUG_BUILD #define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" #define CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}" -#define CMAKE_SYSTEM "${CMAKE_SYSTEM}" + #cmakedefine LION #cmakedefine SNOW_LEOPARD diff --git a/src/DiagnosticsDialog.cpp b/src/DiagnosticsDialog.cpp index 339f74ebea..015e3ce2e4 100644 --- a/src/DiagnosticsDialog.cpp +++ b/src/DiagnosticsDialog.cpp @@ -62,7 +62,8 @@ DiagnosticsDialog::updateLogView() QString log; log.append( QString( "TOMAHAWK DIAGNOSTICS LOG -%1 \n\n" ).arg( QDateTime::currentDateTime().toString() ) ); - log.append( "TOMAHAWK-VERSION: " TOMAHAWK_VERSION "\n\n" ); + log.append( "TOMAHAWK-VERSION: " TOMAHAWK_VERSION "\n" ); + log.append( "PLATFORM: " TOMAHAWK_SYSTEM "\n\n"); log.append( "NETWORK:\n General:\n" ); if ( Servent::instance()->visibleExternally() ) diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index 646ca3d33f..7f4e70d917 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -138,7 +138,7 @@ XmppSipPlugin::XmppSipPlugin( Account* account ) #endif // setup disco - m_client->disco()->setSoftwareVersion( "Tomahawk Player", TOMAHAWK_VERSION, CMAKE_SYSTEM ); + m_client->disco()->setSoftwareVersion( "Tomahawk Player", TOMAHAWK_VERSION, TOMAHAWK_SYSTEM ); m_client->disco()->addIdentity( Jreen::Disco::Identity( "client", "type", "tomahawk", "en" ) ); m_client->disco()->addFeature( TOMAHAWK_FEATURE ); From e9eb4bea157e38617e3c0d6f3e93ea7b976ef269 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 6 Jan 2013 21:18:47 +0100 Subject: [PATCH 145/310] Move TOMAHAWK_SYSTEM to TomahawkVersion.h --- src/Config.h.in | 6 ------ src/TomahawkVersion.h.in | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/Config.h.in b/src/Config.h.in index 159c61a31a..2b03e76c51 100644 --- a/src/Config.h.in +++ b/src/Config.h.in @@ -1,12 +1,6 @@ #ifndef CONFIG_H_IN #define CONFIG_H_IN -#cmakedefine TOMAHAWK_ORGANIZATION_NAME "${TOMAHAWK_ORGANIZATION_NAME}" -#cmakedefine TOMAHAWK_ORGANIZATION_DOMAIN "${TOMAHAWK_ORGANIZATION_DOMAIN}" -#cmakedefine TOMAHAWK_APPLICATION_NAME "${TOMAHAWK_APPLICATION_NAME}" -#cmakedefine TOMAHAWK_VERSION "${TOMAHAWK_VERSION}" -#cmakedefine TOMAHAWK_SYSTEM "${TOMAHAWK_SYSTEM}" - #cmakedefine DEBUG_BUILD #define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" diff --git a/src/TomahawkVersion.h.in b/src/TomahawkVersion.h.in index b8bd18d195..03f78ba18f 100644 --- a/src/TomahawkVersion.h.in +++ b/src/TomahawkVersion.h.in @@ -5,5 +5,6 @@ #cmakedefine TOMAHAWK_ORGANIZATION_DOMAIN "${TOMAHAWK_ORGANIZATION_DOMAIN}" #cmakedefine TOMAHAWK_APPLICATION_NAME "${TOMAHAWK_APPLICATION_NAME}" #cmakedefine TOMAHAWK_VERSION "${TOMAHAWK_VERSION}" +#cmakedefine TOMAHAWK_SYSTEM "${TOMAHAWK_SYSTEM}" #endif // TOMAHAWK_VERSION_H From 66d5d0a40381b420e9059c4c0c36a4d562239e56 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 2 Sep 2012 16:57:02 +0200 Subject: [PATCH 146/310] Remove addPeerManually method in TomahawkWindow --- src/TomahawkWindow.cpp | 32 -------------------------------- src/TomahawkWindow.h | 2 -- 2 files changed, 34 deletions(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index c0b7532b46..a79408b7f7 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -529,7 +529,6 @@ TomahawkWindow::setupSignals() // ActionCollection *ac = ActionCollection::instance(); - // connect( ui->actionAddPeerManually, SIGNAL( triggered() ), SLOT( addPeerManually() ) ); connect( ac->getAction( "preferences" ), SIGNAL( triggered() ), SLOT( showSettingsDialog() ) ); connect( ac->getAction( "diagnostics" ), SIGNAL( triggered() ), SLOT( showDiagnosticsDialog() ) ); connect( ac->getAction( "legalInfo" ), SIGNAL( triggered() ), SLOT( legalInfo() ) ); @@ -861,37 +860,6 @@ TomahawkWindow::rescanCollectionManually() } -void -TomahawkWindow::addPeerManually() -{ - TomahawkSettings* s = TomahawkSettings::instance(); - bool ok; - QString addr = QInputDialog::getText( this, tr( "Connect To Peer" ), - tr( "Enter peer address:" ), QLineEdit::Normal, - s->value( "connip" ).toString(), &ok ); // FIXME - if ( !ok ) - return; - - s->setValue( "connip", addr ); - QString ports = QInputDialog::getText( this, tr( "Connect To Peer" ), - tr( "Enter peer port:" ), QLineEdit::Normal, - s->value( "connport", "50210" ).toString(), &ok ); - if ( !ok ) - return; - - s->setValue( "connport", ports ); - int port = ports.toInt(); - QString key = QInputDialog::getText( this, tr( "Connect To Peer" ), - tr( "Enter peer key:" ), QLineEdit::Normal, - "whitelist", &ok ); - if ( !ok ) - return; - - qDebug() << "Attempting to connect to" << addr; - Servent::instance()->connectToPeer( addr, port, key ); -} - - void TomahawkWindow::showOfflineSources() { diff --git a/src/TomahawkWindow.h b/src/TomahawkWindow.h index b666d02195..949dfb150c 100644 --- a/src/TomahawkWindow.h +++ b/src/TomahawkWindow.h @@ -119,8 +119,6 @@ private slots: void onXSPFError( XSPFLoader::XSPFErrorCode error ); void onXSPFOk( const Tomahawk::playlist_ptr& ); - void addPeerManually(); - void onPlaybackLoading( const Tomahawk::result_ptr& result ); void audioStarted(); From 1e896eb554f70e590c4f1f642e982bec65f24ab1 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Mon, 7 Jan 2013 01:17:36 +0100 Subject: [PATCH 147/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 88 +++++++---------- lang/tomahawk_bg.ts | 88 +++++++---------- lang/tomahawk_bn_IN.ts | 88 +++++++---------- lang/tomahawk_ca.ts | 88 +++++++---------- lang/tomahawk_cs.ts | 88 +++++++---------- lang/tomahawk_de.ts | 88 +++++++---------- lang/tomahawk_el.ts | 88 +++++++---------- lang/tomahawk_en.ts | 88 +++++++---------- lang/tomahawk_es.ts | 214 ++++++++++++++++++----------------------- lang/tomahawk_fi.ts | 90 +++++++---------- lang/tomahawk_fr.ts | 88 +++++++---------- lang/tomahawk_gl.ts | 88 +++++++---------- lang/tomahawk_hi_IN.ts | 88 +++++++---------- lang/tomahawk_hu.ts | 88 +++++++---------- lang/tomahawk_it.ts | 88 +++++++---------- lang/tomahawk_ja.ts | 88 +++++++---------- lang/tomahawk_lt.ts | 88 +++++++---------- lang/tomahawk_pl.ts | 88 +++++++---------- lang/tomahawk_pt_BR.ts | 88 +++++++---------- lang/tomahawk_ru.ts | 150 ++++++++++++----------------- lang/tomahawk_sv.ts | 88 +++++++---------- lang/tomahawk_tr.ts | 88 +++++++---------- lang/tomahawk_zh_CN.ts | 88 +++++++---------- lang/tomahawk_zh_TW.ts | 88 +++++++---------- 24 files changed, 887 insertions(+), 1415 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 1504c58b30..fde5707bb3 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -2421,8 +2421,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2981,22 +2981,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall الأكثر شهرة بالإجمال - + Artists فنانين - + Albums ألبومات - + Tracks أغاني @@ -3004,12 +3004,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. توماهوك يلعب "%1" ل%2%3. - + on "%1" على "%1" @@ -3045,7 +3045,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums ألبومات @@ -3353,13 +3353,13 @@ enter the displayed PIN number here: - + Hide Menu Bar إخفي شريط القائمة - + Show Menu Bar أظهر شريط القائمة @@ -3374,136 +3374,114 @@ enter the displayed PIN number here: ال&قائمة الرئيسية - - - - Connect To Peer - ربط بالند - - - - Enter peer address: - أدخل عنوان الند: - - - - Enter peer port: - أدخل بوابة الند: - - - - Enter peer key: - أدخل مفتاح الند: - - - + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 حقوق الطبع والنشر ٢٠١٠ - ٢٠١٢ - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 5d2f8c9f0d..24a900f440 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -2435,8 +2435,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Локална мрежа @@ -2995,22 +2995,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Най-известни - + Artists Артисти - + Albums Албуми - + Tracks Песни @@ -3018,12 +3018,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk възпроизвежда "%1" от %2%3 - + on "%1" от "%1" @@ -3059,7 +3059,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Албуми @@ -3367,13 +3367,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Скрий лентата с менюто - + Show Menu Bar Покажи лентата с менюто @@ -3388,139 +3388,117 @@ enter the displayed PIN number here: &Основно меню - - - - Connect To Peer - Свържи се с друг потребител - - - - Enter peer address: - Въведи адресът на отдалеченият потребител: - - - - Enter peer port: - Въведи порт: - - - - Enter peer key: - Въведи ключът за удостоверяване: - - - + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Всички права - запазени. 2010 - 2012 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index e5587675aa..49bc697135 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - - - - - Enter peer address: - - - - - Enter peer port: - - - - - Enter peer key: - - - - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 92b9043c53..fdf76c2367 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -2419,8 +2419,8 @@ Torneu a autenticar-vos. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2979,22 +2979,22 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top General - + Artists Artistes - + Albums Àlbums - + Tracks Cançons @@ -3002,12 +3002,12 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk està reproduint "%1" de %2%3. - + on "%1" a "%1" @@ -3043,7 +3043,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Àlbums @@ -3351,13 +3351,13 @@ introduïu el PIN aquí: - + Hide Menu Bar - + Show Menu Bar @@ -3372,136 +3372,114 @@ introduïu el PIN aquí: - - - - Connect To Peer - Connexió Remota - - - - Enter peer address: - Introduïu l'adreça remota: - - - - Enter peer port: - Introduïu el port remot: - - - - Enter peer key: - Introduïu la clau remota: - - - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 71099c0161..351764363c 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -2420,8 +2420,8 @@ Měl byste ještě jednou zkusit ověření pravosti. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Místní síť @@ -2980,22 +2980,22 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Všeobecně nejlepší - + Artists Umělci - + Albums Alba - + Tracks Skladby @@ -3003,12 +3003,12 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk hraje "%1" od %2%3. - + on "%1" na "%1" @@ -3044,7 +3044,7 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Alba @@ -3352,13 +3352,13 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: - + Hide Menu Bar Skrýt pruh s hlavní nabídkou - + Show Menu Bar Ukázat pruh s hlavní nabídkou @@ -3373,136 +3373,114 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: Hlavní &nabídka - - - - Connect To Peer - Spojit se s jiným Tomahawkem - - - - Enter peer address: - Zadejte adresu protějšku: - - - - Enter peer port: - Zadejte přípojku protějšku: - - - - Enter peer key: - Zadejte klíč protějšku: - - - + XSPF Error Chyba XSPF - + This is not a valid XSPF playlist. Toto není platný seznam skladeb XSPF. - + Failed to save tracks Nepodařilo se uložit skladby - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Některé skladby v seznamu skladeb neobsahují ani umělce ani název. Tyto budou přehlíženy. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. Ujistěte se, že máte nainstalováno vhodné jádro Phonona potřebné přídavné moduly. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. - + Station Stanice - + Create New Station Vytvořit novou stanici - + Name: Název: - + Playlist Seznam skladeb - + Automatic Playlist Automatický seznam skladeb - + Pause Pozastavit - + &Play &Přehrát - + Authentication Error Chyba při ověřování - + Error connecting to SIP: Authentication failed! Chyba spojení se SIP: Potvrzení pravosti se nezdařilo! - + %1 by %2 track, artist name %1 od %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Autorské právo 2010 - 2012 - + Thanks to: Poděkování: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 166c138ae0..3d1ab5bebf 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -2418,8 +2418,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Lokales Netzwerk @@ -2978,22 +2978,22 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top Allgemein - + Artists Künstler - + Albums Alben - + Tracks Stücke @@ -3001,12 +3001,12 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk spielt "%1" von %2%3. - + on "%1" auf "%1" @@ -3042,7 +3042,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Alben @@ -3350,13 +3350,13 @@ Tomahawk auf Twitter's Website authentifiziert hast: - + Hide Menu Bar Menüleiste ausblenden - + Show Menu Bar Menüleiste einblenden @@ -3371,136 +3371,114 @@ Tomahawk auf Twitter's Website authentifiziert hast: Haupt&menü - - - - Connect To Peer - Mit anderem Tomahawk verbinden - - - - Enter peer address: - Gib die Adresse der Gegenstelle ein: - - - - Enter peer port: - Gib den Port der Gegenstelle ein: - - - - Enter peer key: - Gib den Schlüssel der Gegenstelle ein: - - - + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copright 2010 - 2012 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 2aec0e4348..7977a4025b 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -2419,8 +2419,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2979,22 +2979,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -3002,12 +3002,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3043,7 +3043,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3350,13 +3350,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Απόκρυψη Γραμμής Μενού - + Show Menu Bar @@ -3371,136 +3371,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - Σύνδεση Σε Ομότιμο Κόμβο - - - - Enter peer address: - Εισαγωγή διεύθυνσης ομότιμου κόμβου: - - - - Enter peer port: - Εισαγωγή θύρας ομότιμου κόμβου: - - - - Enter peer key: - Εισαγωγή κλειδιού ομότιμου κόμβου: - - - + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 078cd80ec6..c553282b51 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -2423,8 +2423,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Local Network @@ -2983,22 +2983,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top Overall - + Artists Artists - + Albums Albums - + Tracks Tracks @@ -3006,12 +3006,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk is playing "%1" by %2%3. - + on "%1" on "%1" @@ -3047,7 +3047,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albums @@ -3355,13 +3355,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Hide Menu Bar - + Show Menu Bar Show Menu Bar @@ -3376,136 +3376,114 @@ enter the displayed PIN number here: &Main Menu - - - - Connect To Peer - Connect To Peer - - - - Enter peer address: - Enter peer address: - - - - Enter peer port: - Enter peer port: - - - - Enter peer key: - Enter peer key: - - - + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index d450651174..44e6b5bbbb 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -55,7 +55,7 @@ conectarse a usted y transmitir música? Connecting... - Conectando... + Conectando… @@ -145,7 +145,7 @@ conectarse a usted y transmitir música? &Play - Re&producir + &Reproducir @@ -225,7 +225,7 @@ conectarse a usted y transmitir música? &View Logfile - + &Ver archivo de registro @@ -424,7 +424,7 @@ conectarse a usted y transmitir música? Stations - Radio + Estaciones @@ -454,7 +454,7 @@ conectarse a usted y transmitir música? Tomahawk Crash Reporter - Reportador de fallos de Tomahawk + Informador de fallos de Tomahawk @@ -484,7 +484,7 @@ conectarse a usted y transmitir música? Uploaded %L1 of %L2 KB. - Subidos %L1 of %L2 KBs. + Se subieron %L1 de %L2 KB. @@ -521,7 +521,7 @@ conectarse a usted y transmitir música? Delete Account - Eliminar Cuenta + Eliminar cuenta @@ -671,7 +671,7 @@ conectarse a usted y transmitir música? Indexing database - Indexando la base de datos + Indizando la base de datos @@ -679,7 +679,7 @@ conectarse a usted y transmitir música? Filter... - Filtro... + Filtrar… @@ -751,7 +751,7 @@ conectarse a usted y transmitir música? ... - ... + @@ -931,7 +931,7 @@ conectarse a usted y transmitir música? Enter a title for the new playlist: - Introduzca un nombre para la nueva lista de reproducción: + Escriba un nombre para la lista de reproducción nueva: @@ -1022,7 +1022,7 @@ conectarse a usted y transmitir música? Accuracy - + Precisión @@ -1057,7 +1057,7 @@ conectarse a usted y transmitir música? Not available - + No disponible @@ -1103,13 +1103,13 @@ conectarse a usted y transmitir música? 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> en <b>%2</b> @@ -1141,7 +1141,7 @@ conectarse a usted y transmitir música? New Playlist - Crear nueva lista de reproducción + Lista de reproducción nueva @@ -1212,7 +1212,7 @@ conectarse a usted y transmitir música? Proxy login - Proxy login + Inicio de sesión de proxy @@ -1252,7 +1252,7 @@ conectarse a usted y transmitir música? %n year(s) ago - hace %n añohace%n años + hace %n añohace %n años @@ -1317,12 +1317,12 @@ conectarse a usted y transmitir música? Friend Finders - Buscador de amigos + Buscadores de amigos Music Finders - Buscador de musica + Buscadores de música @@ -1333,13 +1333,13 @@ conectarse a usted y transmitir música? %1 Config - + Configuración de %1 %1 Configuration - + Configuración de %1 @@ -1347,7 +1347,7 @@ conectarse a usted y transmitir música? ZIP/UNZIP API error %1 - ZIP/UNZIP API error %1 + Error de API de ZIP/UNZIP %1 @@ -1408,7 +1408,7 @@ conectarse a usted y transmitir música? Results for '%1' - Resultados para '%1' + Resultados para «%1» @@ -1688,7 +1688,7 @@ y estaciones basadas en sus gustos personales. Top 10 - Top 10 + 10 mejores @@ -1718,7 +1718,7 @@ y estaciones basadas en sus gustos personales. Latest Additions - Añadido recientemente + Añadidos recientemente @@ -2031,7 +2031,7 @@ y estaciones basadas en sus gustos personales. Add Account - Añadir Cuenta + Añadir cuenta @@ -2051,12 +2051,12 @@ y estaciones basadas en sus gustos personales. Connecting... - Conectando... + Conectando… Offline - Fuera de línea + Desconectado @@ -2077,7 +2077,7 @@ y estaciones basadas en sus gustos personales. Configure this Google Account - Configura esta cuenta de Google + Configurar esta cuenta de Google @@ -2087,7 +2087,7 @@ y estaciones basadas en sus gustos personales. Enter your Google login to connect with your friends using Tomahawk! - Introducir los datos de su cuenta Google para conectar con sus amigos que usen Tomahawk + Escriba los datos de su cuenta de Google para conectar con sus amigos que usen Tomahawk. @@ -2118,7 +2118,7 @@ y estaciones basadas en sus gustos personales. Enter Google Address: - Introducir la dirección de correo de Google: + Escriba la dirección de correo de Google: @@ -2353,7 +2353,7 @@ Deberá volver a intentar la autenticación. Send Message! - Enviar mensaje! + Enviar mensaje @@ -2363,7 +2363,7 @@ Deberá volver a intentar la autenticación. Send Mention! - Enviar mención! + Enviar mención @@ -2388,7 +2388,7 @@ Deberá volverse a autenticar. There was an error posting your status -- sorry! - Error publicando su estado + Hubo un error al publicar su estado; lo sentimos. @@ -2399,17 +2399,17 @@ Deberá volverse a autenticar. Your tweet has been posted! - Su tweet se ha publicado + Se ha publicado su tuit. There was an error posting your direct message -- sorry! - Error publicando el mensaje directo + Hubo un error al enviar su mensaje directo; lo sentimos. Your message has been posted! - El mensaje se ha publicado + Se ha enviado su mensaje. @@ -2417,16 +2417,16 @@ Deberá volverse a autenticar. Log on to your Jabber/XMPP account to connect to your friends - Inicie sesón en Jabber/XMPP para conectar con sus amigos + Inicie sesión en Jabber/XMPP para conectar con sus amigos Tomahawk::Accounts::ZeroconfAccount - - + + Local Network - + Red local @@ -2434,7 +2434,7 @@ Deberá volverse a autenticar. Local Network - + Red local @@ -2509,7 +2509,7 @@ Deberá volverse a autenticar. &Delete Items - Eliminar &de la cola + &Eliminar elementos @@ -2519,7 +2519,7 @@ Deberá volverse a autenticar. &Delete Item - Eliminar &de la cola + &Eliminar elemento @@ -2677,12 +2677,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. 0 BPM - 0 BPM + 0 PPM 500 BPM - 500 BPM + 500 PPM @@ -2702,7 +2702,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. 100 dB - 100 db + 100 dB @@ -2782,7 +2782,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Descending - Descendent + Descendente @@ -2825,7 +2825,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Longitude - Duración + Longitud @@ -2879,7 +2879,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. from my radio - + de mi radio @@ -2889,37 +2889,37 @@ Intente ajustar los filtros para reproducir nuevas canciones. Variety - + Variedad Adventurousness - + Audacia very low - + muy bajo low - + bajo moderate - + moderado high - + alto very high - + muy alto @@ -2929,22 +2929,22 @@ Intente ajustar los filtros para reproducir nuevas canciones. about %1 BPM - sobre %1 BPM + alrededor de %1 PPM about %n minute(s) long - sobre %n minuto de duraciónsobre %n minutos de duración + alrededor de %n minuto de duraciónalrededor de %n minutos de duración about %1 dB - sobre %1 dB + alrededor de %1 dB at around %1%2 %3 - sobre %1%2 %3 + alrededor de %1%2 %3 @@ -2983,22 +2983,22 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top total - + Artists Artistas - + Albums Álbumes - + Tracks Pistas @@ -3006,12 +3006,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk está reproduciendo "%1" de %2%3. - + on "%1" en "%1" @@ -3047,7 +3047,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Álbumes @@ -3088,7 +3088,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. XSPF Error - Error XSPF + Error de XSPF @@ -3154,7 +3154,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. %n people - + %n persona%n personas @@ -3274,7 +3274,7 @@ introduzca su número PIN aquí: Local Network - + Red local @@ -3355,13 +3355,13 @@ introduzca su número PIN aquí: - + Hide Menu Bar Esconder barra de menú - + Show Menu Bar Mostrar barra de menú @@ -3376,136 +3376,114 @@ introduzca su número PIN aquí: &Menú principal - - - - Connect To Peer - Conectar a un par - - - - Enter peer address: - Introducir dirección del par: - - - - Enter peer port: - Introducir puerto del par: - - - - Enter peer key: - Introducir contraseña del par: - - - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Nueva estación - + Create New Station Crear nueva estación - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010-2012 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 87b53e5546..0c89f274d1 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -225,7 +225,7 @@ yhdistää ja toistaa sinulta virtaa? &View Logfile - + &Näytä lokitiedosto @@ -2426,8 +2426,8 @@ Voit haluta yrittää tunnistautumista uudelleen. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Paikallisverkko @@ -2986,22 +2986,22 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Kokonaisuudessaan parhaat - + Artists Artistit - + Albums Albumit - + Tracks Kappaleet @@ -3009,12 +3009,12 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk soittaa artistin %2 kappaletta ”%1”%3. - + on "%1" albumilta ”%1” @@ -3050,7 +3050,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumit @@ -3358,13 +3358,13 @@ anna siellä näytetty PIN-koodi tähän: - + Hide Menu Bar Piilota valikkorivi - + Show Menu Bar Näytä valikkorivi @@ -3379,136 +3379,114 @@ anna siellä näytetty PIN-koodi tähän: &Päävalikko - - - - Connect To Peer - Yhdistä vertaiseen - - - - Enter peer address: - Anna vertaisen osoite: - - - - Enter peer port: - Anna vertaisen portti: - - - - Enter peer key: - Anna vertaisen avain: - - - + XSPF Error XSPF-virhe - + This is not a valid XSPF playlist. Tämä ei ole kelvollinen XSPF-soittolista. - + Failed to save tracks Kappaleiden tallentaminen epäonnistui - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010–2012 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 16e59fbb94..6efbec2f23 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -2420,8 +2420,8 @@ Essayez de vous authentifier de nouveau. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Réseau local @@ -2980,22 +2980,22 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top global - + Artists Artistes - + Albums Albums - + Tracks Pistes @@ -3003,12 +3003,12 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk joue "%1" par %2%3. - + on "%1" sur "%1" @@ -3044,7 +3044,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albums @@ -3352,13 +3352,13 @@ saisissez le numéro PIN ici : - + Hide Menu Bar Masquer la barre de menu - + Show Menu Bar Afficher la barre de menu @@ -3373,136 +3373,114 @@ saisissez le numéro PIN ici : &Menu Principal - - - - Connect To Peer - Connexion à un pair - - - - Enter peer address: - Adresse du pair : - - - - Enter peer port: - Port du pair : - - - - Enter peer key: - Clé du pair : - - - + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Droit d'auteur 2010 - 2012 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 1c6268cec2..bc958c7ab9 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -2421,8 +2421,8 @@ Proba a volver a autenticarte. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2981,22 +2981,22 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top xeral - + Artists Artistas - + Albums Álbums - + Tracks Pistas @@ -3004,12 +3004,12 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk está reproducindo «%1» por %2 %3. - + on "%1" en «%1» @@ -3045,7 +3045,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Álbums @@ -3352,13 +3352,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Agochar a barra de menú - + Show Menu Bar Mostrar a barra de menú @@ -3373,137 +3373,115 @@ enter the displayed PIN number here: Menú &principal - - - - Connect To Peer - Conectar cun parceiro - - - - Enter peer address: - Introducir a dirección do parceiro: - - - - Enter peer port: - Introducir o porto do parceiro: - - - - Enter peer key: - Introducir a clave do parceiro: - - - + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autentificación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 5c4195a4a5..b1f2261d77 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - - - - - Enter peer address: - - - - - Enter peer port: - - - - - Enter peer key: - - - - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 45e38c005f..18dada1f0c 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumok @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - - - - - Enter peer address: - - - - - Enter peer port: - - - - - Enter peer key: - - - - + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk Tomahawkról diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 24cfc80ba2..2bc350e2b1 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists Artisti - + Albums Album - + Tracks Tracce @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk sta riproducendo "%1" di %2%3. - + on "%1" su "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Album @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - Connettiti al peer - - - - Enter peer address: - Inserisci indirizzo peer: - - - - Enter peer port: - Inserisci porta peer: - - - - Enter peer key: - Inserisce chiave peer: - - - + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 1f0722ac23..7689614d2b 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -2423,8 +2423,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network ローカルネットワーク @@ -2983,22 +2983,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall もっともトップ - + Artists アーティスト - + Albums アルバム - + Tracks トラック @@ -3006,12 +3006,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawkが%2の%3の「%1」を再生しています - + on "%1" 「%1」 @@ -3047,7 +3047,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums アルバム @@ -3355,13 +3355,13 @@ enter the displayed PIN number here: - + Hide Menu Bar メニューバーを隠す - + Show Menu Bar メニューバーを表示 @@ -3376,136 +3376,114 @@ enter the displayed PIN number here: メインメニュー - - - - Connect To Peer - ピアに接続する - - - - Enter peer address: - ピアのアドレスを入力: - - - - Enter peer port: - ピアのポートを入力: - - - - Enter peer key: - ピアのキーを入力: - - - + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 41e3274580..2a5fa27df3 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists Atlikėjai - + Albums Albumai - + Tracks Takeliai @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk groja "%1" atliekamą %2%3. - + on "%1" iš albumo "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumai @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - - - - - Enter peer address: - - - - - Enter peer port: - - - - - Enter peer key: - - - - + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Autorinės teisės 2010 - 2012 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 4f138c77df..47c4e243b7 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -2420,8 +2420,8 @@ Możesz spróbować ponowić uwierzytelnienie. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2980,22 +2980,22 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Top Wszechczasów - + Artists Artyści - + Albums Albumy - + Tracks Utwory @@ -3003,12 +3003,12 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk odtwarza "%1" wykonawcy %2%3. - + on "%1" z "%1" @@ -3044,7 +3044,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Albumy @@ -3352,13 +3352,13 @@ wprowadź pokazany numer PIN tutaj: - + Hide Menu Bar - + Show Menu Bar @@ -3373,136 +3373,114 @@ wprowadź pokazany numer PIN tutaj: - - - - Connect To Peer - - - - - Enter peer address: - - - - - Enter peer port: - - - - - Enter peer key: - - - - + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index c5257c0c61..a309d1b19d 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -2420,8 +2420,8 @@ Você pode tentar re-autenticar. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Rede local @@ -2980,22 +2980,22 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Classificação Geral - + Artists Artistas - + Albums Álbuns - + Tracks Faixas @@ -3003,12 +3003,12 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk está tocando "%1" de %2%3. - + on "%1" em "%1" @@ -3044,7 +3044,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Álbuns @@ -3352,13 +3352,13 @@ colocar o número PIN mostrado aqui: - + Hide Menu Bar Esconder barra de menu - + Show Menu Bar Mostrar barra de menu @@ -3373,136 +3373,114 @@ colocar o número PIN mostrado aqui: &Menu principal - - - - Connect To Peer - Conectar-se ao par - - - - Enter peer address: - Coloque o endereço do par: - - - - Enter peer port: - Coloque a porta do par: - - - - Enter peer key: - Coloque a chave do par: - - - + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Copyright 2010 - 2012 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 9b884f77e1..1b665a4597 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -24,7 +24,7 @@ connect and stream from you? Tomahawk needs you to decide whether %1 is allowed to connect. - + Разрешить ли подключение %1? @@ -156,12 +156,12 @@ connect and stream from you? &Previous Track - &Предыдущий + &Предыдущая &Next Track - &Следующий + &Следующая @@ -199,7 +199,7 @@ connect and stream from you? Minimize - + Свернуть @@ -372,7 +372,7 @@ connect and stream from you? Love - Любимый + Любимая @@ -596,22 +596,22 @@ connect and stream from you? Tempo - + Ритм Loudness - + Loudness Danceability - + Danceability Energy - + Мощность @@ -626,7 +626,7 @@ connect and stream from you? Artist Familiarity - + Схожие Исполнители @@ -641,12 +641,12 @@ connect and stream from you? Apply steering command - + Apply steering command Reset all steering commands - + Reset all steering commands @@ -732,7 +732,7 @@ connect and stream from you? %1 is listening along with you! - + %1 слушает вместе с вами! @@ -1031,7 +1031,7 @@ connect and stream from you? Perfect match - Превосходное совпадение + Превосходное @@ -1455,7 +1455,7 @@ connect and stream from you? Manage how Tomahawk finds music on your computer. - + Определить где Tomahawk искать музыку на вашем компьютере. @@ -1587,7 +1587,7 @@ connect and stream from you? Upload collection list to The Echo Nest to enable user radio - + Загрузить список коллекции на The Echo Nest, чтобы включить пользовательское радио @@ -1646,7 +1646,7 @@ connect and stream from you? Tweet - Твит + Твитнуть @@ -1656,12 +1656,12 @@ connect and stream from you? Listening to "%1" by %2 on "%3". %4 - Прослушивание "%1" by %2 on "%3". %4 + Слушает Песню "%1" %2 альбома "%3". %4 %1 characters left - %1 символов осталось + Осталось %1 символов @@ -2070,7 +2070,7 @@ connect and stream from you? Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - + К сожалению, автоматическая установка этого расширения не доступна или недоступна для вашей платформы. <br /> <br /> Пожалуйста, используйте "Установить из файла", по получении его из дистрибутива или скомпилируйте его самостоятельно. Дальнейшие инструкции можно найти здесь: <br /> <br /> http://www.tomahawk-player.org/resolvers/%1 @@ -2281,7 +2281,7 @@ connect and stream from you? Connect to your Twitter followers. - Подключитесь к Twitter followers + Подключитесь к Twitter @@ -2424,8 +2424,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network Домашняя сеть @@ -2644,7 +2644,7 @@ Try tweaking the filters for a new set of songs to play. No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings - + Нет пользователей с каталогом Echo Nest. Попробуйте включить настройку в настройках коллекции @@ -2982,22 +2982,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Самые популярные - + Artists Исполнители - + Albums Альбомы - + Tracks Песни @@ -3005,14 +3005,14 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk играет "%1" %2%3. - + on "%1" - + "%1" @@ -3046,7 +3046,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums Альбом @@ -3056,7 +3056,7 @@ Try tweaking the filters for a new set of songs to play. Listening to "%1" by %2 and loving it! %3 - + Слушаю любимую песню "%1" %2 %3 @@ -3158,7 +3158,7 @@ Try tweaking the filters for a new set of songs to play. loved this track - любимый + любимая @@ -3311,12 +3311,12 @@ enter the displayed PIN number here: &Love - &Любимый + &Любиая Un-&Love - &Не любимый + &Нелюбимая @@ -3353,13 +3353,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Спрятать строку меню приложения - + Show Menu Bar Показать строку меню приложения @@ -3374,136 +3374,114 @@ enter the displayed PIN number here: &Главное меню - - - - Connect To Peer - Связаться с Peer - - - - Enter peer address: - Введите адрес узла: - - - - Enter peer port: - Введите адрес порта: - - - - Enter peer key: - Введите адрес ключа: - - - + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. Убедитесь, что у вас есть подходящий Phonon backend и необходимые плагины установлены. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. - + Station Станция - + Create New Station Создать новую станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 Авторское право 2010 - 2012 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3531,7 +3509,7 @@ enter the displayed PIN number here: You've listened to this track %n time(s). - + Слушал эту песню %n раз.Слушал эту песню %n раз.Слушал эту песню %n раз. @@ -3541,12 +3519,12 @@ enter the displayed PIN number here: You first listened to it on %1. - Первое прослушивание этой песни %1. + Первый раз слушали эту песню %1. You've listened to %1 %n time(s). - + Вы слушали %1 %n раз.Вы слушали %1 %n раза.Вы слушали %1 %n раз. @@ -3844,7 +3822,7 @@ Lyrics for "%1" by %2: Failed to fetch the desired playlist from the network, or the desired file does not exist - + Не удалось получить желаемый плейлист из сети, или нужный файл не существует diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index d34cd30731..62ea1a8cb2 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -2416,8 +2416,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2976,22 +2976,22 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::InfoSystem::ChartsPlugin - + Top Overall Generell topplista - + Artists Artister - + Albums Album - + Tracks Spår @@ -2999,12 +2999,12 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3040,7 +3040,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3348,13 +3348,13 @@ anger du PIN-koden här: - + Hide Menu Bar - + Show Menu Bar @@ -3369,136 +3369,114 @@ anger du PIN-koden här: - - - - Connect To Peer - Anslut till klient - - - - Enter peer address: - Ange klientadress: - - - - Enter peer port: - Ange klientport: - - - - Enter peer key: - Ange klientnyckel: - - - + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist - + Automatic Playlist - + Pause Paus - + &Play - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 5208df5a1d..f975e08e18 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists - + Albums - + Tracks @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - - - - - Enter peer address: - - - - - Enter peer port: - - - - - Enter peer key: - - - - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 314d7cc432..98e148a399 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -2421,8 +2421,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2981,22 +2981,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall 全局排行榜 - + Artists 艺术家 - + Albums 专辑 - + Tracks 歌曲 @@ -3004,12 +3004,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. Tomahawk 正在播放 %2%3 的 '%1'。 - + on "%1" @@ -3045,7 +3045,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums 专辑 @@ -3353,13 +3353,13 @@ enter the displayed PIN number here: - + Hide Menu Bar 隐藏菜单栏 - + Show Menu Bar 显示菜单栏 @@ -3374,136 +3374,114 @@ enter the displayed PIN number here: 主菜单 - - - - Connect To Peer - 连接到客户端 - - - - Enter peer address: - 输入客户端地址: - - - - Enter peer port: - 输入客户端端口: - - - - Enter peer key: - 输入客户端密钥: - - - + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 版权所有 2010 - 2012 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index f5e11ae921..89a55f44a5 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -2415,8 +2415,8 @@ You may wish to try re-authenticating. Tomahawk::Accounts::ZeroconfAccount - - + + Local Network @@ -2971,22 +2971,22 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::ChartsPlugin - + Top Overall - + Artists 演出者 - + Albums 專輯 - + Tracks 曲目 @@ -2994,12 +2994,12 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::FdoNotifyPlugin - + Tomahawk is playing "%1" by %2%3. - + on "%1" @@ -3035,7 +3035,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::InfoSystem::NewReleasesPlugin - + Albums 專輯 @@ -3342,13 +3342,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3363,136 +3363,114 @@ enter the displayed PIN number here: - - - - Connect To Peer - 連接點對點 - - - - Enter peer address: - 輸入對等地址: - - - - Enter peer port: - 輸入對等連接埠: - - - - Enter peer key: - 輸入對等密鑰: - - - + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2012 - + Thanks to: - + About Tomahawk From 7a04f2242f2863c56a98e17ce4f1d128683c0e61 Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Sun, 6 Jan 2013 19:52:27 -0500 Subject: [PATCH 148/310] Update ChangeLog --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3c2ca1bfcb..bb32357f5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24,6 +24,7 @@ Version 0.6.0: * Support dropping of new Soundcloud user, track, set & likes URLs. * Add HotNewHipHop as available chart. * Add iTunes as available source for New Releases. + * Updates and additions to translations including: Japanese, Bulgarian, Finish, Russian, Arabic, Chinese, Swedish and more. * (Linux) Allow disabling of playback notifications. Version 0.5.5: @@ -430,4 +431,4 @@ Version 0.0.2: * Tomahawk now asks you to authorize new contacts. Version 0.0.1: - * First public release. \ No newline at end of file + * First public release. From 66dae03798561ecf2282176cc404c3ba3b20ddfa Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Sun, 6 Jan 2013 19:53:04 -0500 Subject: [PATCH 149/310] Update ChangeLog Line break to changelog --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index bb32357f5c..1ee21cc73c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24,7 +24,8 @@ Version 0.6.0: * Support dropping of new Soundcloud user, track, set & likes URLs. * Add HotNewHipHop as available chart. * Add iTunes as available source for New Releases. - * Updates and additions to translations including: Japanese, Bulgarian, Finish, Russian, Arabic, Chinese, Swedish and more. + * Updates and additions to translations including: Japanese, Bulgarian, + Finish, Russian, Arabic, Chinese, Swedish and more. * (Linux) Allow disabling of playback notifications. Version 0.5.5: From 68a24914b931627b80bb00ea673e3fc8cc31c09a Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Mon, 7 Jan 2013 09:20:56 -0500 Subject: [PATCH 150/310] Update ChangeLog Add linkback source icon to changelog. --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 1ee21cc73c..ec1e635325 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Version 0.6.0: biographies. * New AudioControl logic - only enable Prev/Skip buttons if available. * Added more options to right-click/context menus. + * Resolver source icon in Audiocontrols now supports being a link-back URL to original source. * Make friends' currently playing song (in sidebar) clickable. * Improve MusicBrainz plugin to use normalized artist names and avoid duplicate tracks. From a88a5a25500804ebbcff4bb1d482ae1f7c9713e5 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 17:21:12 +0100 Subject: [PATCH 151/310] Change my mail address once again, let's see how long this lasts :-) --- AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index c07550f063..19a9e07fd9 100644 --- a/AUTHORS +++ b/AUTHORS @@ -5,7 +5,7 @@ Tomahawk is primarily authored by: Contributors include: * Leo Franchi -* Dominik Schmidt +* Dominik Schmidt * Jeff Mitchell * J Herskowitz * Alejandro Wainzinger From 5f1adf99b3dcba23fe4050e949280cb185d1faea Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 17:25:18 +0100 Subject: [PATCH 152/310] Add hugo___ and teo- to AUTHORS --- AUTHORS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AUTHORS b/AUTHORS index 19a9e07fd9..2ef2e1853d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -9,6 +9,8 @@ Contributors include: * Jeff Mitchell * J Herskowitz * Alejandro Wainzinger +* Hugo Lindström +* Teo Mrnjavac Thanks to: From 1268e6a053d784dbfe17bef4f0200d1ea8c9f4e2 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 17:28:54 +0100 Subject: [PATCH 153/310] More teo- fication --- src/TomahawkWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 095499b371..e6f83e33c7 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -1226,7 +1226,7 @@ TomahawkWindow::showAboutTomahawk() const QString thanksto( tr( "Thanks to:" ) ); desc = QString( "%1
Christian Muehlhaeuser <muesli@tomahawk-player.org>

" - "%2 Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Syd Lawrence, Michael Zanetti, Harald Sitter, Steve Robertson" ) + "%2 Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Syd Lawrence, Michael Zanetti, Harald Sitter, Steve Robertson, Teo Mrnjavac" ) .arg( copyright ) .arg( thanksto ); From 537903f15a01b199f2f206e4fdf971c28abc0a74 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 22:27:41 +0100 Subject: [PATCH 154/310] Remove winhttp, it was used for liblastfm2 back when we used to ship it --- thirdparty/winhttp/README | 1 - thirdparty/winhttp/winhttp.h | 248 ----------------------------------- 2 files changed, 249 deletions(-) delete mode 100644 thirdparty/winhttp/README delete mode 100644 thirdparty/winhttp/winhttp.h diff --git a/thirdparty/winhttp/README b/thirdparty/winhttp/README deleted file mode 100644 index 230cd51fcf..0000000000 --- a/thirdparty/winhttp/README +++ /dev/null @@ -1 +0,0 @@ -Note: originally from http://gtk-for-symbian.googlecode.com/svn/trunk/gio/win32/winhttp.h diff --git a/thirdparty/winhttp/winhttp.h b/thirdparty/winhttp/winhttp.h deleted file mode 100644 index fee814c6ab..0000000000 --- a/thirdparty/winhttp/winhttp.h +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (C) 2007 Francois Gouget - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef __WINE_WINHTTP_H -#define __WINE_WINHTTP_H - -#define WINHTTPAPI -#define BOOLAPI WINHTTPAPI BOOL WINAPI - - -typedef LPVOID HINTERNET; -typedef HINTERNET *LPHINTERNET; - -#define INTERNET_DEFAULT_PORT 0 -#define INTERNET_DEFAULT_HTTP_PORT 80 -#define INTERNET_DEFAULT_HTTPS_PORT 443 -typedef WORD INTERNET_PORT; -typedef INTERNET_PORT *LPINTERNET_PORT; - -#define INTERNET_SCHEME_HTTP 1 -#define INTERNET_SCHEME_HTTPS 2 -typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME; - -/* flags for WinHttpOpen */ -#define WINHTTP_FLAG_ASYNC 0x10000000 - -/* flags for WinHttpOpenRequest */ -#define WINHTTP_FLAG_ESCAPE_PERCENT 0x00000004 -#define WINHTTP_FLAG_NULL_CODEPAGE 0x00000008 -#define WINHTTP_FLAG_ESCAPE_DISABLE 0x00000040 -#define WINHTTP_FLAG_ESCAPE_DISABLE_QUERY 0x00000080 -#define WINHTTP_FLAG_BYPASS_PROXY_CACHE 0x00000100 -#define WINHTTP_FLAG_REFRESH WINHTTP_FLAG_BYPASS_PROXY_CACHE -#define WINHTTP_FLAG_SECURE 0x00800000 - -#define WINHTTP_ACCESS_TYPE_DEFAULT_PROXY 0 -#define WINHTTP_ACCESS_TYPE_NO_PROXY 1 -#define WINHTTP_ACCESS_TYPE_NAMED_PROXY 3 - -#define WINHTTP_NO_PROXY_NAME NULL -#define WINHTTP_NO_PROXY_BYPASS NULL - -#define WINHTTP_NO_REFERER NULL -#define WINHTTP_DEFAULT_ACCEPT_TYPES NULL - -#define WINHTTP_ERROR_BASE 12000 - -/* The original WINE winhttp.h didn't contain symbolic names for the - * error codes. However, the values of most of them are publicly - * documented at - * http://msdn.microsoft.com/en-us/library/aa383770(VS.85).aspx so - * we can add them here. - */ -#define ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR 12178 -#define ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT 12166 -#define ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN 12103 -#define ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND 12102 -#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN 12100 -#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND 12101 -#define ERROR_WINHTTP_CANNOT_CONNECT 12029 -#define ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW 12183 -#define ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED 12044 -#define ERROR_WINHTTP_CONNECTION_ERROR 12030 -#define ERROR_WINHTTP_HEADER_ALREADY_EXISTS 12155 -#define ERROR_WINHTTP_HEADER_COUNT_EXCEEDED 12181 -#define ERROR_WINHTTP_HEADER_NOT_FOUND 12150 -#define ERROR_WINHTTP_HEADER_SIZE_OVERFLOW 12182 -#define ERROR_WINHTTP_INCORRECT_HANDLE_STATE 12019 -#define ERROR_WINHTTP_INCORRECT_HANDLE_TYPE 12018 -#define ERROR_WINHTTP_INTERNAL_ERROR 12004 -#define ERROR_WINHTTP_INVALID_OPTION 12009 -#define ERROR_WINHTTP_INVALID_QUERY_REQUEST 12154 -#define ERROR_WINHTTP_INVALID_SERVER_RESPONSE 12152 -#define ERROR_WINHTTP_INVALID_URL 12005 -#define ERROR_WINHTTP_LOGIN_FAILURE 12015 -#define ERROR_WINHTTP_NAME_NOT_RESOLVED 12007 -#define ERROR_WINHTTP_NOT_INITIALIZED 12172 -#define ERROR_WINHTTP_OPERATION_CANCELLED 12017 -#define ERROR_WINHTTP_OPTION_NOT_SETTABLE 12011 -#define ERROR_WINHTTP_OUT_OF_HANDLES 12001 -#define ERROR_WINHTTP_REDIRECT_FAILED 12156 -#define ERROR_WINHTTP_RESEND_REQUEST 12032 -#define ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW 12184 -#define ERROR_WINHTTP_SECURE_CERT_CN_INVALID 12038 -#define ERROR_WINHTTP_SECURE_CERT_DATE_INVALID 12037 -#define ERROR_WINHTTP_SECURE_CERT_REV_FAILED 12057 -#define ERROR_WINHTTP_SECURE_CERT_REVOKED 12170 -#define ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE 12179 -#define ERROR_WINHTTP_SECURE_CHANNEL_ERROR 12157 -#define ERROR_WINHTTP_SECURE_FAILURE 12175 -#define ERROR_WINHTTP_SECURE_INVALID_CA 12045 -#define ERROR_WINHTTP_SECURE_INVALID_CERT 12169 -#define ERROR_WINHTTP_SHUTDOWN 12012 -#define ERROR_WINHTTP_TIMEOUT 12002 -#define ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT 12167 -#define ERROR_WINHTTP_UNRECOGNIZED_SCHEME 12006 -/* End of added error codes */ - -#define ERROR_WINHTTP_AUTODETECTION_FAILED (WINHTTP_ERROR_BASE + 180) - -typedef struct -{ - DWORD dwStructSize; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} URL_COMPONENTS, *LPURL_COMPONENTS; -typedef URL_COMPONENTS URL_COMPONENTSW; -typedef LPURL_COMPONENTS LPURL_COMPONENTSW; - -typedef struct -{ - DWORD_PTR dwResult; - DWORD dwError; -} WINHTTP_ASYNC_RESULT, *LPWINHTTP_ASYNC_RESULT; - -typedef struct -{ - FILETIME ftExpiry; - FILETIME ftStart; - LPWSTR lpszSubjectInfo; - LPWSTR lpszIssuerInfo; - LPWSTR lpszProtocolName; - LPWSTR lpszSignatureAlgName; - LPWSTR lpszEncryptionAlgName; - DWORD dwKeySize; -} WINHTTP_CERTIFICATE_INFO; - -typedef struct -{ - DWORD dwAccessType; - LPCWSTR lpszProxy; - LPCWSTR lpszProxyBypass; -} WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO; -typedef WINHTTP_PROXY_INFO WINHTTP_PROXY_INFOW; -typedef LPWINHTTP_PROXY_INFO LPWINHTTP_PROXY_INFOW; - -typedef struct -{ - BOOL fAutoDetect; - LPWSTR lpszAutoConfigUrl; - LPWSTR lpszProxy; - LPWSTR lpszProxyBypass; -} WINHTTP_CURRENT_USER_IE_PROXY_CONFIG; - -typedef VOID (CALLBACK *WINHTTP_STATUS_CALLBACK)(HINTERNET,DWORD_PTR,DWORD,LPVOID,DWORD); - -typedef struct -{ - DWORD dwFlags; - DWORD dwAutoDetectFlags; - LPCWSTR lpszAutoConfigUrl; - LPVOID lpvReserved; - DWORD dwReserved; - BOOL fAutoLogonIfChallenged; -} WINHTTP_AUTOPROXY_OPTIONS; - -typedef struct -{ - DWORD dwMajorVersion; - DWORD dwMinorVersion; -} HTTP_VERSION_INFO, *LPHTTP_VERSION_INFO; - - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL WINAPI WinHttpAddRequestHeaders(HINTERNET,LPCWSTR,DWORD,DWORD); -BOOL WINAPI WinHttpDetectAutoProxyConfigUrl(DWORD,LPWSTR*); -BOOL WINAPI WinHttpCheckPlatform(void); -BOOL WINAPI WinHttpCloseHandle(HINTERNET); -HINTERNET WINAPI WinHttpConnect(HINTERNET,LPCWSTR,INTERNET_PORT,DWORD); -BOOL WINAPI WinHttpCrackUrl(LPCWSTR,DWORD,DWORD,LPURL_COMPONENTS); -BOOL WINAPI WinHttpCreateUrl(LPURL_COMPONENTS,DWORD,LPWSTR,LPDWORD); -BOOL WINAPI WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*); -BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG* config); -BOOL WINAPI WinHttpGetProxyForUrl(HINTERNET,LPCWSTR,WINHTTP_AUTOPROXY_OPTIONS*,WINHTTP_PROXY_INFO*); -HINTERNET WINAPI WinHttpOpen(LPCWSTR,DWORD,LPCWSTR,LPCWSTR,DWORD); - -/* The sixth parameter to WinHttpOpenRequest was wrong in the original - * WINE header. It should be LPCWSTR*, not LPCWSTR, as it points to an - * array of wide strings. - */ -HINTERNET WINAPI WinHttpOpenRequest(HINTERNET,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR*,DWORD); -BOOL WINAPI WinHttpQueryAuthParams(HINTERNET,DWORD,LPVOID*); -BOOL WINAPI WinHttpQueryAuthSchemes(HINTERNET,LPDWORD,LPDWORD,LPDWORD); -BOOL WINAPI WinHttpQueryDataAvailable(HINTERNET,LPDWORD); -BOOL WINAPI WinHttpQueryHeaders(HINTERNET,DWORD,LPCWSTR,LPVOID,LPDWORD,LPDWORD); -BOOL WINAPI WinHttpReadData(HINTERNET,LPVOID,DWORD,LPDWORD); -BOOL WINAPI WinHttpReceiveResponse(HINTERNET,LPVOID); -BOOL WINAPI WinHttpSendRequest(HINTERNET,LPCWSTR,DWORD,LPVOID,DWORD,DWORD,DWORD_PTR); -BOOL WINAPI WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*); -BOOL WINAPI WinHttpSetCredentials(HINTERNET,DWORD,DWORD,LPCWSTR,LPCWSTR,LPVOID); -BOOL WINAPI WinHttpSetOption(HINTERNET,DWORD,LPVOID,DWORD); -WINHTTP_STATUS_CALLBACK WINAPI WinHttpSetStatusCallback(HINTERNET,WINHTTP_STATUS_CALLBACK,DWORD,DWORD_PTR); -BOOL WINAPI WinHttpSetTimeouts(HINTERNET,int,int,int,int); -BOOL WINAPI WinHttpTimeFromSystemTime(CONST SYSTEMTIME *,LPWSTR); -BOOL WINAPI WinHttpTimeToSystemTime(LPCWSTR,SYSTEMTIME*); -BOOL WINAPI WinHttpWriteData(HINTERNET,LPCVOID,DWORD,LPDWORD); - -/* Additional definitions, from the public domain in mingw */ -#define ICU_ESCAPE 0x80000000 -#define ICU_DECODE 0x10000000 - -/* A few constants I couldn't find publicly documented, so I looked up - * their value from the Windows SDK . Presumably this falls - * under fair use. - */ -#define WINHTTP_QUERY_CONTENT_LENGTH 5 -#define WINHTTP_QUERY_CONTENT_TYPE 1 -#define WINHTTP_QUERY_LAST_MODIFIED 11 -#define WINHTTP_QUERY_STATUS_CODE 19 -#define WINHTTP_QUERY_STATUS_TEXT 20 - -#define WINHTTP_QUERY_FLAG_SYSTEMTIME 0x40000000 - -#ifdef __cplusplus -} -#endif - -#endif /* __WINE_WINHTTP_H */ From cf10b6d6e1088684bc5b42979e0a9dcff6a271a1 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 22:49:42 +0100 Subject: [PATCH 155/310] Don't build against Jreen 1.1.0 and document it in README --- CMakeLists.txt | 3 +++ README.md | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7221bc5e8..9bb0b7acfa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,6 +136,9 @@ macro_log_feature(QuaZip_FOUND "QuaZip" "Provides support for extracting downloa macro_optional_find_package(Jreen 1.0.5) macro_log_feature(JREEN_FOUND "Jreen" "Qt XMPP Library" "http://qutim.org/jreen / https://github.com/euroelessar/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin.\n") +if(${PC_JREEN_VERSION} STREQUAL "1.1.0") + message(FATAL_ERROR "Jreen 1.1.0 has a very annoying bug that breaks accepting auth requests in Tomahawk. Please upgrade to 1.1.1 or downgrade to 1.0.5.") +endif() macro_optional_find_package(QTweetLib) macro_log_feature(QTWEETLIB_FOUND "QTweetLib" "Qt Twitter Library" "https://github.com/minimoog/QTweetLib" FALSE "" "QTweetLib is needed for the Twitter SIP plugin.\n") diff --git a/README.md b/README.md index 043410d764..1f2ca36f4a 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Required dependencies: The following dependencies are optional, but recommended: -* Jreen 1.0.5 - http://qutim.org/jreen / https://github.com/euroelessar/jreen +* Jreen 1.0.5 (1.1.0 will fail, 1.1.1 is fine) - http://qutim.org/jreen / https://github.com/euroelessar/jreen * QTweetLib 0.5.0 - https://github.com/minimoog/QTweetLib Third party libraries that we ship with our source: From 3efe99442579d08746d6ba629a96d84b4de1f35d Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 22:51:39 +0100 Subject: [PATCH 156/310] Add more thirdparty libs shipped in our tree to the README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 1f2ca36f4a..bc7067d116 100644 --- a/README.md +++ b/README.md @@ -57,5 +57,10 @@ Third party libraries that we ship with our source: * MiniUPnP 1.6 - http://miniupnp.free.fr/ * Breakpad - http://code.google.com/p/google-breakpad/ +* Qocoa - http://github.com/mikemcquaid/Qocoa +* libqnetwm - http://code.google.com/p/libqnetwm/ +* libqxt (QxtWeb module) - http://libqxt.org +* SPMediaKeyTap - https://github.com/nevyn/SPMediaKeyTap +* kdsingleapplicationguard/ Enjoy! From a1330254b075d440a9351adf8f399eb418e9ffce Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 7 Jan 2013 22:54:59 +0100 Subject: [PATCH 157/310] Remove trailing / --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bc7067d116..48f46b8dc5 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,6 @@ Third party libraries that we ship with our source: * libqnetwm - http://code.google.com/p/libqnetwm/ * libqxt (QxtWeb module) - http://libqxt.org * SPMediaKeyTap - https://github.com/nevyn/SPMediaKeyTap -* kdsingleapplicationguard/ +* kdsingleapplicationguard Enjoy! From c389ca832fdda5527e7704c66f019701161ec794 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Tue, 8 Jan 2013 01:16:53 +0100 Subject: [PATCH 158/310] Automatic merge of Transifex translations --- lang/tomahawk_ru.ts | 26 +- lang/tomahawk_sv.ts | 590 +++++++++++++++++++++-------------------- lang/tomahawk_zh_CN.ts | 68 ++--- 3 files changed, 346 insertions(+), 338 deletions(-) diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 1b665a4597..e182a34a22 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -209,7 +209,7 @@ connect and stream from you? Hide Menu Bar - Спрятать строку меню приложения + Спрятать Строку Меню @@ -662,7 +662,7 @@ connect and stream from you? This playlist is currently empty. - Этот плейлист пуст. + Плейлист пуст @@ -1075,7 +1075,7 @@ connect and stream from you? played %1 by you - Проиграно %1 мной + Воспроизводилась %1 мной @@ -1183,7 +1183,7 @@ connect and stream from you? This playlist is currently empty. - Текущий плейлист пуст. + Плейлист пуст @@ -1321,12 +1321,12 @@ connect and stream from you? Friend Finders - + Среди Друзей Music Finders - Music Finders + Среди Музыкальных Сервисов @@ -1724,7 +1724,7 @@ connect and stream from you? Recently Played Tracks - Последние проигрыные песни + Последние Воспроизводимые @@ -3286,7 +3286,7 @@ enter the displayed PIN number here: Hide Tomahawk Window - Спрятать окно Tomahawk + Спрятать Окно Tomahawk @@ -3355,13 +3355,13 @@ enter the displayed PIN number here: Hide Menu Bar - Спрятать строку меню приложения + Спрятать Строку Меню Show Menu Bar - Показать строку меню приложения + Показать Строку Меню @@ -3391,7 +3391,7 @@ enter the displayed PIN number here: Some tracks in the playlist do not contain an artist and a title. They will be ignored. - Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы. + Некоторые песни в плейлисте не содержат исполнителя и название. Они будут проигнорированы. @@ -3504,7 +3504,7 @@ enter the displayed PIN number here: Sorry, but we could not find similar tracks for this song! - Извините, но мы не смогли найти похожие треки на эту песню! + Извините, но мы не смогли найти похожие на эту песни ! @@ -3514,7 +3514,7 @@ enter the displayed PIN number here: You've never listened to this track before. - Вы никогда не слушали этот трек раньше. + Вы никогда не слушали эту песню раньше. diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 62ea1a8cb2..b1deda8603 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -5,17 +5,18 @@ Allow %1 to connect and stream from you? - + Tillåt %1 att +ansluta och strömma från dig? Allow Streaming - + Tillåt strömning Deny Access - + Neka åtkomst
@@ -23,7 +24,7 @@ connect and stream from you? Tomahawk needs you to decide whether %1 is allowed to connect. - + Tomahawk behöver att du bestämmer huruvida %1 ska få ansluta till dig. @@ -67,18 +68,18 @@ connect and stream from you? Connections - + Anslutningar Connect &All - + Anslut &alla Disconnect &All - + Koppla från &alla @@ -169,12 +170,12 @@ connect and stream from you? Load &XSPF... - + Ladda &XSPF... U&pdate Collection - + Upp&datera kollektion @@ -184,27 +185,27 @@ connect and stream from you? Show Offline Sources - + Visa frånkopplade källor &Configure Tomahawk... - + &Konfigurera Tomahawk... Minimize - + Minimera Zoom - + Zooma Hide Menu Bar - + Göm Meny @@ -262,22 +263,22 @@ connect and stream from you? Tracklist - + Spårlista Other Albums - + Andra album Sorry, we could not find any other albums for this artist! - + Tyvärr! Det gick inte hitta några andra album av denna artisten Sorry, we could not find any tracks for this album! - + Tyvärr! Det gick inte hitta några spår från detta albumet! @@ -319,17 +320,17 @@ connect and stream from you? Sorry, we could not find any albums for this artist! - + Tyvärr! Det gick inte hitta några album av denna artisten! Sorry, we could not find any related artists! - + Tyvärr! Det gick inte hitta några relaterade artister! Sorry, we could not find any top hits for this artist! - + Tyvärr! Det gick inte hitta några tophits av denna artisten @@ -357,7 +358,7 @@ connect and stream from you? Playing from %1 - + Spelar från %1 @@ -375,17 +376,17 @@ connect and stream from you? Sorry, Tomahawk couldn't find the track '%1' by %2 - + Tyvärr! Tomahawk kunde inte hitta spåret '%1' av %2 Sorry, Tomahawk couldn't find the artist '%1' - + Tyvärr! Tomahawk kunde inte hitta artisten '%1' Sorry, Tomahawk couldn't find the album '%1' by %2 - + Tyvärr! Tomahawk kunde inte hitta albumet '%1' av %2 @@ -393,12 +394,12 @@ connect and stream from you? Create new Playlist - + Skapa ny spellista Create new Station - + Skapa ny station @@ -463,12 +464,12 @@ connect and stream from you? Send this report - + Skicka rapporten Don't send - + Skicka inte @@ -515,7 +516,7 @@ connect and stream from you? About - + Om @@ -525,7 +526,7 @@ connect and stream from you? About this Account - + Om detta kontot @@ -538,12 +539,12 @@ connect and stream from you? &Copy to Clipboard - + &Kopiera Open &Log-file - + Öppna &logfil @@ -551,62 +552,62 @@ connect and stream from you? Steer this station: - + Styr denna station Much less - + Mycket mindre Less - + Mindre A bit less - + Lite mindre Keep at current - + Bevara vid nuvarande A bit more - + Lite mer More - + Mer Much more - + Mycket mer Tempo - + Tempo Loudness - + högljuddhet Danceability - + Dansvänlighet Energy - + Energi @@ -621,17 +622,17 @@ connect and stream from you? Artist Familiarity - + Artistkännedom By Description - + Genom beskrivning Enter a description - + Ange beskrivning @@ -649,7 +650,7 @@ connect and stream from you? Filter... - + Filtrera @@ -657,12 +658,12 @@ connect and stream from you? This playlist is currently empty. - + Spellistan är för närvarande tom. This playlist is currently empty. Add some tracks to it and enjoy the music! - + Spellistan är för tillfället tom. Lägg till några låtar och avnjut musiken! @@ -706,12 +707,12 @@ connect and stream from you? Import Playback History - + Importera uppspelningshistorik Synchronize Loved Tracks - + Synkronisera älskade spår @@ -727,7 +728,7 @@ connect and stream from you? %1 is listening along with you! - + %1 lyssnar tillsammans med dig! @@ -789,32 +790,32 @@ connect and stream from you? Top Loved Tracks - + Mest älskade spår Sorry, we could not find any loved tracks! - + Tyvärr! Vi kunde inte hitta några älskade spår! The most loved tracks from all your friends - + Dina vänners mest älskade spår All of your loved tracks - + Alla dina älskade spår All of %1's loved tracks - + Alla %1's älskade spår Loved Tracks - + Älskade spår @@ -822,107 +823,107 @@ connect and stream from you? Tags - + Taggar Title: - + Titel: Title... - + Titel... Artist: - + Artist: Artist... - + Artist... Album: - + Album: Album... - + Album... Track Number: - + Spårnummer: Duration: - + Varaktighet... 00.00 - + 00.00 Year: - + År: Bitrate: - + Bitrate: File - + Fil File Name: - + Filnamn: File Name... - + Filnamn... File Size... - + Filstorlek... File size... - + Filstorlek... File Size: - + Filstorlek: Back - + Tillbaka Forward - + Framåt Properties - + Egenskaper @@ -958,7 +959,7 @@ connect and stream from you? New Releases - + Nya släpp @@ -966,62 +967,62 @@ connect and stream from you? Artist - + Artist Title - + Titel Composer - + Kompositör Album - + Album Track - + Spår Duration - + Längd Bitrate - + Bitrate Age - + Ålder Year - + År Size - + Storlek Origin - + Ursprung Accuracy - + Exakthet @@ -1062,7 +1063,7 @@ connect and stream from you? Name - + Namn @@ -1084,31 +1085,31 @@ connect and stream from you? played %1 by you e.g. played 3 hours ago by you - + spelade %1 av dig played %1 by %2 e.g. played 3 hours ago by SomeSource - + Spelade %1 av %2 added %1 e.g. added 3 hours ago - + La till %1 by <b>%1</b> e.g. by SomeArtist - + av <b>%1</b> by <b>%1</b> on <b>%2</b> e.g. by SomeArtist on SomeAlbum - + av <b>%1</b> på <b>%2</b> @@ -1116,13 +1117,13 @@ connect and stream from you? A playlist you created %1. - + En spellista du skapat &1. A playlist by %1, created %2. - + En spellista av &1, skapad &2 @@ -1178,7 +1179,7 @@ connect and stream from you? This playlist is currently empty. - + Denna spellistan är för närvarande tom @@ -1332,13 +1333,13 @@ connect and stream from you? %1 Config - + %1 konfiguration %1 Configuration - + %1 konfiguration @@ -1355,17 +1356,17 @@ connect and stream from you? Open Queue - + Öppna kö Open Queue - %n item(s) - + Öppna kö - %n artiklarÖppna kö - %n artiklar Close Queue - + Stäng kö @@ -1430,7 +1431,7 @@ connect and stream from you? Some changed settings will not take effect until Tomahawk is restarted - + Några inställningar kommer inte träda i kraft förrän Tomahawk har starts om @@ -1450,7 +1451,7 @@ connect and stream from you? Manage how Tomahawk finds music on your computer. - + Hantera hur Tomahawk hittar musik på din dator. @@ -1483,7 +1484,7 @@ connect and stream from you? Filter by capability: - + Filtrera på kapacitet: @@ -1496,62 +1497,62 @@ connect and stream from you? None (outgoing connections only) - + Inga (Enbart utgående anslutningar) Use UPnP to establish port forward (recommended) - + Använd UPnP för att etablera portforward (Rekommenderas) Use static external IP address/host name and port - + Använd statiskt externt IP-nummer/värdnamn och port Set this to your external IP address or host name. Make sure to forward the port to this host! - + Ange detta till ditt externa IPnummer eller värdnamn. Se till att vidarebefordra porten till värden! Static Host Name: - + Statiskt värdnamn: Static Port: - + Statisk Port: SOCKS Proxy - + SOCKS Proxy Use SOCKS Proxy - + Använd SOCKS Proxy Proxy Settings... - + Proxyinställningar... Other Settings - + Andra inställningar Allow web browsers to interact with Tomahawk (recommended) - + Tillåt webbläsare att interagera med Tomahawk (Rekommenderas) Send reports after Tomahawk crashed - + Skicka rapport efter att Tomahawk kraschat @@ -1569,7 +1570,7 @@ connect and stream from you? Path to scan for music files: - + Sökväg att skanna efter musikfiler: @@ -1587,12 +1588,12 @@ connect and stream from you? Watch for changes - + Håll koll på ändringar Time between scans, in seconds: - + Tid mellan skanningar, i sekunder: @@ -1631,32 +1632,32 @@ connect and stream from you? Facebook - + Facebook Twitter - + Twitter Tweet - + Tweet Listening to "%1" by %2. %3 - + Lyssnar på "%1" av %2. %3 Listening to "%1" by %2 on "%3". %4 - + Lyssnar på "%1" av %2 på "%3". %4 %1 characters left - + %1 bokstäver kvar @@ -1763,12 +1764,12 @@ connect and stream from you? Latest additions to your collection - + Senaste tillägget till ditt kollektion. Latest additions to %1's collection - + Senaste tillägget till %1's kollektion. @@ -1778,22 +1779,22 @@ connect and stream from you? Recently Played Tracks - + Senast spelade spår Your recently played tracks - + Dina senast spelade spår %1's recently played tracks - + %1's senast spelade spår Sorry, we could not find any recent plays! - + Tyvärr! Det gick inte hitta några nyligen spelade spår @@ -1811,17 +1812,17 @@ connect and stream from you? Add to my Playlists - + Lägg till i mina spellistor Add to my Automatic Playlists - + Lägg till i mina automatiska spellistor Add to my Stations - + Lägg till i mina stationer @@ -1831,28 +1832,28 @@ connect and stream from you? playlist - + spellista automatic playlist - + automatisk spellista station - + station Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Vill du ta bort %1 <b>"%2"</b>? Delete - + Ta bort @@ -1930,7 +1931,7 @@ connect and stream from you? New Releases - + Nya släpp @@ -1943,27 +1944,27 @@ connect and stream from you? Configure your Spotify account - + Konfigurera ditt Spotify-konto Username or Facebook Email - + Användarnamn eller Facebook-email Log In - + Logga in Right click on any Tomahawk playlist to sync it to Spotify. - + Högerklicka på valfri Tomahawk-spellista för att syncronisera till Spotify Select All - + Välj alla @@ -1973,17 +1974,17 @@ connect and stream from you? High Quality Streams - + Högkvalitetsström Spotify playlists to keep in sync: - + Spotify-spellistor att syncronisera Delete Tomahawk playlist when removing synchronization - + Ta bort Tomahawk-spellista vid avslutad synkronisering @@ -2009,17 +2010,17 @@ connect and stream from you? Copy Artist Link - + Kopiera artistlänk Copy Album Link - + Kopiera albumlänk Copy Track Link - + Kopiera spårlänk @@ -2032,7 +2033,7 @@ connect and stream from you? Remove - + Ta bort @@ -2060,7 +2061,7 @@ connect and stream from you? Manual Install Required - + Manuell installation krävs @@ -2130,34 +2131,34 @@ connect and stream from you? Testing... - + Testar... Test Login - + Testinloggning Importing %1 e.g. Importing 2012/01/01 - + Importerar %1 Importing History... - + Importerar historik History Incomplete. Resume Text on a button that resumes import - + Historik inkomplett. Fortsätt Playback History Imported - + Uppspelningshistorik importerad @@ -2178,12 +2179,12 @@ connect and stream from you? Synchronizing... - + Syncroniserar... Synchronization Finished - + Syncronisering färdig @@ -2191,17 +2192,17 @@ connect and stream from you? Sync with Spotify - + Synkronisera med Spotify Re-enable syncing with Spotify - + Återaktivera syncronisering mot Spotify Create local copy - + Skapa lokal kopia @@ -2231,7 +2232,7 @@ connect and stream from you? Stop syncing with Spotify - + Sluta syncronisera med Spotify @@ -2239,28 +2240,28 @@ connect and stream from you? Logging in... - + Loggar in... Failed: %1 - + Misslyckade: %1 Logged in as %1 - + Inloggad som %1 Log Out - + Logga ut Log In - + Logga in @@ -2292,7 +2293,7 @@ connect and stream from you? Status: No saved credentials - + Status: Inga sparade inloggningsuppgifter @@ -2305,13 +2306,13 @@ connect and stream from you? Status: Credentials saved for %1 - + Status: Inloggningsuppgifter sparade för %1 De-authenticate - + Avauktorisera @@ -2328,12 +2329,13 @@ connect and stream from you? The credentials could not be verified. You may wish to try re-authenticating. - + Inloggningsuppgifterna kunde inte verifieras. +Försök igen Status: Error validating credentials - + Status: Inloggningsuppgifterna kunde inte valideras @@ -2358,7 +2360,7 @@ You may wish to try re-authenticating. Send Mention! - + Skicka mention! @@ -2369,13 +2371,15 @@ You may wish to try re-authenticating. Your saved credentials could not be loaded. You may wish to try re-authenticating. - + Dina sparade inloggningsuppgifter kunde inte läsas in. +Försök autentisera igen Your saved credentials could not be verified. You may wish to try re-authenticating. - + Dina sparade inloggningsuppgifter kunde inte verifieras. +Försök autentisera igen @@ -2419,7 +2423,7 @@ You may wish to try re-authenticating. Local Network - + Lokalt nätverk @@ -2427,7 +2431,7 @@ You may wish to try re-authenticating. Local Network - + Lokalt nätverk @@ -2452,12 +2456,12 @@ You may wish to try re-authenticating. Continue Playback after this &Track - + Fortsätt uppspelningen efter detta &spåret Stop Playback after this &Track - + Avsluta uppspelningen efter detta &spåret @@ -2470,14 +2474,14 @@ You may wish to try re-authenticating. &Go to "%1" - + &Gå till "%1" Go to "%1" - + Gå till "%1" @@ -2487,17 +2491,17 @@ You may wish to try re-authenticating. Copy Album &Link - + Kopiera album-&länk Copy Artist &Link - + Kopiera artist-&länk Un-&Love - + Av-&älska @@ -2507,7 +2511,7 @@ You may wish to try re-authenticating. Properties... - + Egenskaper... @@ -2520,22 +2524,22 @@ You may wish to try re-authenticating. playlist - + spellista artist - + artist track - + spår album - + album @@ -2796,7 +2800,7 @@ Försök att ändra i filtrerna för att få en ny låtlista
Artist Familiarity - + Artistigenkänning @@ -2872,7 +2876,7 @@ Försök att ändra i filtrerna för att få en ny låtlista from my radio - + från min radio @@ -2882,7 +2886,7 @@ Försök att ändra i filtrerna för att få en ny låtlista
Variety - + Variation @@ -2892,27 +2896,27 @@ Försök att ändra i filtrerna för att få en ny låtlista very low - + Mycket lågt low - + låg moderate - + måttlig high - + högt very high - + mycket högt @@ -3001,12 +3005,12 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk is playing "%1" by %2%3. - + Tomahawk spelar "%1" by %2%3. on "%1" - + på "%1"
@@ -3014,27 +3018,27 @@ Försök att ändra i filtrerna för att få en ny låtlista Top Tracks - + Toppspår Loved Tracks - + Älskade spår Hyped Tracks - + Hypade spår Top Artists - + Topartister Hyped Artists - + Hypade artister @@ -3042,7 +3046,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Albums - + Album @@ -3050,7 +3054,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Listening to "%1" by %2 and loving it! %3 - + Lyssnar på "%1" av %2 och älskar det! %3 @@ -3076,7 +3080,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Några spår i spellistan innehåller ingen artist eller titel-information. De kommer att ignoreras @@ -3109,12 +3113,12 @@ Försök att ändra i filtrerna för att få en ny låtlista Would you like to delete the playlist <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Vill du ta bort spellistan <b>"%2"</b>? Delete - + Ta bort @@ -3147,7 +3151,7 @@ Försök att ändra i filtrerna för att få en ny låtlista %n people - + %n människor%n människor @@ -3168,7 +3172,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Network error parsing shortened link! - + Nätverksfel vid kortlänks-analys @@ -3176,7 +3180,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Track '%1' by %2 is not streamable. - + Spår '%1' by %2 går inte strömma @@ -3200,12 +3204,12 @@ Försök att ändra i filtrerna för att få en ny låtlista Syncing - + Synkroniserar Importing - + Importerar @@ -3215,12 +3219,12 @@ Försök att ändra i filtrerna för att få en ny låtlista Online - + Online Offline - + Offline @@ -3236,7 +3240,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Automatically update from XSPF - + Automatiskt uppdatera från XSPF @@ -3267,7 +3271,7 @@ anger du PIN-koden här: Local Network - + Lokalt nätverk @@ -3275,7 +3279,7 @@ anger du PIN-koden här: &Stop Playback after current Track - + &Stoppa uppspelningen efter nuvarande spår @@ -3306,17 +3310,17 @@ anger du PIN-koden här: &Love - + &älska Un-&Love - + av-&älska &Continue Playback after current Track - + &Fortsätt uppspelning efter nuvarande spår @@ -3329,22 +3333,22 @@ anger du PIN-koden här: Back - + Tillbaka Go back one page - + Gå tillbaks en sida Forward - + Framåt Go forward one page - + Gå framåt en sida @@ -3361,7 +3365,7 @@ anger du PIN-koden här: Search for any artist, album or song... - + Sök efter valfri artist, album eller låt... @@ -3391,7 +3395,7 @@ anger du PIN-koden här: Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Tyvärr! Det uppstod ett problem med kontakten till ditt ljudkort eller det önskade spåret. Nuvarande spår kommer att hoppas över. Kontrollera att du har en lämplig Phonon-backend och alla nödvändiga plugins installerade @@ -3401,7 +3405,7 @@ anger du PIN-koden här: Station - + Station @@ -3416,12 +3420,12 @@ anger du PIN-koden här: Playlist - + Spellista Automatic Playlist - + Automatisk spellista @@ -3441,7 +3445,7 @@ anger du PIN-koden här: Error connecting to SIP: Authentication failed! - + Anslutningsfel till SIP: Autentisering misslyckades! @@ -3458,27 +3462,27 @@ anger du PIN-koden här: <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1</h2> - + <h2><b>Tomahawk %1</h2> Copyright 2010 - 2012 - + Copyright 2010-2012 Thanks to: - + Tack till: About Tomahawk - + Om Tomahawk @@ -3494,37 +3498,37 @@ anger du PIN-koden här: Similar Tracks - + Liknande spår Sorry, but we could not find similar tracks for this song! - + Tyvärr! Det gick inte hitta några spår som liknande denna låten! You've listened to this track %n time(s). - + Du har lyssnat på detta spåret %n gånger.Du har lyssnat på detta spåret %n gånger You've never listened to this track before. - + Du har inte lyssnat på detta spåret tidigare. You first listened to it on %1. - + Du har lyssnat på det på %1. You've listened to %1 %n time(s). - + Du har lyssnat på %1 %n gång.Du har lyssnat på %1 %n gånger. You've never listened to %1 before. - + Du har inte lyssnat på %1 tidigare. @@ -3541,13 +3545,13 @@ anger du PIN-koden här: from streaming artist - track from friend - + från to streaming artist - track to friend - + till @@ -3583,7 +3587,7 @@ anger du PIN-koden här: Sorry, your filter '%1' did not match any results. - + Tyvärr! Dina filter '%1' matchade inga resultat @@ -3601,7 +3605,7 @@ anger du PIN-koden här: Status: No saved credentials - + Status: Inga sparade inloggningsuppgifter @@ -3611,7 +3615,7 @@ anger du PIN-koden här: Twitter Connections - + Twitteranslutningar @@ -3626,17 +3630,17 @@ You can re-send a sync message at any time simply by sending another tweet using Select the kind of tweet you would like, then press the button to post it: - + Välj vilken typ av tweet du vill använda och tryck sedan på knappen för att posta: Global Tweet - + Global Tweet @Mention - + @Mention @@ -3667,7 +3671,7 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + Spellistan är tom! @@ -3682,27 +3686,27 @@ You can re-send a sync message at any time simply by sending another tweet using SuperCollection - + Superkollektion Combined libraries of all your online friends - + Kombinerat bibliotek av alla dina vänner online Recently Played Tracks - + Senast spelade spår Recently played tracks from all your friends - + Alla dina vänners senast spelade spår Sorry, we could not find any recent plays! - + Tyvärr! Det gick inte hitta några nyligen spelade spår @@ -3725,7 +3729,7 @@ You can re-send a sync message at any time simply by sending another tweet using Recently played tracks - + Senast uppspelade spår @@ -3761,12 +3765,14 @@ You can re-send a sync message at any time simply by sending another tweet using Terms for %1: - + +Villkor för %1: + No terms found, sorry. - + Inga villkor funna, tyvärr. @@ -3780,7 +3786,9 @@ Hotttness for %1: %2 Familiarity for %1: %2 - + +Kännedom för %1: %2 + @@ -3859,7 +3867,7 @@ Lyrics for "%1" by %2: Visible stanzas - + Synliga strofer @@ -3980,57 +3988,57 @@ Lyrics for "%1" by %2: Host is unknown - + Värden är okänd Item not found - + Artikeln kunde inte hittas Authorization Error - + Auktorisationsfel Remote Stream Error - + Ström-fel Remote Connection failed - + Fjärranslutningen misslyckades Internal Server Error - + Internt serverfel System shutdown - + systemavstängning Conflict - + Konflikt Unknown - + Okänd Do you want to add <b>%1</b> to your friend list? - + Vill du lägga till <b>%1</b> till din vänlista? No Compression Support - + Inget kompression-stöd @@ -4040,12 +4048,12 @@ Lyrics for "%1" by %2: No Encryption Support - + Inget krypteringsstöd No Authorization Support - + Inget auktoriseringsstöd @@ -4055,22 +4063,22 @@ Lyrics for "%1" by %2: Add Friend - + Lägg till vän Enter Xmpp ID: - + Ange XMPP-id: Add Friend... - + Lägg till vän... XML Console... - + XML-konsol... @@ -4080,7 +4088,7 @@ Lyrics for "%1" by %2: Authorize User - + Auktorisera användare diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 98e148a399..99174698b0 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -224,7 +224,7 @@ connect and stream from you? &View Logfile - + 查看日志文件 @@ -657,7 +657,7 @@ connect and stream from you? This playlist is currently empty. - + 当前播放列表为空。 @@ -1021,37 +1021,37 @@ connect and stream from you? Accuracy - + 准确度 Perfect match - + 完美匹配 Very good match - + 极高匹配 Good match - + 高匹配 Vague match - + 模糊匹配 Bad match - + 低匹配 Very bad match - + 极低匹配 @@ -1084,31 +1084,31 @@ connect and stream from you? 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> @@ -1332,13 +1332,13 @@ connect and stream from you? %1 Config - + 配置 %1 %1 Configuration - + 配置 %1 @@ -1770,7 +1770,7 @@ connect and stream from you? Latest additions to %1's collection - + 最新加入 %1 收藏的项目 @@ -1970,7 +1970,7 @@ connect and stream from you? Sync Starred tracks to Loved tracks - + 同步加星歌曲到喜欢的歌曲 @@ -2424,7 +2424,7 @@ You may wish to try re-authenticating. Local Network - + 本地网络 @@ -2432,7 +2432,7 @@ You may wish to try re-authenticating. Local Network - + 本地网络 @@ -2475,14 +2475,14 @@ You may wish to try re-authenticating. &Go to "%1" - + 转到 "%1" Go to "%1" - + 转到 "%1" @@ -2877,7 +2877,7 @@ Try tweaking the filters for a new set of songs to play. from my radio - + 从我的电台 @@ -2887,37 +2887,37 @@ Try tweaking the filters for a new set of songs to play. Variety - + 种类 Adventurousness - + 冒险指数 very low - + 非常低 low - + moderate - + 适中 high - + very high - + 非常高 @@ -3152,7 +3152,7 @@ Try tweaking the filters for a new set of songs to play. %n people - + %n 人 @@ -3272,7 +3272,7 @@ enter the displayed PIN number here: Local Network - + 本地网络 @@ -3366,7 +3366,7 @@ enter the displayed PIN number here: Search for any artist, album or song... - + 搜索任意艺人,专辑,或歌曲... @@ -3677,7 +3677,7 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + 当前播放列表为空! From bd2f8b0f36a2c03e0a484d0f32108fa3e0d206a0 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 8 Jan 2013 02:05:52 +0100 Subject: [PATCH 159/310] qt5: don't build qnetwm --- src/libtomahawk/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 3d66288e83..1071ad8ac1 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -159,7 +159,7 @@ if(QCA2_FOUND) set( libGuiHeaders ${libGuiHeaders} utils/GroovesharkParser.h ) endif() -if(UNIX AND NOT APPLE) +if(UNIX AND NOT APPLE AND NOT Qt5Core_DIR) if(BUILD_GUI AND X11_FOUND) include_directories( ${THIRDPARTY_DIR}/libqnetwm ) list(APPEND libSources ${libSources} ${THIRDPARTY_DIR}/libqnetwm/libqnetwm/netwm.cpp) From 8305a44900ebc45aad124cd80712a45213e63614 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 8 Jan 2013 02:43:58 +0100 Subject: [PATCH 160/310] Fix registering DatabaseCommand_LoadSocialActions::TrackActions metatype --- src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h b/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h index fdc987bd5b..be6a78d768 100644 --- a/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h +++ b/src/libtomahawk/database/DatabaseCommand_LoadSocialActions.h @@ -78,7 +78,7 @@ Q_OBJECT : DatabaseCommand( parent ), m_actionOnly( action ) { setSource( source ); - qRegisterMetaType( "DatabaseCommand_LoadSocialAction::TrackActions" ); + qRegisterMetaType( "DatabaseCommand_LoadSocialActions::TrackActions" ); } /** From 7fee9a258a97fb5e676384ac17715792ea10110f Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 8 Jan 2013 03:13:07 +0100 Subject: [PATCH 161/310] Fix buildsystem for windows where PC_JREEN_VERSION does not exist --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9bb0b7acfa..946c798a97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,7 +136,7 @@ macro_log_feature(QuaZip_FOUND "QuaZip" "Provides support for extracting downloa macro_optional_find_package(Jreen 1.0.5) macro_log_feature(JREEN_FOUND "Jreen" "Qt XMPP Library" "http://qutim.org/jreen / https://github.com/euroelessar/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin.\n") -if(${PC_JREEN_VERSION} STREQUAL "1.1.0") +if(PC_JREEN_VERSION STREQUAL "1.1.0") message(FATAL_ERROR "Jreen 1.1.0 has a very annoying bug that breaks accepting auth requests in Tomahawk. Please upgrade to 1.1.1 or downgrade to 1.0.5.") endif() From e32d6c0adf4f7eb684f7327bbb6b1c47cb86d221 Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Tue, 8 Jan 2013 13:24:11 +0100 Subject: [PATCH 162/310] Change QWeakPointer to QPointer to make it compile again --- src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index 518d45f5ae..c1426af533 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -461,8 +461,8 @@ Tomahawk::EchonestControl::updateWidgets() m_matchString = "is"; m_matchData = 1; - m_match = QWeakPointer< QWidget >( match ); - m_input = QWeakPointer< QWidget >( combo ); + m_match = QPointer< QWidget >( match ); + m_input = QPointer< QWidget >( combo ); } else { m_match = QPointer( new QWidget ); m_input = QPointer( new QWidget ); From d66afb9ba37636749d8b1ba5b274cd5b3694b272 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Tue, 8 Jan 2013 09:36:14 -0500 Subject: [PATCH 163/310] Don't crash when listening along if a result in a sourceplaylistinterface's next is not valid --- src/libtomahawk/audio/AudioEngine.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index f4453d5f6a..a3e1177fcc 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -241,7 +241,9 @@ AudioEngine::canGoNext() return false; } - return ( m_currentTrack && m_playlist.data()->hasNextResult() && m_playlist.data()->nextResult()->isOnline() ); + return ( m_currentTrack && m_playlist.data()->hasNextResult() && + !m_playlist.data()->nextResult().isNull() && + m_playlist.data()->nextResult()->isOnline() ); } @@ -903,7 +905,7 @@ AudioEngine::setPlaylist( Tomahawk::playlistinterface_ptr playlist ) connect( m_playlist.data(), SIGNAL( shuffleModeChanged( bool ) ), SIGNAL( shuffleModeChanged( bool ) ) ); connect( m_playlist.data(), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ), SIGNAL( repeatModeChanged( Tomahawk::PlaylistModes::RepeatMode ) ) ); - + emit shuffleModeChanged( m_playlist.data()->shuffled() ); emit repeatModeChanged( m_playlist.data()->repeatMode() ); } From fd0a80da1fd5049fcb5d6eef9ea6a6f24566066a Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 8 Jan 2013 15:46:53 +0100 Subject: [PATCH 164/310] Remove headers from CMakeLists.txt which don't need to be tracked anymore because of automoc --- src/libtomahawk/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 1071ad8ac1..ca7e5567ec 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -156,7 +156,6 @@ set( libGuiSources if(QCA2_FOUND) set( libGuiSources ${libGuiSources} utils/GroovesharkParser.cpp ) - set( libGuiHeaders ${libGuiHeaders} utils/GroovesharkParser.h ) endif() if(UNIX AND NOT APPLE AND NOT Qt5Core_DIR) @@ -364,7 +363,6 @@ ENDIF(QCA2_FOUND) IF(LIBATTICA_FOUND) SET( libGuiSources ${libGuiSources} AtticaManager.cpp ) - SET( libGuiHeaders ${libGuiHeaders} AtticaManager.h ) INCLUDE_DIRECTORIES( ${LIBATTICA_INCLUDE_DIR} ) LIST(APPEND LINK_LIBRARIES ${LIBATTICA_LIBRARIES} ${QuaZip_LIBRARIES} ) ENDIF(LIBATTICA_FOUND) From 2e511318f5794929f0e3c3d48c3c14528e05a222 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 8 Jan 2013 19:02:01 +0100 Subject: [PATCH 165/310] Try to remove frame from toolbar on Windows 8. --- src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp index df63ff3df3..8ab5eb83e2 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp +++ b/src/libtomahawk/thirdparty/Qocoa/qtoolbartabdialog.cpp @@ -68,6 +68,9 @@ QToolbarTabDialog::QToolbarTabDialog() : pimpl->toolbar = new QToolBar(pimpl->dialog.data()); pimpl->toolbar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); +#ifdef Q_OS_WIN + pimpl->toolbar->setStyleSheet( "QToolBar { border: 0px; }" ); +#endif pimpl->stack = new QStackedWidget(pimpl->dialog.data()); From 64a2854130ec1dcf0e4e717de76e22ca037fff15 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Tue, 8 Jan 2013 19:59:05 +0100 Subject: [PATCH 166/310] Send invite on returnPressed. --- src/widgets/AccountWidget.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/widgets/AccountWidget.cpp b/src/widgets/AccountWidget.cpp index fa4aa2c12f..52ab839963 100644 --- a/src/widgets/AccountWidget.cpp +++ b/src/widgets/AccountWidget.cpp @@ -1,6 +1,6 @@ /* === This file is part of Tomahawk Player - === * - * Copyright 2012 Teo Mrnjavac + * Copyright 2012-2013, Teo Mrnjavac * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -292,6 +292,8 @@ AccountWidget::setupConnections( const QPersistentModelIndex& idx, int accountId this, SLOT( changeAccountConnectionState( bool ) ) ); connect( m_inviteButton, SIGNAL( clicked() ), this, SLOT( sendInvite() ) ); + connect( m_inviteEdit, SIGNAL( returnPressed() ), + this, SLOT( sendInvite() ) ); m_inviteEdit->setPlaceholderText( account->sipPlugin()->inviteString() ); } From d2c83bf61409c79706b3e4e9119e87ef17d14090 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 5 Jan 2013 13:34:21 +0100 Subject: [PATCH 167/310] * Auto resize tophits view and limit it to 20 tracks. --- src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index babcc4fcd2..9302482e75 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -75,7 +75,8 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* ui->topHits->setPlayableModel( m_topHitsModel ); ui->topHits->setSortingEnabled( false ); ui->topHits->setEmptyTip( tr( "Sorry, we could not find any top hits for this artist!" ) ); - + ui->topHits->setAutoResize( true ); + ui->relatedArtists->setAutoFitItems( false ); ui->relatedArtists->setWrapping( false ); ui->relatedArtists->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); @@ -281,7 +282,7 @@ ArtistInfoWidget::onTracksFound( const QList& queries, Mode Q_UNUSED( mode ); m_topHitsModel->finishLoading(); - m_topHitsModel->appendQueries( queries ); + m_topHitsModel->appendQueries( queries.mid( 0, 20 ) ); } From 0a97127ea8f30df9311a5d41c45142377a87c703 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Tue, 8 Jan 2013 21:42:36 +0100 Subject: [PATCH 168/310] * Fixed AudioEngine not correctly emitting stopped(). --- src/libtomahawk/audio/AudioEngine.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index a3e1177fcc..b0ad84cf39 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -167,17 +167,19 @@ AudioEngine::pause() void AudioEngine::stop( AudioErrorCode errorCode ) { - tDebug() << Q_FUNC_INFO << errorCode; + tDebug() << Q_FUNC_INFO << errorCode << isStopped(); if ( isStopped() ) return; - if( errorCode == NoError ) + if ( errorCode == NoError ) setState( Stopped ); else setState( Error ); - m_mediaObject->stop(); + if ( m_mediaObject->state() != Phonon::StoppedState ) + m_mediaObject->stop(); + emit stopped(); if ( !m_playlist.isNull() ) @@ -746,10 +748,6 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) // We don't emit this state to listeners - yet. m_state = Loading; } - if ( newState == Phonon::StoppedState ) - { - m_state = Stopped; - } if ( newState == Phonon::ErrorState ) { stop( UnknownError ); @@ -801,11 +799,14 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) m_expectStop = false; tDebug( LOGVERBOSE ) << "Finding next track."; if ( canGoNext() ) + { loadNextTrack(); + } else { if ( !m_playlist.isNull() && m_playlist.data()->retryMode() == Tomahawk::PlaylistModes::Retry ) m_waitingOnNewTrack = true; + stop(); } } From ea9bc9a4a2823259f7c435a7ae9b3d229c5c6723 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Tue, 8 Jan 2013 23:06:24 +0100 Subject: [PATCH 169/310] * Updated copyright in about dialog to 2013. --- src/TomahawkWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index d966d7cc71..dfb710951b 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -1190,7 +1190,7 @@ TomahawkWindow::showAboutTomahawk() .arg( TomahawkUtils::appFriendlyVersion() ); #endif - const QString copyright( tr( "Copyright 2010 - 2012" ) ); + const QString copyright( tr( "Copyright 2010 - 2013" ) ); const QString thanksto( tr( "Thanks to:" ) ); desc = QString( "%1
Christian Muehlhaeuser <muesli@tomahawk-player.org>

" From ed151e1e3ab01c152d9ae46b2602fb92992d0497 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Wed, 9 Jan 2013 01:17:45 +0100 Subject: [PATCH 170/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 10 +- lang/tomahawk_bg.ts | 10 +- lang/tomahawk_bn_IN.ts | 8 +- lang/tomahawk_ca.ts | 10 +- lang/tomahawk_cs.ts | 10 +- lang/tomahawk_de.ts | 10 +- lang/tomahawk_el.ts | 8 +- lang/tomahawk_en.ts | 10 +- lang/tomahawk_es.ts | 10 +- lang/tomahawk_fi.ts | 10 +- lang/tomahawk_fr.ts | 10 +- lang/tomahawk_gl.ts | 345 +++++++++++++++++++++-------------------- lang/tomahawk_hi_IN.ts | 8 +- lang/tomahawk_hu.ts | 8 +- lang/tomahawk_it.ts | 10 +- lang/tomahawk_ja.ts | 10 +- lang/tomahawk_lt.ts | 10 +- lang/tomahawk_pl.ts | 10 +- lang/tomahawk_pt_BR.ts | 10 +- lang/tomahawk_ru.ts | 72 ++++----- lang/tomahawk_sv.ts | 10 +- lang/tomahawk_tr.ts | 8 +- lang/tomahawk_zh_CN.ts | 10 +- lang/tomahawk_zh_TW.ts | 8 +- 24 files changed, 317 insertions(+), 308 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index fde5707bb3..c18ca02413 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -374,17 +374,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 نعتذر، لم نستطيع إيجاد الأغنية '%1' ل%2 - + Sorry, Tomahawk couldn't find the artist '%1' نعتذر، لم نستطيع إيجاد الفنان '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 نعتذر، لم نستطيع إيجاد الألبوم '%1' ل%2 @@ -3472,8 +3472,8 @@ enter the displayed PIN number here:
- Copyright 2010 - 2012 - حقوق الطبع والنشر ٢٠١٠ - ٢٠١٢ + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 24a900f440..bb1ffd250e 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Съжалявам. Не успявам да открия изпълнение '%1' от '%2' - + Sorry, Tomahawk couldn't find the artist '%1' Съжалявам, но не откривам '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Съжалявам, но не откривам албум с име '%1' от '%2' @@ -3489,8 +3489,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Всички права - запазени. 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 49bc697135..5e2c86d721 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3461,7 +3461,7 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 + Copyright 2010 - 2013 diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index fdf76c2367..97e73ed589 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3470,8 +3470,8 @@ introduïu el PIN aquí: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 351764363c..66b54bee38 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -374,17 +374,17 @@ se s vámi spojil? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Promiňte, Tomahawku se nepodařilo najít skladbu '%1' od %2 - + Sorry, Tomahawk couldn't find the artist '%1' Promiňte, Tomahawku se nepodařilo najít umělce '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Promiňte, Tomahawku se nepodařilo najít album '%1' od %2 @@ -3471,8 +3471,8 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: - Copyright 2010 - 2012 - Autorské právo 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 3d1ab5bebf..43889c4791 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -374,17 +374,17 @@ erlauben sich mit dir zu verbinden? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Sorry, Tomahawk konnte '%1' von %2 nicht finden - + Sorry, Tomahawk couldn't find the artist '%1' Sorry, Tomahawk konnte den Künstler '%1' nicht finden - + Sorry, Tomahawk couldn't find the album '%1' by %2 Sorry, Tomahawk konnte das Album '%1' von %2 nicht finden @@ -3469,8 +3469,8 @@ Tomahawk auf Twitter's Website authentifiziert hast: - Copyright 2010 - 2012 - Copright 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 7977a4025b..8ec26200a5 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3469,7 +3469,7 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 + Copyright 2010 - 2013 diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index c553282b51..7fd46c18be 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -374,17 +374,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3474,8 +3474,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + Copyright 2010 - 2013 {2010 ?} diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 44e6b5bbbb..e8e9193d39 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -374,17 +374,17 @@ conectarse a usted y transmitir música? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawk no pudo encontrar la pista '%1' de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawk no pudo encontrar el artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawk no pudo encontrar el álbum '%1' de %2 @@ -3474,8 +3474,8 @@ introduzca su número PIN aquí: - Copyright 2010 - 2012 - Copyright 2010-2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 0c89f274d1..1a1c3cad21 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -374,17 +374,17 @@ yhdistää ja toistaa sinulta virtaa? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Valitettavasti Tomahawk ei löytänyt artistin %2 kappaletta ”%1” - + Sorry, Tomahawk couldn't find the artist '%1' Valitettavasti Tomahawk ei löytänyt artistia ”%1” - + Sorry, Tomahawk couldn't find the album '%1' by %2 Valitettavasti Tomahawk ei löytänyt artistin %2 albumia ”%1” @@ -3477,8 +3477,8 @@ anna siellä näytetty PIN-koodi tähän: - Copyright 2010 - 2012 - Copyright 2010–2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 6efbec2f23..59a485ddf7 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -374,17 +374,17 @@ de se connecter et streamer de vous? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Désolé, on a pas pu trouver la piste '%1' pour %2 - + Sorry, Tomahawk couldn't find the artist '%1' Désolé, on a pas pu trouver l'artiste '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Désolé, on a pas pu trouver l'album '%1' pour %2 @@ -3471,8 +3471,8 @@ saisissez le numéro PIN ici : - Copyright 2010 - 2012 - Droit d'auteur 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index bc958c7ab9..d16b9dbf47 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -124,7 +124,7 @@ connect and stream from you? &Listen Publicly - &Escoutar en público + &Escoitar en público @@ -224,7 +224,7 @@ connect and stream from you? &View Logfile - + &Ver o ficheiro de rexistro @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawk non atopa a pista «%1» de %2 - + Sorry, Tomahawk couldn't find the artist '%1' - Tomahawl non atopa o artista «%1» + Tomahawk non atopa o artista «%1» - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawk non atopa o álbum «%1» de %2 @@ -463,7 +463,7 @@ connect and stream from you? Send this report - Envíar este informe + Enviar este informe @@ -543,7 +543,7 @@ connect and stream from you? Open &Log-file - Abrir o ficheiro de &rexístro + Abrir o ficheiro de &rexistro @@ -621,22 +621,22 @@ connect and stream from you? Artist Familiarity - Familiraridade do artista + Familiaridade do artista By Description - Por descripción + Por descrición Enter a description - Introducir unha descripción + Introducir unha descrición Apply steering command - Aplicar o comando de direción + Aplicar o comando de dirección @@ -662,7 +662,7 @@ connect and stream from you? This playlist is currently empty. Add some tracks to it and enjoy the music! - Esta lista de reprodución está baleira. Engádelle algunhas pistas para desfrutar da música! + Esta lista de reprodución está baleira. Engádelle algunhas pistas para gozar da música! @@ -706,7 +706,7 @@ connect and stream from you? Import Playback History - Importar o historial de reproducióis + Importar o historial de reproducións @@ -781,7 +781,7 @@ connect and stream from you? Saved tracks - PIstas gardadas + Pistas gardadas @@ -804,7 +804,7 @@ connect and stream from you? All of your loved tracks - Todas as pistas que che gustarn + Todas as pistas que che gustaron @@ -940,7 +940,7 @@ connect and stream from you? Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist: - Só introduce un xéneor ou unha etiqueta e Tomahawk suxerirache unhas cantas cancións para que comeces cunha nova lista de reprodución: + Só introduce un xénero ou unha etiqueta e Tomahawk suxerirache unhas cantas cancións para que comeces cunha nova lista de reprodución: @@ -1021,42 +1021,42 @@ connect and stream from you? Accuracy - + Precisión Perfect match - + Coincidencia perfecta Very good match - + Coincidencia moi boa Good match - + Boa coincidencia Vague match - + Parcialmente coincidente Bad match - + Mala coincidencia Very bad match - + Nada coincidentes Not available - + Non está dispoñíbel @@ -1084,31 +1084,31 @@ connect and stream from you? played %1 by you e.g. played 3 hours ago by you - + reproduciu %3 horas atrás por ti played %1 by %2 e.g. played 3 hours ago by SomeSource - + reproduciu % por %2 added %1 e.g. added 3 hours ago - + engadiu %1 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 - + by <b>%1</b> on <b>%2</b> @@ -1150,7 +1150,7 @@ connect and stream from you? Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you! - Non sabes exactamente o que queres? Dalle a Tomahawk algunhas ideas e deixalle que che faga unha lista de reprodución para ti! + Non sabes exactamente o que queres? Dálle a Tomahawk algunhas ideas e déixalle que che faga unha lista de reprodución para ti! @@ -1183,7 +1183,7 @@ connect and stream from you? This playlist is currently empty. Add some tracks to it and enjoy the music! - Esta lista de reprodución está agora mesmo baleira. Engádelle unhas pistas para desfrutar da música! + Esta lista de reprodución está agora mesmo baleira. Engádelle unhas pistas para gozar da música! @@ -1251,52 +1251,52 @@ connect and stream from you? %n year(s) ago - %n ano(s) atrás + %n ano(s) atrás%n ano(s) atrás %n year(s) - %n ano(s) + %n ano(s)%n ano(s) %n month(s) ago - %n mes(es) atrás + %n mes(es) atrás%n mes(es) atrás %n month(s) - %n mes(es) + %n mes(es)%n mes(es) %n week(s) ago - %n semana(s) atrás + %n semana(s) atrás%n semana(s) atrás %n week(s) - %n semana(s) + %n semana(s)%n semana(s) %n day(s) ago - %n día(s) atrás + %n día(s) atrás%n día(s) atrás %n day(s) - %n día(s) + %n día(s)%n día(s) %n hour(s) ago - %n hora(s) atrás + %n hora(s) atrás%n hora(s) atrás %n hour(s) - %n hora(s) + %n hora(s)%n hora(s) @@ -1332,13 +1332,13 @@ connect and stream from you? %1 Config - + %1 Configuración %1 Configuration - + %1 Configuración @@ -1360,7 +1360,7 @@ connect and stream from you? Open Queue - %n item(s) - Abrir a ringleira - %n elemento(s) + Abrir a ringleira - %n elementoAbrir a ringleira - %n elementos @@ -1455,7 +1455,7 @@ connect and stream from you? Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - Configurar as propiedades avanzadas de Tomahawks, incluíndo a conectividade a rede, a interacción co navegador e outras. + Configurar as propiedades avanzadas de Tomahawk, incluíndo a conectividade a rede, a interacción co navegador e outras. @@ -1506,12 +1506,12 @@ connect and stream from you? Use static external IP address/host name and port - + Empregar a dirección IP externa estática ou o nome de servidor e porto Set this to your external IP address or host name. Make sure to forward the port to this host! - + Define isto para a túa dirección IP externa ou nome de servidor. Asegúrate de que remitir o porto a este servidor! @@ -1556,7 +1556,7 @@ connect and stream from you? Show notification when a new song starts to play - + Mostrar notificacións cando se comece a reproducir unha nova canción @@ -1577,7 +1577,7 @@ connect and stream from you? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - O Echo Nest soporta estar ao tanto do teu catálogo de metadatos e empregalo para artellar rádios personalizadas. Activando esta opción podes (e tódolos teus amigos) crear listas de reprodución automática e emisoras baseandose nos perfís de gustos persoais. + O Echo Nest soporta estar ao tanto do teu catálogo de metadatos e empregalo para artellar radios personalizadas. Activando esta opción podes (e tódolos teus amigos) crear listas de reprodución automática e emisoras baseándose nos perfís de gustos persoais. @@ -1641,7 +1641,7 @@ connect and stream from you? Tweet - Chio + Chío @@ -1689,7 +1689,7 @@ connect and stream from you? All available tracks - Tódolas pistas dispoñíbeis + Tódalas pistas dispoñíbeis @@ -1763,7 +1763,7 @@ connect and stream from you? Latest additions to your collection - Os últimos engadidos á túa coleción + Os últimos engadidos á túa colección @@ -1950,7 +1950,7 @@ connect and stream from you? Username or Facebook Email - Nome de usuario ou correo electrónico de Fabook + Nome de usuario ou correo electrónico de Facebook @@ -1970,7 +1970,7 @@ connect and stream from you? Sync Starred tracks to Loved tracks - + Sincronizar as pistas almacenadas coas pistas que che gustan @@ -2067,7 +2067,7 @@ connect and stream from you? Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - Lamentablemente a instalación automatica deste resolvedor non está disponíbel ou está desactivado para a túa plataforma.<br/><br/>Usa o «instalar dende ficheiro» de arriba, buscándoo para a túa distribución ou compilándoo. Podes atopar máis intrucións aquí:<br/><br/>http://www.tomahawk-player.org/resolvers/%1 + Lamentablemente a instalación automática deste resolvedor non está dispoñíbel ou está desactivado para a túa plataforma.<br/><br/>Usa o «instalar dende ficheiro» de arriba, buscándoo para a túa distribución ou compilándoo. Podes atopar máis instrucións aquí:<br/><br/>http://www.tomahawk-player.org/resolvers/%1 @@ -2124,7 +2124,7 @@ connect and stream from you? Scrobble your tracks to last.fm, and find freely downloadable tracks to play - + Rexistra as túas escoitas en last.fm e atopa pistas para descargar gratis e reproducilas @@ -2154,7 +2154,7 @@ connect and stream from you? History Incomplete. Resume Text on a button that resumes import - Historial incompleto. Reanudando + Historial incompleto. Reiniciar @@ -2228,7 +2228,7 @@ connect and stream from you? Disable Spotify collaborations - Descativar as colaboracións con Spotify + Desactivar as colaboracións con Spotify @@ -2341,7 +2341,7 @@ Podes volver a probar a acceder. Global Tweet - Chio global + Chío global @@ -2379,7 +2379,7 @@ Proba a volver a autenticarte. Your saved credentials could not be verified. You may wish to try re-authenticating. - Gardaches redenciais que non se poden comprobar. + Gardaches credenciais que non se poden comprobar. Proba a volver a autenticarte. @@ -2402,7 +2402,7 @@ Proba a volver a autenticarte. There was an error posting your direct message -- sorry! - Houbo un erro ao envíar a túa mensaxe directa .-- mágoa! + Houbo un erro ao enviar a túa mensaxe directa .-- mágoa! @@ -2424,7 +2424,7 @@ Proba a volver a autenticarte. Local Network - + Rede local
@@ -2432,7 +2432,7 @@ Proba a volver a autenticarte. Local Network - + Rede local @@ -2475,19 +2475,19 @@ Proba a volver a autenticarte. &Go to "%1" - + &Ir a «%1» Go to "%1" - + Ir a «%1» &Copy Track Link - + &Copiar a ligazón da pista @@ -2607,7 +2607,7 @@ Cambia os filtros e proba de novo. Add some filters above, and press Generate to get started! - Engade algúns filtros enriba e preme Xenerar para comezar! + Engade algúns filtros enriba e preme xerar para comezar! @@ -2730,22 +2730,22 @@ Proba a trocar os filtros para ter outra lista música para escoitar. E Flat - + Mi bemol E - E + Mi F - F + Fa F Sharp - + Fa sostido @@ -2755,22 +2755,22 @@ Proba a trocar os filtros para ter outra lista música para escoitar. A Flat - + La bemol A - A + La B Flat - + Mi bemol B - B + Si @@ -2867,7 +2867,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. from no one - de niguén + de ninguén @@ -2877,7 +2877,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. from my radio - + dende a miña radio @@ -2887,37 +2887,37 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Variety - + Variedade Adventurousness - + Ao aventureiro very low - + moi baixa low - + baixa moderate - + moderada high - + alta very high - + moi alta @@ -2932,7 +2932,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. about %n minute(s) long - cerca de %n minuto(s) de longa + cerca de %n minuto(s) de longacerca de %n minuto(s) de longa @@ -3147,17 +3147,17 @@ Proba a trocar os filtros para ter outra lista música para escoitar. %n other(s) - + %n diferente%n diferentes %n people - + %n persoa%n persoas loved this track - gustóuvos esta pista + gustouvos esta pista @@ -3181,7 +3181,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Track '%1' by %2 is not streamable. - + A pista «%1» de %2 non se pode pór en fluxo. @@ -3241,7 +3241,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Automatically update from XSPF - Actualizar automáticamente de XSPF + Actualizar automaticamente de XSPF @@ -3263,7 +3263,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. After authenticating on Twitter's web site, enter the displayed PIN number here: - Despois de autentificarse na páxina web de Twitter, introduce o número PIN que se mostrase aquí: + Despois de autenticase na páxina web de Twitter, introduce o número PIN que se mostrase aquí: @@ -3271,7 +3271,7 @@ enter the displayed PIN number here: Local Network - + Rede local @@ -3348,7 +3348,7 @@ enter the displayed PIN number here: Go forward one page - Ir unha páxian adiante + Ir unha páxina adiante @@ -3365,7 +3365,7 @@ enter the displayed PIN number here: Search for any artist, album or song... - + Buscar a calquera artista, álbum ou canción... @@ -3446,7 +3446,7 @@ enter the displayed PIN number here: Error connecting to SIP: Authentication failed! - Erro conectándose a SIP: Fallou a autentificación! + Erro conectándose a SIP: Fallou a autenticación! @@ -3472,8 +3472,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + @@ -3509,12 +3509,12 @@ enter the displayed PIN number here: You've listened to this track %n time(s). - Escoitaches esta pista %n vece(s). + Escoitaches esta pista %n vece(s).Escoitaches esta pista %n vece(s). You've never listened to this track before. - Nunca antes escoutaras esta pista. + Nunca antes escoitaras esta pista. @@ -3524,7 +3524,7 @@ enter the displayed PIN number here: You've listened to %1 %n time(s). - Escoitaches %1 %n veces. + Escoitaches %1 %n veces.Escoitaches %1 %n veces. @@ -3596,27 +3596,27 @@ enter the displayed PIN number here: Configure this Twitter account - + Configura esta conta de Twitter The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. - + Este engadido de Twitter permíteche descubrir e reproducir música que estean a escoitar as túas amizades do Twitter, e tamén publicar mensaxes na túa conta. Status: No saved credentials - + Estado: sen credenciais gardadas Authenticate with Twitter - + Autenticarse con Twitter Twitter Connections - + Conexións de Twitter @@ -3626,32 +3626,37 @@ If you only want to post tweets, you're done. If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! You can re-send a sync message at any time simply by sending another tweet using the button. - + +Se só queres chiar, xa está feito. + +Se queres conectar o Tomahawk coas túas amizades usando o Twitter, escolle o tipo de chío e preme no botón de embaixo para enviar unha mensaxe sincronizada. Ambos teredes que vos seguir mutuamente xa que se empregarán Mensaxes Directas. Logo, se moi paciente e agarda -- pode tardar varios minutos! + +Podes reenviar e sincronizar as mensaxes en calquera momento simplemente enviando outro chío empregando o botón. Select the kind of tweet you would like, then press the button to post it: - + Escolle o tipo de chíos que queres e despois preme no botón para publicalo. Global Tweet - + Chío global @Mention - + @Mención Direct Message - + Mensaxe Directo e.g. @tomahawk - + p.ex @tomahawk @@ -3664,7 +3669,7 @@ You can re-send a sync message at any time simply by sending another tweet using Enter Twitter username - + Introduce o teu nome de usuario de Twitter @@ -3672,27 +3677,27 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + Esta lista de reprodución está baleira! After you have scanned your music collection you will find your tracks right here. - + Cando teñas a colección de música escaneada as pistas aparecerán aquí. This collection is empty. - + Esta colección está baleira. SuperCollection - + Supercolección Combined libraries of all your online friends - + Bibliotecas combinadas de todas as túas amizades @@ -3702,12 +3707,12 @@ You can re-send a sync message at any time simply by sending another tweet using Recently played tracks from all your friends - + Pistas escoitadas recentemente polas túas amizades Sorry, we could not find any recent plays! - + Non se atoparan reproducións recentes! @@ -3715,12 +3720,12 @@ You can re-send a sync message at any time simply by sending another tweet using Recent Additions - + Engadidos recentemente Newest Stations & Playlists - + Novas estacións e listas de reprodución @@ -3735,12 +3740,12 @@ You can re-send a sync message at any time simply by sending another tweet using No recently created playlists in your network. - + Non hai listas creadas recentemente na túa rede. Welcome to Tomahawk - + Benvidos a Tomahawk @@ -3766,26 +3771,28 @@ You can re-send a sync message at any time simply by sending another tweet using Terms for %1: - + +Termos para %1: No terms found, sorry. - + Non se atoparon termos. Hotttness for %1: %2 - + +Popularidade de %1: %2 Familiarity for %1: %2 - + Familiaridade con %1: %2 @@ -3794,7 +3801,9 @@ Lyrics for "%1" by %2: %3 - + Letras para «%1» por %2: + +%3 @@ -3802,17 +3811,17 @@ Lyrics for "%1" by %2: Failed to parse contents of XSPF playlist - + Fallouse ao procesar os contidos da lista de reprodución XSPF Some playlist entries were found without artist and track name, they will be omitted - + Algunhas entradas da lista de reprodución atopáronse sen artistas e nomes de pista co cal omitiranse. Failed to fetch the desired playlist from the network, or the desired file does not exist - + Ou ben fallou a busca da lista de reprodución que querías na rede ou o ben ese ficheiro non existe @@ -3825,7 +3834,7 @@ Lyrics for "%1" by %2: Xml stream console - + Consola de fluxo de xml @@ -3846,27 +3855,27 @@ Lyrics for "%1" by %2: By JID - + Por JID By namespace uri - + Pola uri de espazo de nomes By all attributes - + Por todos os atributos Visible stanzas - + Stanzas visibles Information query - + Consulta de información @@ -3891,12 +3900,12 @@ Lyrics for "%1" by %2: Save XMPP log to file - + Gardar o ficheiro de rexistro XMPP OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt) - + Formato OpenDocument (*.odf);; Ficheiro HTML (*.html);;Texto plano (*.txt) @@ -3904,32 +3913,32 @@ Lyrics for "%1" by %2: Xmpp Configuration - + Configuración de Xmpp Configure this Xmpp account - + Configurar esta conta Xmpp Enter your Xmpp login to connect with your friends using Tomahawk! - + Introduce o teu rexistro de usuario Xmpp para conectar coas túas amizades empregando o Tomahawk! Login Information - Información de autentificación + Información de autenticación Xmpp ID: - + ID Xmpp: e.g. user@example.com - + p.ex usuario@trasno.net @@ -3939,12 +3948,12 @@ Lyrics for "%1" by %2: An account with this name already exists! - + Xa existe unha conta con este nome! Advanced Xmpp Settings - + Configuración de Xmpp avanzada @@ -3959,17 +3968,17 @@ Lyrics for "%1" by %2: Lots of servers don't support this (e.g. GTalk, jabber.org) - + Moitos dos servidores non admiten isto (p.ex GTalk, jabber.org) Publish currently playing track - + Publicar a pista que se está a escoitar agora Enforce secure connection - + Forzar a conexión segura @@ -3977,17 +3986,17 @@ Lyrics for "%1" by %2: User Interaction - + Interacción de usuarios Host is unknown - + Descoñécese o servidor Item not found - + Elemento non encontrado @@ -3997,12 +4006,12 @@ Lyrics for "%1" by %2: Remote Stream Error - + Remote Connection failed - + Fallou a conexión remota @@ -4027,32 +4036,32 @@ Lyrics for "%1" by %2: Do you want to add <b>%1</b> to your friend list? - + Queres engadir |b>%1</b> a túa lista de amizades? No Compression Support - + Non se soporta a compresión Enter Jabber ID - + Introducir a ID de Jabber No Encryption Support - + Non se soporta o encriptado No Authorization Support - + Non hai soporte de autorización No Supported Feature - + Característica non soportada @@ -4062,7 +4071,7 @@ Lyrics for "%1" by %2: Enter Xmpp ID: - + Introduce a ID de XMPP: @@ -4077,12 +4086,12 @@ Lyrics for "%1" by %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Síntocho -- Son unha mensaxe automática empregada por Tomahawk Player (http://gettomahawk.com). Se ves esta mensaxe é porque a quen te dirixes case seguro non está conectado. Inténtao máis tarde! Authorize User - + Autorizar o usuario @@ -4090,17 +4099,17 @@ Lyrics for "%1" by %2: Local Network configuration - + Configuración da rede local This plugin will automatically find other users running Tomahawk on your local network - + Este engadido automaticamente atopa outros usuario que empreguen Tomahawk na mesma rede local Connect automatically when Tomahawk starts - + Conectarse automaticamente cando Tomahawk se inicie \ No newline at end of file diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index b1f2261d77..b72fa3ebb3 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3461,7 +3461,7 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 + Copyright 2010 - 2013 diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 18dada1f0c..4df9005630 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3461,7 +3461,7 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 + Copyright 2010 - 2013 diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 2bc350e2b1..772e0c13c6 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3461,8 +3461,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 7689614d2b..388b4ea6ab 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawkは%2の%1を見つかりませんでした。 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawkは'%1'と言うアーティストを見つかりませんでした。 - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawkは%2の%1を見つかりませんでした。 @@ -3474,8 +3474,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 2a5fa27df3..690fd9fc15 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Atsiprašome, Tomahawk nepavyko rasti takelio '%1', atliekamo %2 - + Sorry, Tomahawk couldn't find the artist '%1' Atsiprašome, Tomahawk nepavyko rasti atlikėjo '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Atsiprašome, Tomahawk nepavyko rasti %2 atliekamo albumo '%1' @@ -3461,8 +3461,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Autorinės teisės 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 47c4e243b7..838cb14370 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -374,17 +374,17 @@ połączyć się i strumieniować od ciebie? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Przepraszamy, Tomahawk nie mógł znaleźć utworu '%1' wykonawcy %2 - + Sorry, Tomahawk couldn't find the artist '%1' Przepraszamy, Tomahawk nie mógł znaleźć wykonawcy '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Przepraszamy, Tomahawk nie mógł znaleźć albumu '%1' wykonawcy %2 @@ -3471,8 +3471,8 @@ wprowadź pokazany numer PIN tutaj: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index a309d1b19d..b89cfc5f96 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -374,17 +374,17 @@ se conecte e faça o stream de você? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Desculpe, o Tomahawk não encontrou a faixa '%1' de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Desculpe, o Tomahawk não encontrou o artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Desculpe, o Tomahawk não encontrou o álbum '%1' de %2 @@ -3471,8 +3471,8 @@ colocar o número PIN mostrado aqui: - Copyright 2010 - 2012 - Copyright 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index e182a34a22..26e38532eb 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -378,17 +378,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 К сожалению, Tomahawk не смог найти песню '%1' %2 - + Sorry, Tomahawk couldn't find the artist '%1' К сожалению, Tomahawk не смог найти исполнителя '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 К сожалению, Tomahawk не смог найти альбом '%1' %2 @@ -398,7 +398,7 @@ connect and stream from you? Create new Playlist - Создать новый Плейлист + Создать Новый Плейлист @@ -463,7 +463,7 @@ connect and stream from you? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style=" font-weight:600;">Простите!</span> Tomahawk сломался :). Пожалуйста, сообщите нам об этом! Tomahawk создал отчет об ошибке, который поможет улучшить стабильность в будущем. Теперь Вы можете отправить отчет непосредственно разработчикам Tomahawk. Спасибо за помощь! </p></body></html> @@ -616,12 +616,12 @@ connect and stream from you? Song Hotttnesss - + Song Hotttnesss Artist Hotttnesss - + Artist Hotttnesss @@ -696,7 +696,7 @@ connect and stream from you? Username: - Имя пользователя: + Имя Пользователя: @@ -804,7 +804,7 @@ connect and stream from you? The most loved tracks from all your friends - Любимые песни ваших друзей + Любимые Песни Вас и Ваших Друзей @@ -814,7 +814,7 @@ connect and stream from you? All of %1's loved tracks - Все из %1 любимые песни + Все Любимые Песни %1 @@ -1036,12 +1036,12 @@ connect and stream from you? Very good match - Очень хорошое совпадение + Очень Хорошое Good match - Хорошое совпадение + Хорошое @@ -1145,7 +1145,7 @@ connect and stream from you? New Playlist - Новый плейлист + Новый Плейлист @@ -1365,7 +1365,7 @@ connect and stream from you? Open Queue - %n item(s) - + Открыть %n в ОчередиОткрыть %n в ОчередиОткрыть %n в Очереди @@ -1763,7 +1763,7 @@ connect and stream from you? SuperCollection - Общая коллекция + Общая Коллекция @@ -1910,12 +1910,12 @@ connect and stream from you? My Music - Моя музыка + Моя Музыка SuperCollection - Общая коллекция + Общая Коллекция @@ -2455,7 +2455,7 @@ You may wish to try re-authenticating. Add to &Queue - Добавить В &Очередь + Добавить в &Очередь @@ -2465,7 +2465,7 @@ You may wish to try re-authenticating. Stop Playback after this &Track - Остановить воспроизведение после этого &Песни + Остановить Воспроизведение После Этой &Песни @@ -2505,7 +2505,7 @@ You may wish to try re-authenticating. Un-&Love - &Не Любимая + &НеЛюбимая @@ -2660,7 +2660,7 @@ Try tweaking the filters for a new set of songs to play. Less - Ьеньше + Менее @@ -2873,7 +2873,7 @@ Try tweaking the filters for a new set of songs to play. My Collection - Моя коллекция + Моя Коллекция @@ -2888,12 +2888,12 @@ Try tweaking the filters for a new set of songs to play. Variety - + Variety Adventurousness - + Adventurousness @@ -2933,7 +2933,7 @@ Try tweaking the filters for a new set of songs to play. about %n minute(s) long - + Продолжительность около %n минутыПродолжительность около %n минутПродолжительность около %n минут @@ -3072,7 +3072,7 @@ Try tweaking the filters for a new set of songs to play. New Playlist - Новый плейлист + Новый Плейлист @@ -3148,12 +3148,12 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + %n другой%n другие%n другие %n people - + %n человек%n человека%n человек @@ -3250,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. My Collection - Моя коллекция + Моя Коллекция @@ -3316,7 +3316,7 @@ enter the displayed PIN number here: Un-&Love - &Нелюбимая + &НеЛюбимая @@ -3411,7 +3411,7 @@ enter the displayed PIN number here: Create New Station - Создать новую станцию + Создать Новую Станцию @@ -3472,8 +3472,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - Авторское право 2010 - 2012 + Copyright 2010 - 2013 + @@ -3509,7 +3509,7 @@ enter the displayed PIN number here: You've listened to this track %n time(s). - Слушал эту песню %n раз.Слушал эту песню %n раз.Слушал эту песню %n раз. + Вы слушали эту песню %n раз.Вы слушали эту песню %n раз.Вы слушали эту песню %n раз. @@ -3574,7 +3574,7 @@ enter the displayed PIN number here: My Collection - Моя коллекция + Моя Коллекция @@ -3691,7 +3691,7 @@ You can re-send a sync message at any time simply by sending another tweet using SuperCollection - Общая коллекция + Общая Коллекция diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index b1deda8603..47969e6e37 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -374,17 +374,17 @@ ansluta och strömma från dig? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tyvärr! Tomahawk kunde inte hitta spåret '%1' av %2 - + Sorry, Tomahawk couldn't find the artist '%1' Tyvärr! Tomahawk kunde inte hitta artisten '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tyvärr! Tomahawk kunde inte hitta albumet '%1' av %2 @@ -3471,8 +3471,8 @@ anger du PIN-koden här: - Copyright 2010 - 2012 - Copyright 2010-2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index f975e08e18..4c9f595480 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3461,7 +3461,7 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 + Copyright 2010 - 2013 diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 99174698b0..84eb991bc7 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 抱歉,Tomahawk 未找到 %2 的歌曲 '%1' - + Sorry, Tomahawk couldn't find the artist '%1' 抱歉,Tomahawk 无法找到艺术家 '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 抱歉,Tomahawk 无法找到 %2 的专辑 '%1' @@ -3472,8 +3472,8 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 - 版权所有 2010 - 2012 + Copyright 2010 - 2013 + diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 89a55f44a5..6cafd037fb 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -373,17 +373,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -3461,7 +3461,7 @@ enter the displayed PIN number here: - Copyright 2010 - 2012 + Copyright 2010 - 2013 From ebcda30c96a39e84d5caf5f8ce3f813fe73466ec Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 04:32:27 +0100 Subject: [PATCH 171/310] * Temporary fixes until PlaylistChartItemDelegate becomes a proper PlaylistItemDelegate. --- .../playlist/PlaylistChartItemDelegate.cpp | 12 +++++------- src/libtomahawk/playlist/PlaylistChartItemDelegate.h | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp index 49c9cc7b92..eba7c3b975 100644 --- a/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistChartItemDelegate.cpp @@ -59,10 +59,11 @@ PlaylistChartItemDelegate::PlaylistChartItemDelegate( TrackView* parent, Playabl m_bottomOption = QTextOption( Qt::AlignBottom ); m_bottomOption.setWrapMode( QTextOption::NoWrap ); + connect( this, SIGNAL( updateIndex( QModelIndex ) ), parent, SLOT( update( QModelIndex ) ) ); + connect( m_model, SIGNAL( modelReset() ), this, SLOT( modelChanged() ) ); if ( PlaylistView* plView = qobject_cast< PlaylistView* >( parent ) ) connect( plView, SIGNAL( modelChanged() ), this, SLOT( modelChanged() ) ); - } @@ -91,11 +92,8 @@ PlaylistChartItemDelegate::sizeHint( const QStyleOptionViewItem& option, const Q stretch = 2; } - if ( index.isValid() ) - { - int rowHeight = option.fontMetrics.height() + 8; - size.setHeight( rowHeight * stretch ); - } + int rowHeight = option.fontMetrics.height() + 8; + size.setHeight( rowHeight * stretch ); return size; } @@ -241,7 +239,7 @@ PlaylistChartItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& void PlaylistChartItemDelegate::doUpdateIndex( const QPersistentModelIndex& idx ) { - emit updateRequest( idx ); + emit updateIndex( idx ); } diff --git a/src/libtomahawk/playlist/PlaylistChartItemDelegate.h b/src/libtomahawk/playlist/PlaylistChartItemDelegate.h index 87017d4534..ffa642bd67 100644 --- a/src/libtomahawk/playlist/PlaylistChartItemDelegate.h +++ b/src/libtomahawk/playlist/PlaylistChartItemDelegate.h @@ -43,7 +43,7 @@ Q_OBJECT PlaylistChartItemDelegate( TrackView* parent = 0, PlayableProxyModel* proxy = 0 ); signals: - void updateRequest( const QModelIndex& idx ); + void updateIndex( const QModelIndex& idx ); protected: void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const; From ee13c256072281987b266ec95796ab71a2268228 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 04:33:07 +0100 Subject: [PATCH 172/310] * Manual signal connect is obsolete. --- src/libtomahawk/widgets/WhatsHotWidget.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libtomahawk/widgets/WhatsHotWidget.cpp b/src/libtomahawk/widgets/WhatsHotWidget.cpp index 31704a062f..68a7a09bd2 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.cpp +++ b/src/libtomahawk/widgets/WhatsHotWidget.cpp @@ -81,7 +81,6 @@ WhatsHotWidget::WhatsHotWidget( QWidget* parent ) ui->tracksViewLeft->setHeaderHidden( true ); ui->tracksViewLeft->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); PlaylistChartItemDelegate* del = new PlaylistChartItemDelegate( ui->tracksViewLeft, ui->tracksViewLeft->proxyModel() ); - connect( del, SIGNAL( updateRequest( QModelIndex ) ), ui->tracksViewLeft, SLOT( update( QModelIndex ) ) ); ui->tracksViewLeft->setItemDelegate( del ); ui->tracksViewLeft->setUniformRowHeights( false ); From 34da802874ddac70cce523981745c9bda222080d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 04:33:23 +0100 Subject: [PATCH 173/310] * Use an AlbumItemDelegate for Artist page. --- src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index 9302482e75..9cb1d7affb 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -25,6 +25,7 @@ #include "audio/AudioEngine.h" #include "playlist/GridItemDelegate.h" +#include "playlist/AlbumItemDelegate.h" #include "playlist/PlayableModel.h" #include "playlist/TreeModel.h" #include "playlist/PlaylistModel.h" @@ -76,7 +77,10 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* ui->topHits->setSortingEnabled( false ); ui->topHits->setEmptyTip( tr( "Sorry, we could not find any top hits for this artist!" ) ); ui->topHits->setAutoResize( true ); - + + AlbumItemDelegate* del = new AlbumItemDelegate( ui->topHits, ui->topHits->proxyModel() ); + ui->topHits->setPlaylistItemDelegate( del ); + ui->relatedArtists->setAutoFitItems( false ); ui->relatedArtists->setWrapping( false ); ui->relatedArtists->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); From 04175de726a9f488dfb9ec46fecdf1af16f772f1 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 05:07:31 +0100 Subject: [PATCH 174/310] * Use the same color for drawing charts-position & album-position. --- src/libtomahawk/playlist/AlbumItemDelegate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/AlbumItemDelegate.cpp b/src/libtomahawk/playlist/AlbumItemDelegate.cpp index 2ba6700e22..51d75bf08e 100644 --- a/src/libtomahawk/playlist/AlbumItemDelegate.cpp +++ b/src/libtomahawk/playlist/AlbumItemDelegate.cpp @@ -118,12 +118,12 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, QFontMetrics smallBoldFontMetrics( smallBoldFont ); painter->setFont( boldFont ); - painter->setPen( option.palette.text().color().lighter() ); + painter->setPen( option.palette.text().color().lighter( 450 ) ); QRect figureRect = r.adjusted( 4, 0, 0, 0 ); figureRect.setWidth( QFontMetrics( painter->font() ).width( "888" ) ); painter->drawText( figureRect, QString::number( index.row() + 1 ), QTextOption( Qt::AlignCenter ) ); - + r.adjust( figureRect.width() + 12, 0, 0, 0 ); QRect leftRect = r.adjusted( 0, 0, -48, 0 ); QRect rightRect = r.adjusted( r.width() - smallBoldFontMetrics.width( TomahawkUtils::timeToString( duration ) ), 0, 0, 0 ); From d9dbc7f1607e3c876d8d159ca501edaa0dd736b9 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 05:55:12 +0100 Subject: [PATCH 175/310] * Support external links in artist biographies. --- .../widgets/infowidgets/ArtistInfoWidget.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index 9cb1d7affb..e05b7d392b 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -20,6 +20,7 @@ #include "ArtistInfoWidget.h" #include "ui_ArtistInfoWidget.h" +#include #include #include @@ -324,7 +325,15 @@ void ArtistInfoWidget::onBiographyLinkClicked( const QUrl& url ) { tDebug() << Q_FUNC_INFO << url; - GlobalActionManager::instance()->parseTomahawkLink( url.toString() ); + + if ( url.scheme() == "tomahawk" ) + { + GlobalActionManager::instance()->parseTomahawkLink( url.toString() ); + } + else + { + QDesktopServices::openUrl( url ); + } } From ecec703191af772ce775fac400e53695c90c1760 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 06:14:35 +0100 Subject: [PATCH 176/310] * Fixed Artist & Album page layout when the items don't fill up the entire view. --- .../widgets/infowidgets/AlbumInfoWidget.ui | 33 ++++++------- .../widgets/infowidgets/ArtistInfoWidget.ui | 49 +++++++------------ 2 files changed, 33 insertions(+), 49 deletions(-) diff --git a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui index a4d3b1b661..f931cbde43 100644 --- a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui +++ b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.ui @@ -13,7 +13,7 @@ Form - + 16 @@ -73,12 +73,6 @@ - - - 0 - 0 - - QFrame::StyledPanel @@ -126,12 +120,6 @@ 0 - - - 0 - 300 - - true @@ -142,12 +130,6 @@ - - - 0 - 0 - - QFrame::StyledPanel @@ -207,6 +189,19 @@ + + + + Qt::Vertical + + + + 20 + 0 + + + + diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui index 3ad93f8898..5f78b702a2 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.ui @@ -13,7 +13,7 @@ Form - + 16 @@ -73,12 +73,6 @@ - - - 0 - 0 - - QFrame::StyledPanel @@ -126,12 +120,6 @@ 0 - - - 0 - 300 - - true @@ -142,12 +130,6 @@ - - - 0 - 0 - - QFrame::StyledPanel @@ -209,12 +191,6 @@ - - - 0 - 0 - - QFrame::StyledPanel @@ -274,6 +250,19 @@ + + + + Qt::Vertical + + + + 20 + 0 + + + + @@ -282,16 +271,16 @@ QListView
playlist/GridView.h
- - PlaylistView - QTreeView -
playlist/PlaylistView.h
-
PlayableCover QLabel
widgets/PlayableCover.h
+ + PlaylistView + QTreeView +
playlist/PlaylistView.h
+
From dd79ffe7e778239d37fbb9361a5ebe3dc8021be9 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 06:18:05 +0100 Subject: [PATCH 177/310] * Always enfore the vertical scrollbar on Artist & Album pages to get rid of flickery resizing. --- src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp | 1 + src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp index f18fb710bf..8b66ca5a7b 100644 --- a/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/AlbumInfoWidget.cpp @@ -99,6 +99,7 @@ AlbumInfoWidget::AlbumInfoWidget( const Tomahawk::album_ptr& album, QWidget* par QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); + area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); area->setStyleSheet( "QScrollArea { background-color: #454e59; }" ); diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index e05b7d392b..26864844af 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -122,6 +122,7 @@ ArtistInfoWidget::ArtistInfoWidget( const Tomahawk::artist_ptr& artist, QWidget* QScrollArea* area = new QScrollArea(); area->setWidgetResizable( true ); + area->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); area->setWidget( widget ); area->setStyleSheet( "QScrollArea { background-color: #454e59; }" ); From c832e63c59aeb6c8f664db1c82ce413566b3d03f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:06:02 +0100 Subject: [PATCH 178/310] * Style fixes in WhatsHotWidget. --- src/libtomahawk/widgets/WhatsHotWidget.cpp | 59 ++++++++++------------ src/libtomahawk/widgets/WhatsHotWidget.h | 6 +-- 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/src/libtomahawk/widgets/WhatsHotWidget.cpp b/src/libtomahawk/widgets/WhatsHotWidget.cpp index 68a7a09bd2..ff66a5c187 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.cpp +++ b/src/libtomahawk/widgets/WhatsHotWidget.cpp @@ -103,12 +103,7 @@ WhatsHotWidget::WhatsHotWidget( QWidget* parent ) // Read last viewed charts, to be used as defaults m_currentVIds = TomahawkSettings::instance()->lastChartIds(); - qDebug() << "Got last chartIds:" << m_currentVIds; - - // TracksView is first shown, show spinner on that - // After fadeOut, charts are loaded - m_loadingSpinner = new AnimatedSpinner( ui->tracksViewLeft ); - m_loadingSpinner->fadeIn(); + tDebug( LOGVERBOSE ) << "Re-loading last chartIds:" << m_currentVIds; MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksViewLeft->playlistInterface() ); @@ -120,14 +115,15 @@ WhatsHotWidget::WhatsHotWidget( QWidget* parent ) WhatsHotWidget::~WhatsHotWidget() { - qDebug() << "Deleting whatshot"; + tDebug( LOGVERBOSE ) << Q_FUNC_INFO; + // Write the settings - qDebug() << "Writing chartIds to settings:" << m_currentVIds; TomahawkSettings::instance()->setLastChartIds( m_currentVIds ); + qDeleteAll( m_workers ); m_workers.clear(); m_workerThread->exit( 0 ); - m_playlistInterface.clear(); + delete ui; } @@ -212,7 +208,7 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat { case InfoSystem::InfoChartCapabilities: { - QStandardItem *rootItem= m_crumbModelLeft->invisibleRootItem(); + QStandardItem* rootItem= m_crumbModelLeft->invisibleRootItem(); QVariantMap defaults; if ( returnedData.contains( "defaults" ) ) defaults = returnedData.take( "defaults" ).toMap(); @@ -221,22 +217,23 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat QString defaultSource = returnedData.take( "defaultSource" ).toString(); // Here, we dont want current sessions last view, but rather what was current on previus quit QString lastSeen = TomahawkSettings::instance()->lastChartIds().value( "lastseen" ).toString(); - if( !lastSeen.isEmpty() ) + if ( !lastSeen.isEmpty() ) defaultSource = lastSeen; // Merge defaults with current defaults, split the value in to a list - foreach( const QString&key, m_currentVIds.keys() ) + foreach ( const QString& key, m_currentVIds.keys() ) defaults[ key ] = m_currentVIds.value( key ).toString().split( "/" ); - qDebug() << "Defaults after merge" << defaults; + + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Defaults after merge" << defaults; foreach ( const QString label, returnedData.keys() ) { - QStandardItem *childItem = parseNode( rootItem, label, returnedData[ label ] ); + QStandardItem* childItem = parseNode( rootItem, label, returnedData[ label ] ); rootItem->appendRow( childItem ); } // Set the default source // Set the default chart for each source - if( !defaults.empty() ) + if ( !defaults.empty() ) { for ( int i = 0; i < rootItem->rowCount(); i++ ) { @@ -251,7 +248,7 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat QStringList defaultIndices = defaults[ source->text().toLower() ].toStringList(); QStandardItem* cur = source; - foreach( const QString& index, defaultIndices ) + foreach ( const QString& index, defaultIndices ) { // Go through the children of the current item, marking the default one as default for ( int k = 0; k < cur->rowCount(); k++ ) @@ -276,10 +273,9 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat case InfoSystem::InfoChart: { - - if( returnedData.contains( "chart_error") ) + if ( returnedData.contains( "chart_error" ) ) { - tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Info came back with error!!"; + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Info came back with error!"; Tomahawk::InfoSystem::InfoStringHash criteria; criteria.insert( "chart_refetch", returnedData[ "chart_source" ].value< QString >() ); @@ -301,7 +297,6 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat break; const QString type = returnedData[ "type" ].toString(); - if ( !returnedData.contains( type ) ) break; @@ -318,7 +313,7 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat loader->setType( ChartDataLoader::Artist ); loader->setData( returnedData[ "artists" ].value< QStringList >() ); - connect( loader, SIGNAL( artists( Tomahawk::ChartDataLoader*, QList< Tomahawk::artist_ptr > ) ), this, SLOT( chartArtistsLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::artist_ptr > ) ) ); + connect( loader, SIGNAL( artists( Tomahawk::ChartDataLoader*, QList< Tomahawk::artist_ptr > ) ), SLOT( chartArtistsLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::artist_ptr > ) ) ); TreeModel* artistsModel = new TreeModel( ui->artistsViewLeft ); artistsModel->setMode( InfoSystemMode ); @@ -334,7 +329,7 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat loader->setType( ChartDataLoader::Album ); loader->setData( returnedData[ "albums" ].value< QList< Tomahawk::InfoSystem::InfoStringHash > >() ); - connect( loader, SIGNAL( albums( Tomahawk::ChartDataLoader*, QList< Tomahawk::album_ptr > ) ), this, SLOT( chartAlbumsLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::album_ptr > ) ) ); + connect( loader, SIGNAL( albums( Tomahawk::ChartDataLoader*, QList< Tomahawk::album_ptr > ) ), SLOT( chartAlbumsLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::album_ptr > ) ) ); PlayableModel* albumModel = new PlayableModel( ui->albumsView ); albumModel->startLoading(); @@ -349,7 +344,7 @@ WhatsHotWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestDat loader->setType( ChartDataLoader::Track ); loader->setData( returnedData[ "tracks" ].value< QList< Tomahawk::InfoSystem::InfoStringHash > >() ); - connect( loader, SIGNAL( tracks( Tomahawk::ChartDataLoader*, QList< Tomahawk::query_ptr > ) ), this, SLOT( chartTracksLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::query_ptr > ) ) ); + connect( loader, SIGNAL( tracks( Tomahawk::ChartDataLoader*, QList< Tomahawk::query_ptr > ) ), SLOT( chartTracksLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::query_ptr > ) ) ); PlaylistModel* trackModel = new PlaylistModel( ui->tracksViewLeft ); trackModel->startLoading(); @@ -375,7 +370,6 @@ void WhatsHotWidget::infoSystemFinished( QString target ) { Q_UNUSED( target ); - m_loadingSpinner->fadeOut(); } @@ -437,6 +431,7 @@ WhatsHotWidget::leftCrumbIndexChanged( QModelIndex index ) criteria.insert( "chart_expires", QString::number( chartExpires ) ); /// Remember to lower the source! criteria.insert( "chart_source", index.data().toString().toLower() ); + Tomahawk::InfoSystem::InfoRequestData requestData; QVariantMap customData; customData.insert( "whatshot_side", "left" ); @@ -472,12 +467,12 @@ WhatsHotWidget::changeEvent( QEvent* e ) QStandardItem* -WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data ) +WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString& label, const QVariant& data ) { Q_UNUSED( parentItem ); -// tDebug( LOGVERBOSE ) << "WhatsHot: parsing " << label; +// tDebug( LOGVERBOSE ) << "WhatsHot: parsing" << label; - QStandardItem *sourceItem = new QStandardItem( label ); + QStandardItem* sourceItem = new QStandardItem( label ); if ( data.canConvert< QList< Tomahawk::InfoSystem::InfoStringHash > >() ) { @@ -485,7 +480,7 @@ WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString &label, cons foreach ( Tomahawk::InfoSystem::InfoStringHash chart, charts ) { - QStandardItem *childItem= new QStandardItem( chart[ "label" ] ); + QStandardItem* childItem= new QStandardItem( chart[ "label" ] ); childItem->setData( chart[ "id" ], Breadcrumb::ChartIdRole ); childItem->setData( chart[ "expires" ], Breadcrumb::ChartExpireRole ); @@ -505,7 +500,7 @@ WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString &label, cons QVariantMap dataMap = data.toMap(); foreach ( const QString childLabel,dataMap.keys() ) { - QStandardItem *childItem = parseNode( sourceItem, childLabel, dataMap[ childLabel ] ); + QStandardItem* childItem = parseNode( sourceItem, childLabel, dataMap[ childLabel ] ); sourceItem->appendRow( childItem ); } } @@ -515,13 +510,13 @@ WhatsHotWidget::parseNode( QStandardItem* parentItem, const QString &label, cons foreach ( const QVariant value, dataList ) { - QStandardItem *childItem = new QStandardItem( value.toString() ); + QStandardItem* childItem = new QStandardItem( value.toString() ); sourceItem->appendRow( childItem ); } } else { - QStandardItem *childItem = new QStandardItem( data.toString() ); + QStandardItem* childItem = new QStandardItem( data.toString() ); sourceItem->appendRow( childItem ); } return sourceItem; @@ -565,7 +560,7 @@ WhatsHotWidget::chartArtistsLoaded( ChartDataLoader* loader, const QList< artist if ( m_artistModels.contains( chartId ) ) { - foreach( const artist_ptr& artist, artists ) + foreach ( const artist_ptr& artist, artists ) { m_artistModels[ chartId ]->addArtists( artist ); m_artistModels[ chartId ]->finishLoading(); diff --git a/src/libtomahawk/widgets/WhatsHotWidget.h b/src/libtomahawk/widgets/WhatsHotWidget.h index 3c6c6e197e..d39e30b427 100644 --- a/src/libtomahawk/widgets/WhatsHotWidget.h +++ b/src/libtomahawk/widgets/WhatsHotWidget.h @@ -97,9 +97,9 @@ private slots: void setLeftViewAlbums( PlayableModel* albumModel ); void setLeftViewTracks( PlaylistModel* trackModel ); - QStandardItem* parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data ); + QStandardItem* parseNode( QStandardItem* parentItem, const QString& label, const QVariant& data ); - Ui::WhatsHotWidget *ui; + Ui::WhatsHotWidget* ui; Tomahawk::playlistinterface_ptr m_playlistInterface; QStandardItemModel* m_crumbModelLeft; @@ -119,7 +119,7 @@ private slots: QSet< QString > m_queuedFetches; QTimer* m_timer; QMap m_currentVIds; - AnimatedSpinner* m_loadingSpinner; + friend class Tomahawk::ChartsPlaylistInterface; }; From 453c0ab0c45bb94be36d0ab75af9808af5969c73 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:06:37 +0100 Subject: [PATCH 179/310] * Don't pre-initialize the charts widget. This will require some more changes in WhatsHotWidget - to be discussed with Hugo. --- src/libtomahawk/ViewManager.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index 9356e86972..c9619dabd5 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -74,7 +74,7 @@ ViewManager::ViewManager( QObject* parent ) : QObject( parent ) , m_widget( new QWidget() ) , m_welcomeWidget( new WelcomeWidget() ) - , m_whatsHotWidget( new WhatsHotWidget() ) + , m_whatsHotWidget( 0 ) , m_newReleasesWidget( new NewReleasesWidget() ) , m_recentPlaysWidget( 0 ) , m_currentPage( 0 ) @@ -109,7 +109,6 @@ ViewManager::ViewManager( QObject* parent ) connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) ); connect( m_infobar, SIGNAL( filterTextChanged( QString ) ), SLOT( setFilter( QString ) ) ); - connect( this, SIGNAL( tomahawkLoaded() ), m_whatsHotWidget, SLOT( fetchData() ) ); connect( this, SIGNAL( tomahawkLoaded() ), m_newReleasesWidget, SLOT( fetchData() ) ); connect( this, SIGNAL( tomahawkLoaded() ), m_welcomeWidget, SLOT( loadData() ) ); @@ -376,6 +375,12 @@ ViewManager::showWelcomePage() Tomahawk::ViewPage* ViewManager::showWhatsHotPage() { + if ( !m_whatsHotWidget ) + { + m_whatsHotWidget = new WhatsHotWidget(); + m_whatsHotWidget->fetchData(); + } + return show( m_whatsHotWidget ); } From c984e796691e5f0fde8f3eaf936f0dfd5fe136ab Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:14:24 +0100 Subject: [PATCH 180/310] * Updated AUTHORS file. --- AUTHORS | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/AUTHORS b/AUTHORS index 2ef2e1853d..996bc73adc 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,15 +4,17 @@ Tomahawk is primarily authored by: Contributors include: -* Leo Franchi +* Leo Franchi * Dominik Schmidt -* Jeff Mitchell -* J Herskowitz +* Jeff Mitchell +* J Herskowitz * Alejandro Wainzinger -* Hugo Lindström +* Hugo Lindström * Teo Mrnjavac +* Michael Zanetti +* Christopher Reichert Thanks to: * Harald Sitter -* Steve Robertson +* Syd Lawrence From 23fe27ed5e3b92751ccec2a203fddf0940b06b3d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:17:22 +0100 Subject: [PATCH 181/310] * Updated ChangeLog. --- ChangeLog | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec1e635325..ef845c10a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,7 +5,8 @@ Version 0.6.0: biographies. * New AudioControl logic - only enable Prev/Skip buttons if available. * Added more options to right-click/context menus. - * Resolver source icon in Audiocontrols now supports being a link-back URL to original source. + * Resolver source icon in Audiocontrols now supports being a link-back URL + to original source. * Make friends' currently playing song (in sidebar) clickable. * Improve MusicBrainz plugin to use normalized artist names and avoid duplicate tracks. @@ -23,10 +24,10 @@ Version 0.6.0: * 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. + * Added HotNewHipHop as available chart. + * Added iTunes as available source for New Releases. * Updates and additions to translations including: Japanese, Bulgarian, - Finish, Russian, Arabic, Chinese, Swedish and more. + Finnish, Russian, Arabic, Chinese, Swedish, Czech and more. * (Linux) Allow disabling of playback notifications. Version 0.5.5: From 63049af4c4cfc9d13323a745f7986ab5b5764f32 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:19:25 +0100 Subject: [PATCH 182/310] * Fixed english source translation. --- lang/tomahawk_en.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 7fd46c18be..0142b8965f 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -3475,7 +3475,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - Copyright 2010 - 2013 {2010 ?} + Copyright 2010 - 2013 From 7746070433a755d6124675d7a1e1e95970817e34 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:20:13 +0100 Subject: [PATCH 183/310] * Fixed pt_BR translation. --- lang/tomahawk_pt_BR.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index b89cfc5f96..6e47b9d3fb 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -1123,7 +1123,7 @@ se conecte e faça o stream de você? A playlist by %1, created %2. - Uma lista de reprodução de %1, criada %2. {1,?} + Uma lista de reprodução de %1, criada %2. From de0684d42a0043d3eea4a5843811506bac03d2dc Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:21:48 +0100 Subject: [PATCH 184/310] * Updated authors in about dialog. --- src/TomahawkWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index dfb710951b..ff5084467d 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -1194,7 +1194,7 @@ TomahawkWindow::showAboutTomahawk() const QString thanksto( tr( "Thanks to:" ) ); desc = QString( "%1
Christian Muehlhaeuser <muesli@tomahawk-player.org>

" - "%2 Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Syd Lawrence, Michael Zanetti, Harald Sitter, Steve Robertson, Teo Mrnjavac" ) + "%2 Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Syd Lawrence, Michael Zanetti, Teo Mrnjavac, Christopher Reichert, Harald Sitter" ) .arg( copyright ) .arg( thanksto ); From f8394a2ef24123a9f15af26eb509b89b76c366e8 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Wed, 9 Jan 2013 07:25:50 +0100 Subject: [PATCH 185/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 34 +++++++++++++++++----------------- lang/tomahawk_bg.ts | 34 +++++++++++++++++----------------- lang/tomahawk_bn_IN.ts | 34 +++++++++++++++++----------------- lang/tomahawk_ca.ts | 34 +++++++++++++++++----------------- lang/tomahawk_cs.ts | 34 +++++++++++++++++----------------- lang/tomahawk_de.ts | 34 +++++++++++++++++----------------- lang/tomahawk_el.ts | 34 +++++++++++++++++----------------- lang/tomahawk_en.ts | 36 ++++++++++++++++++------------------ lang/tomahawk_es.ts | 34 +++++++++++++++++----------------- lang/tomahawk_fi.ts | 34 +++++++++++++++++----------------- lang/tomahawk_fr.ts | 34 +++++++++++++++++----------------- lang/tomahawk_gl.ts | 34 +++++++++++++++++----------------- lang/tomahawk_hi_IN.ts | 34 +++++++++++++++++----------------- lang/tomahawk_hu.ts | 34 +++++++++++++++++----------------- lang/tomahawk_it.ts | 34 +++++++++++++++++----------------- lang/tomahawk_ja.ts | 34 +++++++++++++++++----------------- lang/tomahawk_lt.ts | 34 +++++++++++++++++----------------- lang/tomahawk_pl.ts | 34 +++++++++++++++++----------------- lang/tomahawk_pt_BR.ts | 36 ++++++++++++++++++------------------ lang/tomahawk_ru.ts | 34 +++++++++++++++++----------------- lang/tomahawk_sv.ts | 34 +++++++++++++++++----------------- lang/tomahawk_tr.ts | 34 +++++++++++++++++----------------- lang/tomahawk_zh_CN.ts | 34 +++++++++++++++++----------------- lang/tomahawk_zh_TW.ts | 34 +++++++++++++++++----------------- 24 files changed, 410 insertions(+), 410 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index c18ca02413..785426ec74 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -261,12 +261,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -281,7 +281,7 @@ connect and stream from you? نعتذر، لم نستطيع إيجاد أغاني أخرى لهذا الألبوم!
- + Other Albums by %1 ألبومات أخرى ل%1 @@ -303,32 +303,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits الأكثر شهرة - + Related Artists الفنانين ذات الذوق القريب - + Albums ألبومات - + Sorry, we could not find any albums for this artist! نعتذر, لم نستطيع إيجاد ألبومات أخرى لهذا الفنان! - + Sorry, we could not find any related artists! نعتذر، لم نستطيع إيجاد فنانين! - + Sorry, we could not find any top hits for this artist! نعتذر، لم نستطيع إيجاد أغاني مشهورة جدا لهذا الفنان! @@ -3675,42 +3675,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. بعد إجراء مسح مجموعة أغانيك الخاصة ستجد أغانيك هنا. - + This collection is empty. هذه المجموعة فارغة. - + SuperCollection سوبر كولكشن - + Combined libraries of all your online friends مكتبات مجمعة لكل اصحابك المتصلين - + Recently Played Tracks الأغاني التي إستمعت إليها مؤخرا - + Recently played tracks from all your friends جميع الأغاني التي استمع إليها أصدقائك مؤخرا - + Sorry, we could not find any recent plays! نعتذر، لم نستطيع إيجاد أغاني مسموعة مؤخرا! diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index bb1ffd250e..25c4dee72c 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist Списък на песни за изпълняване - + Other Albums Други албуми @@ -280,7 +280,7 @@ connect and stream from you? Съжалявам, но не откривам нито една песен за този артист!
- + Other Albums by %1 Други албуми от %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Най-известни изпълнения - + Related Artists Изпълнители с подобно звучене - + Albums Албуми - + Sorry, we could not find any albums for this artist! Съжалявам, но не откривам нито един албум за този артист! - + Sorry, we could not find any related artists! Съжалявам, но не откривам нито един подобен на този артист! - + Sorry, we could not find any top hits for this artist! Съжалявам, но не откривам нито една хитова песен на този артист! @@ -3693,43 +3693,43 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! Списъкът е празен! - + After you have scanned your music collection you will find your tracks right here. След като бъде сканирана колекцията ти, ще откриеш твоите песни точно тук. - + This collection is empty. Празна колекция. - + SuperCollection Обща колекция /Сборен излед от локалните и наличните в колекциите на приятелите ти/ - + Combined libraries of all your online friends Обща колекция с всичките ми приятели на линия - + Recently Played Tracks Наскоро изпълени песни - + Recently played tracks from all your friends Наскоро изпълнени песни от всичките ти приятели - + Sorry, we could not find any recent plays! Съжалявам, но не откривам скорошни списъци diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 5e2c86d721..cad839415c 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you?
- + Other Albums by %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits - + Related Artists - + Albums - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection - + Combined libraries of all your online friends - + Recently Played Tracks - + Recently played tracks from all your friends - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 97e73ed589..9de03308fc 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you?
- + Other Albums by %1 Altres Àlbums de %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Grans Èxits - + Related Artists Artistes Relacionats - + Albums Àlbums - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3673,42 +3673,42 @@ Podeu reenviar un missatge de sincronisme en qualsevol moment simplement enviant ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection SuperCol·lecció - + Combined libraries of all your online friends Biblioteques combinades de tots els amis en línia - + Recently Played Tracks Cançons Escoltades Recentment - + Recently played tracks from all your friends Cançons escoltades recentment pels amics - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 66b54bee38..2d385a1665 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -261,12 +261,12 @@ se s vámi spojil? AlbumInfoWidget - + Tracklist Seznam skladeb - + Other Albums Jiná alba @@ -281,7 +281,7 @@ se s vámi spojil? Promiňte, nepodařilo se najít žádné skladby pro toto album!
- + Other Albums by %1 Jiná alba %1 @@ -303,32 +303,32 @@ se s vámi spojil? ArtistInfoWidget - + Top Hits Nejlepší písně - + Related Artists Podobní umělci - + Albums Alba - + Sorry, we could not find any albums for this artist! Promiňte, nepodařilo se najít žádná alba tohoto umělce! - + Sorry, we could not find any related artists! Promiňte, nepodařilo se najít žádné podobné umělce! - + Sorry, we could not find any top hits for this artist! Sorry, wir konnten keine Lieder für diesen Künstler finden! @@ -3673,42 +3673,42 @@ Kdykoli můžete odeslat novou seřizovací zprávu. ViewManager - + This playlist is empty! Tento seznam skladeb je prázdný! - + After you have scanned your music collection you will find your tracks right here. Poté co byla prohledána vaše hudební sbírka, najdete své skladby přesně zde. - + This collection is empty. Tato sbírka je prázdná. - + SuperCollection Supersbírka - + Combined libraries of all your online friends Spojená sbírka všech vašich přátel - + Recently Played Tracks Nedávno poslouchané skladby - + Recently played tracks from all your friends Naposledy poslouchané skladby všech vašich přátel - + Sorry, we could not find any recent plays! Promiňte, ale nepodařilo se najít žádné nedávno poslouchané skladby! diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 43889c4791..b64fe67ce8 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -261,12 +261,12 @@ erlauben sich mit dir zu verbinden? AlbumInfoWidget - + Tracklist Tracklist - + Other Albums Andere Alben @@ -281,7 +281,7 @@ erlauben sich mit dir zu verbinden? Sorry, wir konnten keine anderen Lieder für dieses Album finden!
- + Other Albums by %1 Andere Alben von %1 @@ -303,32 +303,32 @@ erlauben sich mit dir zu verbinden? ArtistInfoWidget - + Top Hits Top Hits - + Related Artists Ähnliche Künstler - + Albums Alben - + Sorry, we could not find any albums for this artist! Sorry, wir konnten keine Alben für diesen Künstler finden! - + Sorry, we could not find any related artists! Sorry, wir konnten keine ähnlichen Künstler finden! - + Sorry, we could not find any top hits for this artist! Sorry, wir konnten keine Lieder für diesen Künstler finden! @@ -3671,42 +3671,42 @@ Du kannst jederzeit eine neue Sync-Nachricht abschicken. ViewManager - + This playlist is empty! Diese Playlist ist leer! - + After you have scanned your music collection you will find your tracks right here. Nachdem du deine Musik Sammlung gescannt hast, findest du all deine Lieder genau hier. - + This collection is empty. Diese Sammlung ist leer. - + SuperCollection SuperCollection - + Combined libraries of all your online friends Kombinierte Sammlung all deiner Freunde - + Recently Played Tracks Zuletzt gehörte Lieder - + Recently played tracks from all your friends Zuletzt gehörte Lieder all deiner Freunde - + Sorry, we could not find any recent plays! Es konnten keine zuletzt gehörten Songs gefunden werden! diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 8ec26200a5..10320f41d5 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you? - + Other Albums by %1 Άλλα Άλμπουμ από %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits - + Related Artists Παρόμοιοι Καλλιτέχνες - + Albums Άλμπουμ - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3667,42 +3667,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection ΥπερΣυλλογή - + Combined libraries of all your online friends - + Recently Played Tracks Τελευταίες Αναπαραγωγές Κομματιών - + Recently played tracks from all your friends Τελευταίες αναπαραγωγές από όλους τους φίλους σας - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 0142b8965f..52ef8e964d 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -261,12 +261,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist Tracklist - + Other Albums Other Albums @@ -281,7 +281,7 @@ connect and stream from you? Sorry, we could not find any tracks for this album! - + Other Albums by %1 Other Albums by %1 @@ -303,32 +303,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Top Hits - + Related Artists Related Artists - + Albums Albums - + Sorry, we could not find any albums for this artist! Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! Sorry, we could not find any top hits for this artist! @@ -3475,7 +3475,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - Copyright 2010 - 2013 + Copyright 2010 - 2013 {2010 ?} @@ -3677,42 +3677,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. After you have scanned your music collection you will find your tracks right here. - + This collection is empty. This collection is empty. - + SuperCollection SuperCollection - + Combined libraries of all your online friends Combined libraries of all your online friends - + Recently Played Tracks Recently Played Tracks - + Recently played tracks from all your friends Recently played tracks from all your friends - + Sorry, we could not find any recent plays! Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index e8e9193d39..05d1f4d0c4 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -261,12 +261,12 @@ conectarse a usted y transmitir música? AlbumInfoWidget - + Tracklist Pistas - + Other Albums Otros álbumes @@ -281,7 +281,7 @@ conectarse a usted y transmitir música? No se encontraron pistas de este álbum - + Other Albums by %1 Otros álbumes de %1 @@ -303,32 +303,32 @@ conectarse a usted y transmitir música? ArtistInfoWidget - + Top Hits Grandes éxitos - + Related Artists Artistas relacionados - + Albums Álbumes - + Sorry, we could not find any albums for this artist! No se encontraron álbumes de este artista - + Sorry, we could not find any related artists! No se encontraron artistas relacionados - + Sorry, we could not find any top hits for this artist! No se encontraron éxitos de este artista @@ -3677,42 +3677,42 @@ Puede reenviar el mensaje de sincronización en cualquier momento simplemente en ViewManager - + This playlist is empty! Lista de reproducción vacía - + After you have scanned your music collection you will find your tracks right here. Después de escanear su colección de música encontrará sus pistas aquí - + This collection is empty. Colección vacía - + SuperCollection Supercolección - + Combined libraries of all your online friends Bibliotecas combinadas de todos tus amigos - + Recently Played Tracks Pistas reproducidas recientemente - + Recently played tracks from all your friends Temas escuchados recientemente por mis amigos - + Sorry, we could not find any recent plays! No hay reproducciones recientes diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 1a1c3cad21..8efe39b712 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -261,12 +261,12 @@ yhdistää ja toistaa sinulta virtaa? AlbumInfoWidget - + Tracklist Kappalelista - + Other Albums Muita albumeita @@ -281,7 +281,7 @@ yhdistää ja toistaa sinulta virtaa? Valitettavasti emme löytäneet mitään tämän albumin kappaleita! - + Other Albums by %1 Muita artistin %1 levyjä @@ -303,32 +303,32 @@ yhdistää ja toistaa sinulta virtaa? ArtistInfoWidget - + Top Hits Parhaat hitit - + Related Artists Samankaltaisia artisteja - + Albums Albumit - + Sorry, we could not find any albums for this artist! Valitettavasti emme löytänet yhtään tämän artistin albumia! - + Sorry, we could not find any related artists! Valitettavasti emme löytäneet yhtään samankaltaista artistia! - + Sorry, we could not find any top hits for this artist! Valitettavasti emme löytäneet yhtään tämän artistin parhaista hiteistä! @@ -3680,42 +3680,42 @@ Voit lähettää synkronointiviestin uudelleen millä hetkellä hyvänsä lähet ViewManager - + This playlist is empty! Tämä soittolista on tyhjä! - + After you have scanned your music collection you will find your tracks right here. Löydät kappaleesi tästä, kunhan musiikkikokoelmasi haku on valmistunut. - + This collection is empty. Tämä kokoelma on tyhjä. - + SuperCollection Superkokoelma - + Combined libraries of all your online friends Kaikkien verkkokaveriesi yhdistetyt kirjastot - + Recently Played Tracks Viime aikoina kuunnellut kappaleet - + Recently played tracks from all your friends Kaikkien kaveriesi viime aikoina kuuntelemat kappaleet - + Sorry, we could not find any recent plays! Valitettavasti emme löytäneet yhtään viimeaikaisia soittoja! diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 59a485ddf7..356b32c461 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -261,12 +261,12 @@ de se connecter et streamer de vous? AlbumInfoWidget - + Tracklist Liste des pistes - + Other Albums Autres Albums @@ -281,7 +281,7 @@ de se connecter et streamer de vous? Désolé, nous n'avons pu trouver aucune piste pour cet album ! - + Other Albums by %1 Autres albums de %1 @@ -303,32 +303,32 @@ de se connecter et streamer de vous? ArtistInfoWidget - + Top Hits Top Hits - + Related Artists Artistes similaires - + Albums Albums - + Sorry, we could not find any albums for this artist! Désolé, on a pas pu trouver aucun album pour cet artiste! - + Sorry, we could not find any related artists! Désolé, on a rien trouvé par rapport a cet artite! - + Sorry, we could not find any top hits for this artist! Désolé, on a pas pu trouver aucun top hit pour cet artiste! @@ -3674,42 +3674,42 @@ Vous pouvez envoyer un message de synchronisation quand vous le souhaitez en env ViewManager - + This playlist is empty! Cette liste de lecture est vide! - + After you have scanned your music collection you will find your tracks right here. Après avoir scanné votre collection musicale, vous trouverez tous vos titres ici. - + This collection is empty. La collection est vide. - + SuperCollection SuperCollection - + Combined libraries of all your online friends Collections regroupant toutes celles de vos amis en ligne - + Recently Played Tracks Derniers titres joués - + Recently played tracks from all your friends Derniers titres joués par vos amis - + Sorry, we could not find any recent plays! Désolé, aucune piste récemment jouée n'a pu être trouvée ! diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index d16b9dbf47..5d0defb78e 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist Lista de reprodución - + Other Albums Outros álbums @@ -280,7 +280,7 @@ connect and stream from you? Non se puido atopar ningunha outra pista para este álbum! - + Other Albums by %1 Outros álbums de %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Maiores éxitos - + Related Artists Artistas relacionados - + Albums Álbums - + Sorry, we could not find any albums for this artist! Non se atopou ningún álbum para este artista! - + Sorry, we could not find any related artists! Non se atopou ningún artista relacionado! - + Sorry, we could not find any top hits for this artist! Non se atopou ningún éxito deste artista! @@ -3675,42 +3675,42 @@ Podes reenviar e sincronizar as mensaxes en calquera momento simplemente enviand ViewManager - + This playlist is empty! Esta lista de reprodución está baleira! - + After you have scanned your music collection you will find your tracks right here. Cando teñas a colección de música escaneada as pistas aparecerán aquí. - + This collection is empty. Esta colección está baleira. - + SuperCollection Supercolección - + Combined libraries of all your online friends Bibliotecas combinadas de todas as túas amizades - + Recently Played Tracks Pistas recentemente reproducidas - + Recently played tracks from all your friends Pistas escoitadas recentemente polas túas amizades - + Sorry, we could not find any recent plays! Non se atoparan reproducións recentes! diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index b72fa3ebb3..7b55853957 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you? - + Other Albums by %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits - + Related Artists - + Albums - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection - + Combined libraries of all your online friends - + Recently Played Tracks - + Recently played tracks from all your friends - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 4df9005630..b10cc88107 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist Zeneszám lista - + Other Albums Egyéb albumok @@ -280,7 +280,7 @@ connect and stream from you? - + Other Albums by %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Top Hits - + Related Artists Kapcsolódó előadók - + Albums Albumok - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! Ez a lejátszólista üres! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. Ez a kollekció üres. - + SuperCollection - + Combined libraries of all your online friends - + Recently Played Tracks Mostanában játszott zeneszámok - + Recently played tracks from all your friends - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 772e0c13c6..554c97f1ee 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you? Ci dispiace, ma non abbiamo trovato nessuna traccia di questo album! - + Other Albums by %1 Altri album di %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Top Hits - + Related Artists Artisti simili - + Albums Album - + Sorry, we could not find any albums for this artist! Ci dispiace, ma non abbiamo trovato nessun album di questo artista! - + Sorry, we could not find any related artists! Siamo spiacenti, non è stato possibile trovare artisti simili! - + Sorry, we could not find any top hits for this artist! Ci dispiace, ma non abbiamo trovato alcun risultato top per l'artista! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. Dopo aver analizzato la tua collezione troverai le tracce qui. - + This collection is empty. La collezione è vuota. - + SuperCollection Supercollezione - + Combined libraries of all your online friends Collezioni combinate di tutti i tuoi amici online - + Recently Played Tracks Tracce ascoltate di recente - + Recently played tracks from all your friends Tracce ascoltate di recente dai tuoi amici - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 388b4ea6ab..dd05acf2d3 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist トラックリスト - + Other Albums 他のアルバム @@ -280,7 +280,7 @@ connect and stream from you? このアルバムの曲は見つかりませんでした。 - + Other Albums by %1 %1の他のアルバム @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits 大ヒット曲 - + Related Artists 似たアーティスト - + Albums アルバム - + Sorry, we could not find any albums for this artist! このアーティストのアルバムは見つかりませんでした。 - + Sorry, we could not find any related artists! 関連アーティストは見つかりませんでした。 - + Sorry, we could not find any top hits for this artist! このアーティストの大ヒット曲は見つかりませんでした。 @@ -3677,42 +3677,42 @@ Twitterを使っている友達にTomahawkを接続したいなら、ツイー ViewManager - + This playlist is empty! このプレイリストには何も入っていません。 - + After you have scanned your music collection you will find your tracks right here. コレクションのスキャンが完了したら、トラックはここに表示されます。 - + This collection is empty. このコレクションには何も入っていません。 - + SuperCollection スーパーコレクション - + Combined libraries of all your online friends オンラインの友達全員のライブラリ - + Recently Played Tracks 最近再生したトラック - + Recently played tracks from all your friends 友達の最近再生したトラック - + Sorry, we could not find any recent plays! 最近の再生した項目が見つかりませんでした。 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 690fd9fc15..074e6bb2e0 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you? Atsiprašome, neradome jokių takelių iš šio albumo! - + Other Albums by %1 Kiti %1 albumai @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits - + Related Artists Susiję atlikėjai - + Albums Albumai - + Sorry, we could not find any albums for this artist! Atsiprašome, neradome jokių šio atlikėjo albumų! - + Sorry, we could not find any related artists! Atsiprašome, neradome jokių susijusių atlikėjų! - + Sorry, we could not find any top hits for this artist! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. Peržvelgus Jūsų muzikos kolekciją, savo takelius galėsite rasti čia akimirksniu. - + This collection is empty. Ši kolekcija yra tuščia. - + SuperCollection Super kolekcija - + Combined libraries of all your online friends Jungtinė visų Jūsų prisijungusių draugų kolekcija - + Recently Played Tracks Neseniai groti takeliai - + Recently played tracks from all your friends Visų Jūsų draugų neseniai groti takeliai - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 838cb14370..e40e38617f 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -261,12 +261,12 @@ połączyć się i strumieniować od ciebie? AlbumInfoWidget - + Tracklist - + Other Albums @@ -281,7 +281,7 @@ połączyć się i strumieniować od ciebie? - + Other Albums by %1 Inne albumy %1 @@ -303,32 +303,32 @@ połączyć się i strumieniować od ciebie? ArtistInfoWidget - + Top Hits Hity na Topie - + Related Artists Powiązani artyści - + Albums Albumy - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3674,42 +3674,42 @@ Zawsze możesz ponownie wysłać wiadomość synchronizacyjną - po prostu wyśl ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection SuperKolekcja - + Combined libraries of all your online friends Połączone biblioteki wszystkich twoich znajomych online - + Recently Played Tracks Ostatnio odtwarzane utwory - + Recently played tracks from all your friends Utwory ostatnio odtwarzane przez twoich znajomych - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 6e47b9d3fb..5eb206dda9 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -261,12 +261,12 @@ se conecte e faça o stream de você? AlbumInfoWidget - + Tracklist Lista de faixas - + Other Albums Outros álbuns @@ -281,7 +281,7 @@ se conecte e faça o stream de você? Desculpe, mas não conseguimos encontrar outras faixas para este álbum! - + Other Albums by %1 Outros álbuns de %1 @@ -303,32 +303,32 @@ se conecte e faça o stream de você? ArtistInfoWidget - + Top Hits Mais Tocadas - + Related Artists Artistas Relacionados - + Albums Álbuns - + Sorry, we could not find any albums for this artist! Desculpe, mas não conseguimos encontrar outros álbuns para este artista! - + Sorry, we could not find any related artists! Desculpe, mas não conseguimos encontrar outros artistas relacionados a este! - + Sorry, we could not find any top hits for this artist! Desculpe, mas não conseguimos encontrar outras faixas mais tocadas deste artista! @@ -1123,7 +1123,7 @@ se conecte e faça o stream de você? A playlist by %1, created %2. - Uma lista de reprodução de %1, criada %2. + Uma lista de reprodução de %1, criada %2. {1,?} @@ -3674,42 +3674,42 @@ Você pode enviar uma outra mensagem de sincronia a qualquer momento simplesment ViewManager - + This playlist is empty! Essa lista de reprodução está vazia! - + After you have scanned your music collection you will find your tracks right here. Depois de escanear sua biblioteca de músicas as faixas irão aparecer aqui. - + This collection is empty. Esta coleção esta vazia. - + SuperCollection SuperColeção - + Combined libraries of all your online friends Bibliotecas combinadas de todos os seus amigos online - + Recently Played Tracks Faixas Reproduzidas Recentemente - + Recently played tracks from all your friends Faixas reproduzidas recentemente por todos os seus amigos - + Sorry, we could not find any recent plays! Desculpe, não foi possível encontrar reproduções recentes! diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 26e38532eb..b196af2e56 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -265,12 +265,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist Треклист - + Other Albums Другие Альбомы @@ -285,7 +285,7 @@ connect and stream from you? К сожалению, мы не смогли найти никаких треков для этого альбома! - + Other Albums by %1 Другие альбомы %1 @@ -307,32 +307,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits Хиты - + Related Artists Похожие исполнители - + Albums Альбомы - + Sorry, we could not find any albums for this artist! К сожалению, мы не смогли найти никаких альбомов этого исполнителя! - + Sorry, we could not find any related artists! К сожалению, мы не смогли найти никаких исполнители! - + Sorry, we could not find any top hits for this artist! К сожалению, мы не смогли найти никаких хитов этого исполнителя! @@ -3674,42 +3674,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! Плейлист пуст. - + After you have scanned your music collection you will find your tracks right here. После сканирования вашей музыкальной коллекции вы найдете треки прямо здесь. - + This collection is empty. Коллекция пуста - + SuperCollection Общая Коллекция - + Combined libraries of all your online friends Комбинированная библиотека всех ваших друзей онлайн - + Recently Played Tracks Последние Воспроизводимые Песни - + Recently played tracks from all your friends Последние воспроизводимые песни все ваших друзей - + Sorry, we could not find any recent plays! К сожалению, мы не смогли найти никаких воспроизвидений песен! diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 47969e6e37..de3aea74dd 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -261,12 +261,12 @@ ansluta och strömma från dig? AlbumInfoWidget - + Tracklist Spårlista - + Other Albums Andra album @@ -281,7 +281,7 @@ ansluta och strömma från dig? Tyvärr! Det gick inte hitta några spår från detta albumet! - + Other Albums by %1 Andra album av %1 @@ -303,32 +303,32 @@ ansluta och strömma från dig? ArtistInfoWidget - + Top Hits Största hits - + Related Artists Relaterade artister - + Albums Album - + Sorry, we could not find any albums for this artist! Tyvärr! Det gick inte hitta några album av denna artisten! - + Sorry, we could not find any related artists! Tyvärr! Det gick inte hitta några relaterade artister! - + Sorry, we could not find any top hits for this artist! Tyvärr! Det gick inte hitta några tophits av denna artisten @@ -3669,42 +3669,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! Spellistan är tom! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection Superkollektion - + Combined libraries of all your online friends Kombinerat bibliotek av alla dina vänner online - + Recently Played Tracks Senast spelade spår - + Recently played tracks from all your friends Alla dina vänners senast spelade spår - + Sorry, we could not find any recent plays! Tyvärr! Det gick inte hitta några nyligen spelade spår diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 4c9f595480..852809b399 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you? - + Other Albums by %1 Diğer %1 Albümleri @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits En Çok Dinlenenler - + Related Artists Benzer Sanatçılar - + Albums Albümler - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection - + Combined libraries of all your online friends - + Recently Played Tracks - + Recently played tracks from all your friends - + Sorry, we could not find any recent plays! diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 84eb991bc7..7ac2d5681d 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums 其他专辑 @@ -280,7 +280,7 @@ connect and stream from you? 抱歉,没有找到这张专辑的其他歌曲! - + Other Albums by %1 %1 的其他专辑 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits 最热歌曲 - + Related Artists 相关艺人 - + Albums 专辑 - + Sorry, we could not find any albums for this artist! 抱歉,未找到该艺术家的其他专辑! - + Sorry, we could not find any related artists! 抱歉,没有找到相关的艺术家! - + Sorry, we could not find any top hits for this artist! 抱歉,没有找到该艺术家的任何人气歌曲! @@ -3675,42 +3675,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! 当前播放列表为空! - + After you have scanned your music collection you will find your tracks right here. 在扫描音乐收藏后你将可以在这里找到你的音乐。 - + This collection is empty. 收藏为空。 - + SuperCollection 超级收藏 - + Combined libraries of all your online friends 当前在线的朋友的音乐库集合 - + Recently Played Tracks 最近播放歌曲 - + Recently played tracks from all your friends 所有朋友最近播放的歌曲 - + Sorry, we could not find any recent plays! 对不起,找不到任何最近播放项目! diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 6cafd037fb..fbbb3dbe89 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -260,12 +260,12 @@ connect and stream from you? AlbumInfoWidget - + Tracklist - + Other Albums @@ -280,7 +280,7 @@ connect and stream from you? - + Other Albums by %1 列出所有其他專輯,依 %1 @@ -302,32 +302,32 @@ connect and stream from you? ArtistInfoWidget - + Top Hits 流行精選 - + Related Artists 相關演出者 - + Albums 專輯 - + Sorry, we could not find any albums for this artist! - + Sorry, we could not find any related artists! - + Sorry, we could not find any top hits for this artist! @@ -3659,42 +3659,42 @@ You can re-send a sync message at any time simply by sending another tweet using ViewManager - + This playlist is empty! - + After you have scanned your music collection you will find your tracks right here. - + This collection is empty. - + SuperCollection 超級收藏 - + Combined libraries of all your online friends 聯合您所有線上朋友的音樂庫 - + Recently Played Tracks - + Recently played tracks from all your friends - + Sorry, we could not find any recent plays! From ed5bf55b16e560bd5863ca4d951159d8b1c97801 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:37:47 +0100 Subject: [PATCH 186/310] * Mark AccountFactoryWrapper.ui's as non-translatable. --- src/libtomahawk/accounts/AccountFactoryWrapper.ui | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/accounts/AccountFactoryWrapper.ui b/src/libtomahawk/accounts/AccountFactoryWrapper.ui index b7ba54df30..65a61ad71d 100644 --- a/src/libtomahawk/accounts/AccountFactoryWrapper.ui +++ b/src/libtomahawk/accounts/AccountFactoryWrapper.ui @@ -11,7 +11,7 @@ - Dialog + Dialog @@ -27,7 +27,7 @@ - Description goes here + Description goes here Qt::AlignCenter From cc9aa4c6f7c95ba76ade0c56e3e201068f5308b2 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 07:43:14 +0100 Subject: [PATCH 187/310] * Try to fix source translation again. --- lang/tomahawk_en.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 52ef8e964d..3d6cecea2d 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -3475,7 +3475,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - Copyright 2010 - 2013 {2010 ?} + Copyright 2010 - 2013 From 655a5d8ecf616e0fbd419c797169be8597c03363 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Wed, 9 Jan 2013 08:02:50 +0100 Subject: [PATCH 188/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 10 ---------- lang/tomahawk_bg.ts | 12 +----------- lang/tomahawk_bn_IN.ts | 10 ---------- lang/tomahawk_ca.ts | 12 +----------- lang/tomahawk_cs.ts | 12 +----------- lang/tomahawk_de.ts | 12 +----------- lang/tomahawk_el.ts | 10 ---------- lang/tomahawk_en.ts | 10 ---------- lang/tomahawk_es.ts | 12 +----------- lang/tomahawk_fi.ts | 12 +----------- lang/tomahawk_fr.ts | 12 +----------- lang/tomahawk_gl.ts | 12 +----------- lang/tomahawk_hi_IN.ts | 10 ---------- lang/tomahawk_hu.ts | 10 ---------- lang/tomahawk_it.ts | 12 +----------- lang/tomahawk_ja.ts | 12 +----------- lang/tomahawk_lt.ts | 12 +----------- lang/tomahawk_pl.ts | 12 +----------- lang/tomahawk_pt_BR.ts | 14 ++------------ lang/tomahawk_ru.ts | 12 +----------- lang/tomahawk_sv.ts | 12 +----------- lang/tomahawk_tr.ts | 10 ---------- lang/tomahawk_zh_CN.ts | 12 +----------- lang/tomahawk_zh_TW.ts | 10 ---------- 24 files changed, 17 insertions(+), 257 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 785426ec74..75de157307 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -29,16 +29,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - حوار - - - - Description goes here - أضف الوصف هنا - Add Account diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 25c4dee72c..10dc5b54c8 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - - - - - Description goes here - - Add Account @@ -3490,7 +3480,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + Всички права - запазени. 2010 - 2013 diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index cad839415c..97b42c8bf1 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - - - - - Description goes here - - Add Account diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 9de03308fc..6200b819da 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - Diàleg - - - - Description goes here - Aquí va la descripció - Add Account @@ -3471,7 +3461,7 @@ introduïu el PIN aquí: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 2d385a1665..c5d2e8f7e2 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -29,16 +29,6 @@ se s vámi spojil? AccountFactoryWrapper - - - Dialog - Dialog - - - - Description goes here - Popis zde - Add Account @@ -3472,7 +3462,7 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: Copyright 2010 - 2013 - + Autorské právo 2010 - 2013 diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index b64fe67ce8..0dddeb3c2e 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -29,16 +29,6 @@ erlauben sich mit dir zu verbinden? AccountFactoryWrapper - - - Dialog - Dialog - - - - Description goes here - Beschreibung hier - Add Account @@ -3470,7 +3460,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: Copyright 2010 - 2013 - + Copright 2010 - 2013 diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 10320f41d5..f1dbc4567b 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - Διάλογος - - - - Description goes here - Η περιγραφή πάει εδώ - Add Account diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 3d6cecea2d..7276015b65 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -29,16 +29,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - Dialog - - - - Description goes here - Description goes here - Add Account diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 05d1f4d0c4..76e2ca7221 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -29,16 +29,6 @@ conectarse a usted y transmitir música? AccountFactoryWrapper - - - Dialog - Diálogo - - - - Description goes here - Descripción - Add Account @@ -3475,7 +3465,7 @@ introduzca su número PIN aquí: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 8efe39b712..c11ba7a007 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -29,16 +29,6 @@ yhdistää ja toistaa sinulta virtaa? AccountFactoryWrapper - - - Dialog - Ikkuna - - - - Description goes here - Kuvaus tulee tähän - Add Account @@ -3478,7 +3468,7 @@ anna siellä näytetty PIN-koodi tähän: Copyright 2010 - 2013 - + Copyright 2010–2013 diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 356b32c461..d99a595134 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -29,16 +29,6 @@ de se connecter et streamer de vous? AccountFactoryWrapper - - - Dialog - Dialog - - - - Description goes here - ici la description - Add Account @@ -3472,7 +3462,7 @@ saisissez le numéro PIN ici : Copyright 2010 - 2013 - + Droit d'auteur 2010 - 2013 diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 5d0defb78e..ebab640e0b 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - Diálogo - - - - Description goes here - A descrición vaia aquí - Add Account @@ -3473,7 +3463,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 7b55853957..0426b9326c 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - - - - - Description goes here - - Add Account diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index b10cc88107..649dc0534e 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - - - - - Description goes here - - Add Account diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 554c97f1ee..485f93b564 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - Interfaccia di dialogo - - - - Description goes here - Descrizione va qui - Add Account @@ -3462,7 +3452,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index dd05acf2d3..32147d67a6 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - ダイアログ - - - - Description goes here - 内容 - Add Account @@ -3475,7 +3465,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 074e6bb2e0..08915318c7 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - - - - - Description goes here - Apibūdinimo vieta čia - Add Account @@ -3462,7 +3452,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + Autorinės teisės 2010 - 2013 diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index e40e38617f..831d544a35 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -29,16 +29,6 @@ połączyć się i strumieniować od ciebie? AccountFactoryWrapper - - - Dialog - - - - - Description goes here - Tutaj pojawi się opis - Add Account @@ -3472,7 +3462,7 @@ wprowadź pokazany numer PIN tutaj: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 5eb206dda9..122d437eee 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -29,16 +29,6 @@ se conecte e faça o stream de você? AccountFactoryWrapper - - - Dialog - Aba - - - - Description goes here - Descrição aqui - Add Account @@ -1123,7 +1113,7 @@ se conecte e faça o stream de você? A playlist by %1, created %2. - Uma lista de reprodução de %1, criada %2. {1,?} + Uma lista de reprodução de %1, criada %2. @@ -3472,7 +3462,7 @@ colocar o número PIN mostrado aqui: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index b196af2e56..504cdfd6f7 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -29,16 +29,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - Диалог - - - - Description goes here - Описание тут - Add Account @@ -3473,7 +3463,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + Авторское право 2010 - 2013 diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index de3aea74dd..e17b65bb1c 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -29,16 +29,6 @@ ansluta och strömma från dig? AccountFactoryWrapper - - - Dialog - Dialog - - - - Description goes here - Beskrivning här - Add Account @@ -3472,7 +3462,7 @@ anger du PIN-koden här: Copyright 2010 - 2013 - + Copyright 2010 - 2013 diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 852809b399..8301a3179b 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - İletişim Kutusu - - - - Description goes here - Buraya açıklama gelecek - Add Account diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 7ac2d5681d..1930041e60 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - 对话框 - - - - Description goes here - 注释于此处 - Add Account @@ -3473,7 +3463,7 @@ enter the displayed PIN number here: Copyright 2010 - 2013 - + 版权所有 2010 - 2013 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index fbbb3dbe89..24b299b1d7 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -28,16 +28,6 @@ connect and stream from you? AccountFactoryWrapper - - - Dialog - 對話框 - - - - Description goes here - 說明放在這裡 - Add Account From 04e813238411e469065ba651a00fd40efc3aeffb Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 9 Jan 2013 09:06:04 +0100 Subject: [PATCH 189/310] * Speed up item detection & size-hint calculation for huge collections. --- src/libtomahawk/Typedefs.h | 8 +++++ src/libtomahawk/playlist/PlayableModel.cpp | 31 +++++++++++++++---- src/libtomahawk/playlist/PlayableProxyModel.h | 2 +- src/libtomahawk/playlist/TreeItemDelegate.cpp | 16 +++++++--- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/src/libtomahawk/Typedefs.h b/src/libtomahawk/Typedefs.h index 3d5f22785e..fc0dc5c6b7 100644 --- a/src/libtomahawk/Typedefs.h +++ b/src/libtomahawk/Typedefs.h @@ -78,6 +78,14 @@ namespace Tomahawk InfoSystemMode, }; + enum ModelTypes + { + TypeArtist = 0, + TypeAlbum, + TypeQuery, + TypeResult + }; + class ExternalResolver; typedef boost::function ResolverFactoryFunc; diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index 65e82ce248..4ac5cbcb29 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -24,14 +24,15 @@ #include #include -#include "audio/AudioEngine.h" -#include "utils/TomahawkUtils.h" -#include "Source.h" - #include "Artist.h" #include "Album.h" #include "Pipeline.h" #include "PlayableItem.h" +#include "PlayableProxyModel.h" +#include "Source.h" +#include "Typedefs.h" +#include "audio/AudioEngine.h" +#include "utils/TomahawkUtils.h" #include "utils/Logger.h" using namespace Tomahawk; @@ -274,11 +275,29 @@ PlayableModel::data( const QModelIndex& index, int role ) const { return QVariant(); } - - if ( role == Qt::TextAlignmentRole ) + else if ( role == Qt::TextAlignmentRole ) { return QVariant( columnAlignment( index.column() ) ); } + else if ( role == PlayableProxyModel::TypeRole ) + { + if ( entry->result() ) + { + return Tomahawk::TypeResult; + } + else if ( entry->query() ) + { + return Tomahawk::TypeQuery; + } + else if ( entry->artist() ) + { + return Tomahawk::TypeArtist; + } + else if ( entry->album() ) + { + return Tomahawk::TypeAlbum; + } + } if ( !entry->query().isNull() ) { diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h index bb8b8924ab..c3a0d7be07 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -36,7 +36,7 @@ Q_OBJECT { Detailed = 0, Short = 1, ShortWithAvatars = 2, Large = 3, Collection = 4 }; enum PlayableProxyModelRole - { StyleRole = Qt::UserRole + 1 }; + { StyleRole = Qt::UserRole + 1, TypeRole }; explicit PlayableProxyModel ( QObject* parent = 0 ); virtual ~PlayableProxyModel() {} diff --git a/src/libtomahawk/playlist/TreeItemDelegate.cpp b/src/libtomahawk/playlist/TreeItemDelegate.cpp index 38db070b92..7b66cf6645 100644 --- a/src/libtomahawk/playlist/TreeItemDelegate.cpp +++ b/src/libtomahawk/playlist/TreeItemDelegate.cpp @@ -35,6 +35,7 @@ #include "PlayableItem.h" #include "TreeProxyModel.h" #include "TreeView.h" +#include "Typedefs.h" TreeItemDelegate::TreeItemDelegate( TreeView* parent, TreeProxyModel* proxy ) @@ -48,23 +49,28 @@ TreeItemDelegate::TreeItemDelegate( TreeView* parent, TreeProxyModel* proxy ) QSize TreeItemDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const { - QSize size = QStyledItemDelegate::sizeHint( option, index ); + QSize size; if ( index.isValid() ) { - PlayableItem* item = m_model->sourceModel()->itemFromIndex( m_model->mapToSource( index ) ); - if ( item ) + Tomahawk::ModelTypes type = (Tomahawk::ModelTypes)index.data( PlayableProxyModel::TypeRole ).toInt(); + switch ( type ) { - if ( item->album() ) + case Tomahawk::TypeAlbum: { size.setHeight( option.fontMetrics.height() * 3 ); return size; } - else if ( item->query() || item->result() ) + + case Tomahawk::TypeQuery: + case Tomahawk::TypeResult: { size.setHeight( option.fontMetrics.height() * 1.6 ); return size; } + + default: + break; } } From 93256dbea38058ff952584623e5b789afe175a51 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 9 Jan 2013 12:40:08 +0100 Subject: [PATCH 190/310] Fix spinner graphic being cut off on certain DPI values. --- src/widgets/AccountWidget.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/widgets/AccountWidget.cpp b/src/widgets/AccountWidget.cpp index 52ab839963..e205125466 100644 --- a/src/widgets/AccountWidget.cpp +++ b/src/widgets/AccountWidget.cpp @@ -71,20 +71,21 @@ AccountWidget::AccountWidget( QWidget* parent ) idContLayout->addWidget( m_idLabel ); m_spinnerWidget = new QWidget( idContainer ); - QSize spinnerSize = 16 > m_spinnerWidget->logicalDpiX() * .2 ? + QSize spinnerSize = 16 > TomahawkUtils::defaultFontHeight() ? QSize( 16, 16 ) : - QSize( m_spinnerWidget->logicalDpiX() * .15, - m_spinnerWidget->logicalDpiX() * .15 ); + QSize( TomahawkUtils::defaultFontHeight(), + TomahawkUtils::defaultFontHeight() ); m_spinnerWidget->setFixedSize( spinnerSize ); idContLayout->addWidget( m_spinnerWidget ); - m_spinnerWidget->setContentsMargins( 0, 0, 0, 0 ); - m_spinner = new AnimatedSpinner( m_spinnerWidget->size(), m_spinnerWidget ); + m_spinnerWidget->setContentsMargins( 0, 1, 0, 0 ); + m_spinner = new AnimatedSpinner( m_spinnerWidget->size() - QSize( 2, 2 ), m_spinnerWidget ); idContainer->setStyleSheet( QString( "QFrame {" "border: 1px solid #e9e9e9;" "border-radius: %1px;" "background: #e9e9e9;" "}" ).arg( idContainer->sizeHint().height() / 2 + 1 ) ); + idContainer->setMinimumHeight( spinnerSize.height() + 6 /*margins*/ ); m_statusToggle = new SlideSwitchButton( this ); m_statusToggle->setContentsMargins( 0, 0, 0, 0 ); From 41c688aa6825920db1d7820a6f07c11b40db1c60 Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Wed, 9 Jan 2013 15:34:44 +0100 Subject: [PATCH 191/310] style & capitalization fixes --- .../playlist/dynamic/echonest/EchonestControl.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index c1426af533..e2fd388e3f 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -553,7 +553,7 @@ Tomahawk::EchonestControl::updateData() QString songType = combo->currentText().toLower(); if ( match->currentText() == "is not" ) - songType.append(":false"); + songType.append( ":false" ); m_data.first = Echonest::DynamicPlaylist::SongType; m_data.second = songType; @@ -654,7 +654,7 @@ Tomahawk::EchonestControl::updateWidgetsFromData() if ( match && combo ) { match->setCurrentIndex( match->findData( m_matchData )); - QString songType = m_data.second.toString().split(":").at(0); + QString songType = m_data.second.toString().split( ":" ).at( 0 ); combo->setCurrentIndex( combo->findData( songType ) ); } } @@ -906,9 +906,9 @@ Tomahawk::EchonestControl::calculateSummary() Q_ASSERT( qobject_cast< QComboBox* >( m_match.data() ) ); QString isOrIsNot = qobject_cast< QComboBox* >( m_match.data() )->currentText().toLower(); if ( isOrIsNot == "is" ) - summary = tr( "where Song Type is %1" ).arg( text ); + summary = tr( "where song type is %1" ).arg( text ); else - summary = tr( "where Song Type is not %1" ).arg( text ); + summary = tr( "where song type is not %1" ).arg( text ); } m_summary = summary; From a8010e2bb4cc4c78d7d3c94a1776fe6a8b2806cc Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Wed, 9 Jan 2013 16:23:41 +0100 Subject: [PATCH 192/310] don't compare any user visible strings --- .../playlist/dynamic/echonest/EchonestControl.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index e2fd388e3f..61d25aaa19 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -551,8 +551,8 @@ Tomahawk::EchonestControl::updateData() m_matchString = match->currentText(); m_matchData = match->itemData( match->currentIndex() ).toString(); - QString songType = combo->currentText().toLower(); - if ( match->currentText() == "is not" ) + QString songType = combo->itemData( combo->currentIndex() ).toString(); + if ( match->currentIndex() == 1 ) songType.append( ":false" ); m_data.first = Echonest::DynamicPlaylist::SongType; @@ -904,8 +904,8 @@ Tomahawk::EchonestControl::calculateSummary() Q_ASSERT( !m_match.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_match.data() ) ); - QString isOrIsNot = qobject_cast< QComboBox* >( m_match.data() )->currentText().toLower(); - if ( isOrIsNot == "is" ) + QComboBox* combo = qobject_cast< QComboBox* >( m_match.data() ); + if ( combo->currentIndex() == 0 ) summary = tr( "where song type is %1" ).arg( text ); else summary = tr( "where song type is not %1" ).arg( text ); From 29ee62b554006e08782229f8bc6218af916bd0aa Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 9 Jan 2013 19:33:41 +0100 Subject: [PATCH 193/310] Include dir optimization --- CMakeModules/FindQJSON.cmake | 4 +--- CMakeModules/FindQuaZip.cmake | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeModules/FindQJSON.cmake b/CMakeModules/FindQJSON.cmake index d99e3e28bb..7f7d40feee 100644 --- a/CMakeModules/FindQJSON.cmake +++ b/CMakeModules/FindQJSON.cmake @@ -17,9 +17,7 @@ find_library (QJSON_LIBRARIES find_path (QJSON_INCLUDE_DIR NAMES - parser.h - PATH_SUFFIXES - qjson + qjson/parser.h PATHS ${QJSON_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} diff --git a/CMakeModules/FindQuaZip.cmake b/CMakeModules/FindQuaZip.cmake index 322e021a83..5c9de0077a 100644 --- a/CMakeModules/FindQuaZip.cmake +++ b/CMakeModules/FindQuaZip.cmake @@ -1,4 +1,4 @@ -find_path(QuaZip_INCLUDE_DIR quazip.h ${CMAKE_INSTALL_PREFIX}/include/quazip ${CMAKE_INSTALL_PREFIX}/include /usr/include/quazip /usr/local/include/quazip ${QT_INCLUDE_DIR}/quazip ${QT_INCLUDE_DIR} ${QUAZIP_DIR}/include/quazip ${QUAZIP_DIR}/quazip ${QUAZIP_DIR}/include) +find_path(QuaZip_INCLUDE_DIR quazip/quazip.h ${CMAKE_INSTALL_PREFIX}/include/quazip ${CMAKE_INSTALL_PREFIX}/include /usr/include/quazip /usr/local/include/quazip ${QT_INCLUDE_DIR}/quazip ${QT_INCLUDE_DIR} ${QUAZIP_DIR}/include/quazip ${QUAZIP_DIR}/quazip ${QUAZIP_DIR}/include) find_library(QuaZip_LIBRARY NAMES quazip PATHS ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/Library/Frameworks ${QUAZIP_DIR}/lib64 ${QUAZIP_DIR}/lib ${QUAZIP_DIR}/quazip ${QUAZIP_DIR}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(quazip DEFAULT_MSG QuaZip_LIBRARY QuaZip_INCLUDE_DIR) From cbee90db4b280e9a740060500bfb625c1a72348e Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Wed, 9 Jan 2013 21:51:18 +0100 Subject: [PATCH 194/310] Update README.md change libechonest dependency to git until a new libechonest version is released --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 48f46b8dc5..c1a830212d 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Required dependencies: * TagLib 1.6.2 - http://developer.kde.org/~wheeler/taglib.html * Boost 1.3 - http://www.boost.org/ * CLucene 0.9.23 (0.9.21 will fail) - http://clucene.sourceforge.net/download.shtml -* libechonest 2.0.0 - http://projects.kde.org/projects/playground/libs/libechonest/ +* libechonest (current GIT) - http://projects.kde.org/projects/playground/libs/libechonest/ * Attica 0.4.0 - ftp://ftp.kde.org/pub/kde/stable/attica/ * QuaZip 0.4.3 - http://quazip.sourceforge.net/ * liblastfm 1.0.1 - http://github.com/lastfm/liblastfm/ From 6301c84cb05a312c8b44fe202847576b673feaae Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 9 Jan 2013 18:46:17 -0500 Subject: [PATCH 195/310] Depend on libechonest 2.0.2 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 20828efef4..65b6507318 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -181,7 +181,7 @@ if(PHONON_FOUND) message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4") endif() -macro_optional_find_package(Echonest 2.0.0) +macro_optional_find_package(Echonest 2.0.2) macro_log_feature(ECHONEST_FOUND "Echonest" "Qt library for communicating with The Echo Nest" "http://projects.kde.org/libechonest" TRUE "" "libechonest 2.0.0 is needed for dynamic playlists and the infosystem") macro_optional_find_package(CLucene 0.9.23) From 3b373b5bb60bc08889556b4b9f70eaaae690659a Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 9 Jan 2013 18:47:30 -0500 Subject: [PATCH 196/310] Also display required version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 65b6507318..4976faad9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,7 +182,7 @@ if(PHONON_FOUND) endif() macro_optional_find_package(Echonest 2.0.2) -macro_log_feature(ECHONEST_FOUND "Echonest" "Qt library for communicating with The Echo Nest" "http://projects.kde.org/libechonest" TRUE "" "libechonest 2.0.0 is needed for dynamic playlists and the infosystem") +macro_log_feature(ECHONEST_FOUND "Echonest" "Qt library for communicating with The Echo Nest" "http://projects.kde.org/libechonest" TRUE "" "libechonest 2.0.2 is needed for dynamic playlists and the infosystem") macro_optional_find_package(CLucene 0.9.23) macro_log_feature(CLucene_FOUND "CLucene" "The open-source, C++ search engine" "http://clucene.sf.net" TRUE "" "CLucene is used for indexing the collection") From bdcfca8e718c6746e8f5b2b300c654e3d287dbe1 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Thu, 10 Jan 2013 01:16:32 +0100 Subject: [PATCH 197/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 141 +++++++++++++--------- lang/tomahawk_bg.ts | 141 +++++++++++++--------- lang/tomahawk_bn_IN.ts | 141 +++++++++++++--------- lang/tomahawk_ca.ts | 141 +++++++++++++--------- lang/tomahawk_cs.ts | 141 +++++++++++++--------- lang/tomahawk_de.ts | 151 +++++++++++++---------- lang/tomahawk_el.ts | 141 +++++++++++++--------- lang/tomahawk_en.ts | 141 +++++++++++++--------- lang/tomahawk_es.ts | 163 +++++++++++++++---------- lang/tomahawk_fi.ts | 141 +++++++++++++--------- lang/tomahawk_fr.ts | 141 +++++++++++++--------- lang/tomahawk_gl.ts | 141 +++++++++++++--------- lang/tomahawk_hi_IN.ts | 141 +++++++++++++--------- lang/tomahawk_hu.ts | 141 +++++++++++++--------- lang/tomahawk_it.ts | 265 +++++++++++++++++++++++------------------ lang/tomahawk_ja.ts | 141 +++++++++++++--------- lang/tomahawk_lt.ts | 141 +++++++++++++--------- lang/tomahawk_pl.ts | 141 +++++++++++++--------- lang/tomahawk_pt_BR.ts | 141 +++++++++++++--------- lang/tomahawk_ru.ts | 179 +++++++++++++++++----------- lang/tomahawk_sv.ts | 141 +++++++++++++--------- lang/tomahawk_tr.ts | 141 +++++++++++++--------- lang/tomahawk_zh_CN.ts | 141 +++++++++++++--------- lang/tomahawk_zh_TW.ts | 141 +++++++++++++--------- 24 files changed, 2163 insertions(+), 1415 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 75de157307..a37e6b5637 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -75,7 +75,7 @@ connect and stream from you? AccountWidget - + Invite إدعو @@ -955,103 +955,103 @@ connect and stream from you? PlayableModel - + Artist فنان - + Title عنوان - + Composer مؤلف - + Album البوم - + Track اغنية - + Duration مدة - + Bitrate معدل البت - + Age عمر - + Year سنة - + Size حجم - + Origin أصل - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name إسم @@ -2621,6 +2621,7 @@ Try tweaking the filters for a new set of songs to play. + is هو @@ -2631,7 +2632,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings لا يوجد مستخدمين مع فهرس "Echo Nest" ممكن. تجربة تمكين خيار المجموعة في الإعدادات يمكن أن يساعد @@ -2789,19 +2790,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity ألفة الفنان - + Artist Hotttnesss شعبية الفنان - + Song Hotttnesss شعبية الأغنية @@ -2827,138 +2828,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy حيوية - + Danceability القابلية للرقص - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 فقط من جانب ~%1 - - + + similar to ~%1 مشابهة ل%1 - + with genre ~%1 مع النوع ~%1 - - + + from no one من لا أحد - + My Collection مجموعتي الخاصة - + from my radio - + from %1 radio من إذاعة %1 - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 مع %1 %2 - + about %1 BPM حوالي %1 نبضة في الدقيقة - + about %n minute(s) long بطول حوالي %n دقائقبطول حوالي دقيقة %nبطول حوالي دقيقتين %nبطول حوالي %n دقائقبطول حوالي %n دقائقبطول حوالي %n دقائق - + about %1 dB حوالي %1 د.ب. - + at around %1%2 %3 في حوالي %1%2 %3 - + in %1 في %1 - + in a %1 key في المفتاح %1 - + sorted in %1 %2 order تم فرزها بالترتيب %1 %2 - + with a %1 mood في مزاج %1 - + in a %1 style في أسلوب %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3548,7 +3579,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown مجهول diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 10dc5b54c8..11a8209cda 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite Покани @@ -960,103 +960,103 @@ Tomahawk създаде доклад относно това и изпращай PlayableModel - + Artist Изпълнител - + Title Име - + Composer Композитор - + Album Албум - + Track Песен - + Duration Време - + Bitrate Кб/сек - + Age Възраст - + Year Година - + Size Големина - + Origin Източник - + Accuracy Съвпадение - + Perfect match Абсолютно - + Very good match Много добро - + Good match Добро - + Vague match Горе-долу - + Bad match Лошо - + Very bad match Много лошо - + Not available Няма съвпадение - - + + Name Име @@ -2634,6 +2634,7 @@ Try tweaking the filters for a new set of songs to play. + is е @@ -2644,7 +2645,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Не откривам потребители с активирана поддръжка на Echo Nest Catalogs. Опитай да активираш тази настройка в Настройка на колекцията. @@ -2803,19 +2804,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity Подобие на изпълнителите - + Artist Hotttnesss Популярност на изпълнителите - + Song Hotttnesss Популярност на песните @@ -2841,138 +2842,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Енергичност - + Danceability Танцувалност - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 само на -%1 - - + + similar to ~%1 подобни на - %1 - + with genre ~%1 със стил - %1 - - + + from no one от никой - + My Collection Моята колекция - + from my radio От Моето радио - + from %1 radio от %1 станция - + Variety Разнообразие - + Adventurousness Откривателност - + very low Много малко - + low Малко - + moderate Средно - + high Голямо - + very high Много голямо - + with %1 %2 с %1 %2 - + about %1 BPM около %1 BPM - + about %n minute(s) long около %n минутаоколо %n минути - + about %1 dB около %1 dB - + at around %1%2 %3 около %1 %2 %3 - + in %1 в %1 - + in a %1 key в %1 Октава - + sorted in %1 %2 order сортирано в %1 %2 ред - + with a %1 mood с %1 настроение - + in a %1 style в %1 стил + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3565,7 +3596,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Неизвестно diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 97b42c8bf1..8576d15ee3 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist - + Title - + Composer - + Album - + Track - + Duration - + Bitrate - + Age - + Year - + Size - + Origin - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity - + Artist Hotttnesss - + Song Hotttnesss @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long - + about %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3537,7 +3568,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 6200b819da..ab347e1d5a 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist Artista - + Title Cançó - + Composer Compositor - + Album Àlbum - + Track Número - + Duration Durada - + Bitrate Bitrate - + Age Edat - + Year Any - + Size Mida - + Origin Origen - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Nom @@ -2619,6 +2619,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. + is és @@ -2629,7 +2630,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings No hi ha usuaris amb els catàlegs de Echo Nest activats. Activeu l'opció en els paràmetres de la Col·lecció @@ -2787,19 +2788,19 @@ Intenteu ajustar els filtres per reproduir noves cançons. - + Artist Familiarity Semblança amb l'artista - + Artist Hotttnesss Rellevància d'Artista - + Song Hotttnesss Rellevància de Cançó @@ -2825,138 +2826,168 @@ Intenteu ajustar els filtres per reproduir noves cançons. - + Energy Energia - + Danceability Ballabilitat - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 només per ~%1 - - + + similar to ~%1 semblant a ~%1 - + with genre ~%1 amb el gènere ~%1 - - + + from no one de ningú - + My Collection La Meva Col·lecció - + from my radio - + from %1 radio de la ràdio %1 - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 amb %1 %2 - + about %1 BPM sobre %1 BPM - + about %n minute(s) long sobre %n minut de duradasobre %n minuts de durada - + about %1 dB sobre %1 dB - + at around %1%2 %3 sobre %1%2 %3 - + in %1 en %1 - + in a %1 key en clau de %1 - + sorted in %1 %2 order ordenades en %1 %2 - + with a %1 mood amb l'humor %1 - + in a %1 style amb l'estil %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3546,7 +3577,7 @@ introduïu el PIN aquí: TreeItemDelegate - + Unknown Desconegut diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index c5d2e8f7e2..fc7d4d7d60 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -75,7 +75,7 @@ se s vámi spojil? AccountWidget - + Invite Pozvat @@ -955,103 +955,103 @@ se s vámi spojil? PlayableModel - + Artist Umělec - + Title Název - + Composer Skladatel - + Album Album - + Track Skladba - + Duration Doba trvání - + Bitrate Datový tok - + Age Stáří - + Year Rok - + Size Velikost - + Origin Původ - + Accuracy Přesnost - + Perfect match Přesná shoda - + Very good match Velmi dobrá shoda - + Good match Dobrá shoda - + Vague match Mlhavá shoda - + Bad match Špatná shoda - + Very bad match Velmi špatná shoda - + Not available Nedostupné - - + + Name Název @@ -2620,6 +2620,7 @@ Zkuste vyladit filtry pro nové písně. + is je @@ -2630,7 +2631,7 @@ Zkuste vyladit filtry pro nové písně. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Nenalezeni žádní uživatelé se zapnutým katalogem EchoNest. Pokuste se tuto volbu zapnout v nastavení pod Sbírka @@ -2788,19 +2789,19 @@ Zkuste vyladit filtry pro nové písně. - + Artist Familiarity Podobnost umělce - + Artist Hotttnesss Oblíbenost umělce - + Song Hotttnesss Oblíbenost písně @@ -2826,138 +2827,168 @@ Zkuste vyladit filtry pro nové písně. - + Energy Energie - + Danceability Tanečnost - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 jen od %1 - - + + similar to ~%1 podobné %1 - + with genre ~%1 ze žánru %1 - - + + from no one od nikoho - + My Collection Moje sbírka - + from my radio z mého rádia - + from %1 radio z rádia %1 - + Variety Rozmanitost - + Adventurousness Dobrodružnost - + very low velmi nízká - + low nízká - + moderate přiměřená - + high vysoká - + very high velmi vysoká - + with %1 %2 s %1 %2 - + about %1 BPM přibližně %1 ÚZM - + about %n minute(s) long přibližně %n minutu dlouhápřibližně %n minuty dlouhápřibližně %n minut dlouhá - + about %1 dB přibližně %1 dB - + at around %1%2 %3 asi na %1%2 %3 - + in %1 v %1 - + in a %1 key v tónině %1 - + sorted in %1 %2 order tříděno podle %1 %2 - + with a %1 mood s náladou %1 - + in a %1 style ve stylu %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3547,7 +3578,7 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: TreeItemDelegate - + Unknown Neznámý diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 0dddeb3c2e..de18594afc 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -75,7 +75,7 @@ erlauben sich mit dir zu verbinden? AccountWidget - + Invite Einladen @@ -431,12 +431,12 @@ erlauben sich mit dir zu verbinden? Show Footnotes - Footnotes einblenden + Fußnoten einblenden Hide Footnotes - Footnotes ausblenden + Fußnoten ausblenden @@ -955,103 +955,103 @@ erlauben sich mit dir zu verbinden? PlayableModel - + Artist Künstler - + Title Titel - + Composer Komponist - + Album Album - + Track Lied - + Duration Dauer - + Bitrate Bitrate - + Age Alter - + Year Jahr - + Size Größe - + Origin Quelle - + Accuracy Treffsicherheit - + Perfect match Perfekt - + Very good match Sehr gut - + Good match Gut - + Vague match Vage - + Bad match Schlecht - + Very bad match Sehr schlecht - + Not available Nicht verfügbar - - + + Name Name @@ -1356,7 +1356,7 @@ erlauben sich mit dir zu verbinden? Close Queue - Warteschlange schliessen + Warteschlange schließen @@ -2618,6 +2618,7 @@ Versuch die Filter anzupassen für neue Lieder. + is ist @@ -2628,7 +2629,7 @@ Versuch die Filter anzupassen für neue Lieder. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Keine Nutzer mit aktiviertem EchoNest Katalog gefunden. Versuche diese Option in den Einstellungen unter "Sammlung" zu aktivieren @@ -2786,19 +2787,19 @@ Versuch die Filter anzupassen für neue Lieder. - + Artist Familiarity Ähnlichkeit - + Artist Hotttnesss Popularität des Künstlers - + Song Hotttnesss Popularität des Liedes @@ -2824,138 +2825,168 @@ Versuch die Filter anzupassen für neue Lieder. - + Energy Energie - + Danceability Tanzbarkeit - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 nur von %1 - - + + similar to ~%1 ähnlich zu %1 - + with genre ~%1 aus dem Genre %1 - - + + from no one von niemandem - + My Collection Meine Sammlung - + from my radio von meinem Radio - + from %1 radio aus dem %1 Radio - + Variety Vielfalt - + Adventurousness Abenteuerlichkeit - + very low sehr niedrig - + low niedrig - + moderate mäßig - + high hoch - + very high sehr hoch - + with %1 %2 mit %1 %2 - + about %1 BPM ungefähr %1 BPM - + about %n minute(s) long ungefähr eine Minute langungefähr %n Minuten lang - + about %1 dB ungefähr %1 dB - + at around %1%2 %3 bei ungefähr %1%2 %3 - + in %1 in %1 - + in a %1 key in der Tonart %1 - + sorted in %1 %2 order sortiert nach %1 %2 - + with a %1 mood mit einer %1 Stimmung - + in a %1 style im %1 Stil + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3460,7 +3491,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: Copyright 2010 - 2013 - Copright 2010 - 2013 + Copyright 2010 - 2013 @@ -3545,7 +3576,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TreeItemDelegate - + Unknown Unbekannt @@ -3882,7 +3913,7 @@ Lyrics for "%1" by %2: Close - Schliessen + Schließen diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index f1dbc4567b..0681ab678d 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist Καλλιτέχνης - + Title Τίτλος - + Composer Συνθέτης - + Album Άλμπουμ - + Track Κομμάτι - + Duration Διάρκεια - + Bitrate Ρυθμός δεδομένων - + Age Ηλικία - + Year Έτος - + Size Μέγεθος - + Origin - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Όνομα @@ -2619,6 +2619,7 @@ Try tweaking the filters for a new set of songs to play. + is είναι @@ -2629,7 +2630,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Δεν υπάρχουν χρήστες με ενεργοποιημένους τους Καταλόγους Echo Nest τους. Δοκιμάστε να ενεργοποιήσετε την επιλογή στις ρυθμίσεις Συλλογής @@ -2787,19 +2788,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity - + Artist Hotttnesss - + Song Hotttnesss @@ -2825,138 +2826,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Ενέργεια - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection Η Συλλογή Μου - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long - + about %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3545,7 +3576,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Άγνωστο diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 7276015b65..6d98c92c0b 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -75,7 +75,7 @@ connect and stream from you? AccountWidget - + Invite Invite @@ -955,103 +955,103 @@ connect and stream from you? PlayableModel - + Artist Artist - + Title Title - + Composer Composer - + Album Album - + Track Track - + Duration Duration - + Bitrate Bitrate - + Age Age - + Year Year - + Size Size - + Origin Origin - + Accuracy Accuracy - + Perfect match Perfect match - + Very good match Very good match - + Good match Good match - + Vague match Vague match - + Bad match Bad match - + Very bad match Very bad match - + Not available Not available - - + + Name Name @@ -2623,6 +2623,7 @@ Try tweaking the filters for a new set of songs to play. + is is @@ -2633,7 +2634,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2791,19 +2792,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity Artist Familiarity - + Artist Hotttnesss Artist Hotttnesss - + Song Hotttnesss Song Hotttnesss @@ -2829,138 +2830,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Energy - + Danceability Danceability - + + is not + is not + + + + Studio + Studio + + + + Live + Live + + + + Christmas + Christmas + + + only by ~%1 only by ~%1 - - + + similar to ~%1 similar to ~%1 - + with genre ~%1 with genre ~%1 - - + + from no one from no one - + My Collection My Collection - + from my radio from my radio - + from %1 radio from %1 radio - + Variety Variety - + Adventurousness Adventurousness - + very low very low - + low low - + moderate moderate - + high high - + very high very high - + with %1 %2 with %1 %2 - + about %1 BPM about %1 BPM - + about %n minute(s) long about %n minute longabout %n minutes long - + about %1 dB about %1 dB - + at around %1%2 %3 at around %1%2 %3 - + in %1 in %1 - + in a %1 key in a %1 key - + sorted in %1 %2 order sorted in %1 %2 order - + with a %1 mood with a %1 mood - + in a %1 style in a %1 style + + + where song type is %1 + where song type is %1 + + + + where song type is not %1 + where song type is not %1 + Tomahawk::GroovesharkParser @@ -3550,7 +3581,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Unknown diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 76e2ca7221..f719e71db1 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -75,7 +75,7 @@ conectarse a usted y transmitir música? AccountWidget - + Invite Invitar @@ -955,103 +955,103 @@ conectarse a usted y transmitir música? PlayableModel - + Artist Artista - + Title Título - + Composer Compositor - + Album Álbum - + Track Pista - + Duration Duración - + Bitrate Bitrate - + Age Antigüedad - + Year Año - + Size Tamaño - + Origin Origen - + Accuracy Precisión - + Perfect match - + Coincidencia perfecta - + Very good match - + Coincidencia muy buena - + Good match - + Coincidencia buena - + Vague match - + Coincidencia vaga - + Bad match - + Mala coincidencia - + Very bad match - + Muy mala coincidencia - + Not available No disponible - - + + Name Título @@ -1075,19 +1075,19 @@ conectarse a usted y transmitir música? played %1 by you e.g. played 3 hours ago by you - + reproducido %1 por usted played %1 by %2 e.g. played 3 hours ago by SomeSource - + reproducido %1 de %2 added %1 e.g. added 3 hours ago - + añadido %1 @@ -1962,7 +1962,7 @@ y estaciones basadas en sus gustos personales. Sync Starred tracks to Loved tracks - + Sincronizar pistas destacadas con pistas favoritas @@ -2623,6 +2623,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. + is es @@ -2633,7 +2634,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings No hay usuarios con los catálogos Echo Nest activados. Pruebe a activar la opción en la configuración de la colección @@ -2791,19 +2792,19 @@ Intente ajustar los filtros para reproducir nuevas canciones. - + Artist Familiarity Familiaridad del artista - + Artist Hotttnesss Popularidad del artista - + Song Hotttnesss Popularidad de la pista @@ -2829,138 +2830,168 @@ Intente ajustar los filtros para reproducir nuevas canciones. - + Energy Energía - + Danceability Bailable - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 sólo por ~%1 - - + + similar to ~%1 similar a ~%1 - + with genre ~%1 con el género ~%1 - - + + from no one de ninguno - + My Collection Mi colección - + from my radio de mi radio - + from %1 radio de %1 radio - + Variety Variedad - + Adventurousness Audacia - + very low muy bajo - + low bajo - + moderate moderado - + high alto - + very high muy alto - + with %1 %2 con %1 %2 - + about %1 BPM alrededor de %1 PPM - + about %n minute(s) long alrededor de %n minuto de duraciónalrededor de %n minutos de duración - + about %1 dB alrededor de %1 dB - + at around %1%2 %3 alrededor de %1%2 %3 - + in %1 en %1 - + in a %1 key en la tonalidad %1 - + sorted in %1 %2 order ordenado en %1 %2 - + with a %1 mood con un carácter %1 - + in a %1 style con un estilo %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3173,7 +3204,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Track '%1' by %2 is not streamable. - + .La pista '%1' de %2 no se pudo reproducir @@ -3550,7 +3581,7 @@ introduzca su número PIN aquí: TreeItemDelegate - + Unknown Desconocido diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index c11ba7a007..d133bfce7a 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -75,7 +75,7 @@ yhdistää ja toistaa sinulta virtaa? AccountWidget - + Invite Kutsu @@ -955,103 +955,103 @@ yhdistää ja toistaa sinulta virtaa? PlayableModel - + Artist Artisti - + Title Nimi - + Composer Säveltäjä - + Album Albumi - + Track Kappale - + Duration Kesto - + Bitrate Bittinopeus - + Age Ikä - + Year Vuosi - + Size Koko - + Origin Alkuperä - + Accuracy Tarkkuus - + Perfect match Täysosuma - + Very good match Erittäin hyvä osuma - + Good match Hyvä osuma - + Vague match Epämääräinen osuma - + Bad match Kehno osuma - + Very bad match Erittäin kehno osuma - + Not available Ei saatavilla - - + + Name Nimi @@ -2626,6 +2626,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< + is on @@ -2636,7 +2637,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Ei käyttäjiä, joilla on Echo Nestin hakemisto käytössä. Kokeile ottaa valinta käyttöön kokoelma-asetuksista @@ -2794,19 +2795,19 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< - + Artist Familiarity Artistin tuttuus - + Artist Hotttnesss Artistin suosittuus - + Song Hotttnesss Kappaleen suosittuus @@ -2832,138 +2833,168 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< - + Energy Energia - + Danceability Tanssittavuus - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 vain likimäärin artistilta %1 - - + + similar to ~%1 likimäärin artistin %1 samankaltaisia artisteja - + with genre ~%1 likimäärin lajityypillä %1 - - + + from no one ei keneltäkään - + My Collection Oma kokoelma - + from my radio omasta radiosta - + from %1 radio käyttäjän %1 radiosta - + Variety Vaihtelevuus - + Adventurousness Seikkailunhaluisuus - + very low erittäin pieni - + low pieni - + moderate kohtalainen - + high suuri - + very high erittäin suuri - + with %1 %2 , jonka %2 on %1 - + about %1 BPM noin %1 BPM - + about %n minute(s) long noin %n minuutti pitkänoin %n minuuttia pitkä - + about %1 dB noin %1 dB - + at around %1%2 %3 noin %1%2 %3elta - + in %1 sävellajissa %1 - + in a %1 key %1ssa - + sorted in %1 %2 order lajiteltu %1, lajitteluperusteena %2 - + with a %1 mood %1 mielialalla - + in a %1 style %1 tyylillä + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3553,7 +3584,7 @@ anna siellä näytetty PIN-koodi tähän: TreeItemDelegate - + Unknown Tuntematon diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index d99a595134..19a916597d 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -75,7 +75,7 @@ de se connecter et streamer de vous? AccountWidget - + Invite Inviter @@ -955,103 +955,103 @@ de se connecter et streamer de vous? PlayableModel - + Artist Artiste - + Title Titre - + Composer Compositeur - + Album Album - + Track Piste - + Duration Durée - + Bitrate Bitrate - + Age Age - + Year Année - + Size Taille - + Origin Origine - + Accuracy Précision - + Perfect match Correspondance parfaite - + Very good match Très bonne correspondance - + Good match Bonne correspondance - + Vague match Vague correspondance - + Bad match Mauvaise correspondance - + Very bad match Très mauvaise correspondance - + Not available Indisponible - - + + Name Nom @@ -2620,6 +2620,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. + is est @@ -2630,7 +2631,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Aucun utilisateur avec un Catalogue The Echo Nest actif. Essayez d'activer l'option dans les préférences de Collection @@ -2788,19 +2789,19 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. - + Artist Familiarity Familiarité de l'artiste - + Artist Hotttnesss Hotttnesss de l'artiste - + Song Hotttnesss Hotttness du morceau @@ -2826,138 +2827,168 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. - + Energy Energie - + Danceability Dansabilité - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 uniquement par ~%1 - - + + similar to ~%1 similaire à ~%1 - + with genre ~%1 avec le genre ~%1 - - + + from no one de personne - + My Collection Ma Collection - + from my radio de ma radio - + from %1 radio de la radio %1 - + Variety - + Adventurousness - + very low très bas - + low bas - + moderate moyen - + high haut - + very high très haut - + with %1 %2 avec %1 %2 - + about %1 BPM environ %1 BPM - + about %n minute(s) long environ %n minuteenviron %n minutes - + about %1 dB environ %1 dB - + at around %1%2 %3 à environ %1%2 %3 - + in %1 dans %1 - + in a %1 key en tonalité %1 - + sorted in %1 %2 order trié par ordre %1 %2 - + with a %1 mood avec une ambiance %1 - + in a %1 style ayant un style %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3547,7 +3578,7 @@ saisissez le numéro PIN ici : TreeItemDelegate - + Unknown Inconnu diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index ebab640e0b..a0f687b31a 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite Convidar @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist Artista - + Title Título - + Composer Compositor - + Album Álbum - + Track Pista - + Duration Duración - + Bitrate Taxa de bits - + Age Idade - + Year Ano - + Size Tamaño - + Origin Orixe - + Accuracy Precisión - + Perfect match Coincidencia perfecta - + Very good match Coincidencia moi boa - + Good match Boa coincidencia - + Vague match Parcialmente coincidente - + Bad match Mala coincidencia - + Very bad match Nada coincidentes - + Not available Non está dispoñíbel - - + + Name Nome @@ -2621,6 +2621,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. + is é @@ -2631,7 +2632,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Non hai usuarios co catálogo de Echo Nest activado. Proba a activar a opción en Colección dentro das configuracións @@ -2789,19 +2790,19 @@ Proba a trocar os filtros para ter outra lista música para escoitar. - + Artist Familiarity Familiaridade do artista - + Artist Hotttnesss Agrado do artista - + Song Hotttnesss Agrado da canción @@ -2827,138 +2828,168 @@ Proba a trocar os filtros para ter outra lista música para escoitar. - + Energy Enerxía - + Danceability Como de bailable - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 só por ~%1 - - + + similar to ~%1 similar a ~%1 - + with genre ~%1 có xénero ~%1 - - + + from no one de ninguén - + My Collection A miña colección - + from my radio dende a miña radio - + from %1 radio de %1 radio - + Variety Variedade - + Adventurousness Ao aventureiro - + very low moi baixa - + low baixa - + moderate moderada - + high alta - + very high moi alta - + with %1 %2 con %1 %2 - + about %1 BPM sobre %1 BPM - + about %n minute(s) long cerca de %n minuto(s) de longacerca de %n minuto(s) de longa - + about %1 dB sobre %1 dB - + at around %1%2 %3 aproximadamente %1 %2 %3 - + in %1 en %1 - + in a %1 key nunha tecla %1 - + sorted in %1 %2 order ordenada na %1 %2 orde - + with a %1 mood cun %1 de humor - + in a %1 style nun estilo %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3548,7 +3579,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Descoñecido diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 0426b9326c..f328d222a4 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist - + Title - + Composer - + Album - + Track - + Duration - + Bitrate - + Age - + Year - + Size - + Origin - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity - + Artist Hotttnesss - + Song Hotttnesss @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long - + about %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3537,7 +3568,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 649dc0534e..8e9af48200 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist - + Title - + Composer - + Album - + Track - + Duration - + Bitrate - + Age - + Year - + Size - + Origin - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Név @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity - + Artist Hotttnesss - + Song Hotttnesss @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Energia - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection Saját kollekció - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long - + about %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3537,7 +3568,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 485f93b564..f467f801ec 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -5,17 +5,17 @@ Allow %1 to connect and stream from you? - + Consenti %1 di connettersi e condividere la tua musica? Allow Streaming - + Consenti streaming Deny Access - + Nega l'accesso @@ -23,7 +23,7 @@ connect and stream from you? Tomahawk needs you to decide whether %1 is allowed to connect. - + Tomahawk ha bisogno di sapere se %1 può connettersi a te @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -159,12 +159,12 @@ connect and stream from you? Load &XSPF... - + Carica &XSPF... U&pdate Collection - + &Aggiorna collezione @@ -365,17 +365,17 @@ connect and stream from you? Sorry, Tomahawk couldn't find the track '%1' by %2 - + Spiacente, Tomahawk non ha trovato la traccia '%1' di %2 Sorry, Tomahawk couldn't find the artist '%1' - + Spiacente, Tomahawk non ha trovato l'artista '%1' Sorry, Tomahawk couldn't find the album '%1' by %2 - + Spiacente, Tomahawk non ha trovato l'album '%1' di '%2' @@ -528,12 +528,12 @@ connect and stream from you? &Copy to Clipboard - + &copia nella clipboard Open &Log-file - + Apri il &file-di-log @@ -639,7 +639,7 @@ connect and stream from you? Filter... - + Filtra... @@ -701,7 +701,7 @@ connect and stream from you? Synchronize Loved Tracks - + Sincronizza le tracce preferite @@ -717,7 +717,7 @@ connect and stream from you? %1 is listening along with you! - + %1 sta ascoltando insieme a te! @@ -779,32 +779,32 @@ connect and stream from you? Top Loved Tracks - + Top tracce preferite Sorry, we could not find any loved tracks! - + Spiacente, non siamo riusciti a trovare nessuna traccia amata The most loved tracks from all your friends - + Le migliori tracce preferite dai tuoi amici All of your loved tracks - + Tutte le tue tracce preferite All of %1's loved tracks - + Tutte le tracce preferite di %1 Loved Tracks - + Tracce preferite @@ -812,37 +812,37 @@ connect and stream from you? Tags - + Etichette Title: - + Titolo: Title... - + Titolo... Artist: - + Artista: Artist... - + Artista... Album: - + Album: Album... - + Album... @@ -852,62 +852,62 @@ connect and stream from you? Duration: - + Durata: 00.00 - + 00.00 Year: - + Anno: Bitrate: - + Bitrate: File - + File File Name: - + Nome del file: File Name... - + Nome del file... File Size... - + Dimensione del file... File size... - + Dimensione del file... File Size: - + Dimensione del file: Back - + Indietro Forward - + Avanti @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist Artista - + Title Titolo - + Composer Compositore - + Album Album - + Track Traccia - + Duration Durata - + Bitrate Bitrate - + Age Età - + Year Anno - + Size Grandezza - + Origin Origine - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Nome @@ -1459,7 +1459,7 @@ connect and stream from you? Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. - + Vuoi proprio cancellare tutte le voci di controllo accesso? Ti sarà richiesto di decidere ancora tutte le volte che un peer si connetterà con te. @@ -1841,7 +1841,7 @@ connect and stream from you? Delete - + Cancella @@ -1990,7 +1990,7 @@ connect and stream from you? Delete associated Spotify playlist? - + Elimina le playlist di Spotify associate? @@ -2167,12 +2167,12 @@ connect and stream from you? Synchronizing... - + Sincronizzando... Synchronization Finished - + Sincronizzazione finita @@ -2190,7 +2190,7 @@ connect and stream from you? Create local copy - + Crea copia locale @@ -2238,12 +2238,12 @@ connect and stream from you? Logged in as %1 - + Collegato come %1 Log Out - + Logout @@ -2441,12 +2441,12 @@ You may wish to try re-authenticating. Continue Playback after this &Track - + Continua la riproduzione dopo &Track Stop Playback after this &Track - + Ferma la riproduzione dopo &Track @@ -2476,12 +2476,12 @@ You may wish to try re-authenticating. Copy Album &Link - + Copia Copy Artist &Link - + Copia il &link dell'artista @@ -2496,7 +2496,7 @@ You may wish to try re-authenticating. Properties... - + Proprietà... @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is è @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Nessun utente con cataloghi Echo Nest abilitato. Prova ad abilitare l'opzione nell'impostazioni della collezione @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity Familiarità con l'artista - + Artist Hotttnesss Artisti popolari - + Song Hotttnesss Canzoni popolari @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Energia - + Danceability Ballabilità - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 solo ~%1 - - + + similar to ~%1 simili a ~%1 - + with genre ~%1 con il genere ~%1 - - + + from no one da nessuno - + My Collection La mia collezione - + from my radio - + from %1 radio dalla radio %1 - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 con %1 %2 - + about %1 BPM circa %1 BPM - + about %n minute(s) long lunga circa un minutolunga circa %n minuti - + about %1 dB circa %1 db - + at around %1%2 %3 attorno a %1%2 %3 - + in %1 in %1 - + in a %1 key in %1 chiavi - + sorted in %1 %2 order ordinata in modo %1 %2 - + with a %1 mood con un umore %1 - + in a %1 style in uno stile %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -2963,7 +2994,7 @@ Try tweaking the filters for a new set of songs to play. Top Overall - + Top Musica @@ -3009,17 +3040,17 @@ Try tweaking the filters for a new set of songs to play. Hyped Tracks - + Brani consigliati Top Artists - + Top Artisti Hyped Artists - + Artisti consigliati @@ -3094,12 +3125,12 @@ Try tweaking the filters for a new set of songs to play. Would you like to delete the playlist <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Desideri eliminare la playlist <b>"%2"</b>? Delete - + Cancella @@ -3525,19 +3556,19 @@ enter the displayed PIN number here: from streaming artist - track from friend - + da to streaming artist - track to friend - + a TreeItemDelegate - + Unknown Sconosciuto @@ -3686,7 +3717,7 @@ You can re-send a sync message at any time simply by sending another tweet using Sorry, we could not find any recent plays! - + Spiacente, non sono riuscito a trovare nessuna riproduzione recente! @@ -3709,7 +3740,7 @@ You can re-send a sync message at any time simply by sending another tweet using Recently played tracks - + Tracce riprodotte di recente diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 32147d67a6..18e28c71d5 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite 招待 @@ -955,103 +955,103 @@ connect and stream from you? PlayableModel - + Artist アーティスト - + Title タイトル - + Composer 作曲者 - + Album アルバム - + Track トラック - + Duration 時間 - + Bitrate ビットレート - + Age 変更日 - + Year - + Size サイズ - + Origin 音源 - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name 名前 @@ -2623,6 +2623,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2633,7 +2634,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Echo Nestのカタログを有効にしているユーザーがいません。コレクションの設定で有効にしてみて下さい。 @@ -2791,19 +2792,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity アーティストの人気度 - + Artist Hotttnesss アーティストのHotttnesss - + Song Hotttnesss 曲のHotttnesss @@ -2829,138 +2830,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy エネルギー - + Danceability 踊れる - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 ~%1のみ - - + + similar to ~%1 ~%1に似てる - + with genre ~%1 ジャンルは~%1 - - + + from no one ソース不明 - + My Collection マイコレクション - + from my radio マイラジオから - + from %1 radio %1ラジオから - + Variety 多様 - + Adventurousness 大胆さ - + very low 極小 - + low - + moderate - + high - + very high 極大 - + with %1 %2 %1は%2で - + about %1 BPM BPMは約%1 - + about %n minute(s) long 約%n分 - + about %1 dB 約%1dB - + at around %1%2 %3 %1%2 %3の近くに - + in %1 %1に - + in a %1 key %1調に - + sorted in %1 %2 order %1 %2順にソートされて - + with a %1 mood %1のムードで - + in a %1 style %1のスタイルで + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3550,7 +3581,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown 不明 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 08915318c7..3f1af4bdbd 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist Atlikėjas - + Title Pavadinimas - + Composer Kompozitorius - + Album Albumas - + Track Takelio numeris - + Duration Trukmė - + Bitrate Bitų dažnis - + Age Amžius - + Year Metai - + Size Dydis - + Origin Šaltinis - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Vardas @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is yra @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity - + Artist Hotttnesss - + Song Hotttnesss @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Energija - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection Mano kolekcija - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long apytikriai %n minutės ilgioapytikriai %n minučių ilgioapytikriai %n minučių ilgio - + about %1 dB apie %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3537,7 +3568,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 831d544a35..7239876be7 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -75,7 +75,7 @@ połączyć się i strumieniować od ciebie? AccountWidget - + Invite @@ -955,103 +955,103 @@ połączyć się i strumieniować od ciebie? PlayableModel - + Artist Wykonawca - + Title Tytuł - + Composer Kompozytor - + Album Album - + Track Utwór - + Duration Czas trwania - + Bitrate Bitrate - + Age Wiek - + Year Rok - + Size Rozmiar - + Origin Źródło - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name @@ -2620,6 +2620,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. + is jest @@ -2630,7 +2631,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Brak użytkowników z włączonymi Katalogami Echo Nest. Spróbuj włączyć opcję w ustawieniach Kolekcji @@ -2788,19 +2789,19 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. - + Artist Familiarity Znajomość Artysty - + Artist Hotttnesss Zainteresowanie wykonawcą - + Song Hotttnesss Zainteresowanie piosenką @@ -2826,138 +2827,168 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. - + Energy Energiczność - + Danceability Taneczność - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 tylko wykonawcy ~%1 - - + + similar to ~%1 podobne do ~%1 - + with genre ~%1 w gatunku ~%1 - - + + from no one od nikogo - + My Collection Moja Kolekcja - + from my radio - + from %1 radio z radia %1 - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 z %1 %2 - + about %1 BPM około %1 BPM - + about %n minute(s) long trwające około %n minutytrwające około %n minuttrwające około %n minut - + about %1 dB około %1 dB - + at around %1%2 %3 - + in %1 w %1 - + in a %1 key w kluczu %1 - + sorted in %1 %2 order posortowane w porządku %1 %2 - + with a %1 mood z nastrojem: %1 - + in a %1 style w stylu %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3547,7 +3578,7 @@ wprowadź pokazany numer PIN tutaj: TreeItemDelegate - + Unknown Nieznany diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 122d437eee..5d45507982 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -75,7 +75,7 @@ se conecte e faça o stream de você? AccountWidget - + Invite Convidar @@ -955,103 +955,103 @@ se conecte e faça o stream de você? PlayableModel - + Artist Artista - + Title Título - + Composer Compositor - + Album Álbum - + Track Faixa - + Duration Duração - + Bitrate Taxa de bits - + Age Idade - + Year Ano - + Size Tamanho - + Origin Origem - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Nome @@ -2620,6 +2620,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. + is é @@ -2630,7 +2631,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Nenhum usuário com catálogo Echo Nest habilitado. Tente habilitar essa opção nas configurações da Coleção @@ -2788,19 +2789,19 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. - + Artist Familiarity Familiaridade do Artista - + Artist Hotttnesss Hotttnesss do Artista - + Song Hotttnesss Hotttnesss da Música @@ -2826,138 +2827,168 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. - + Energy Energia - + Danceability Dançabilidade - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 somente por ~%1 - - + + similar to ~%1 similar a ~%1 - + with genre ~%1 do gênero ~%1 - - + + from no one de ninguém - + My Collection Minha Coleção - + from my radio da minha rádio - + from %1 radio da rádio %1 - + Variety Variedade - + Adventurousness - + very low muito baixo - + low baixo - + moderate moderado - + high alto - + very high muito alto - + with %1 %2 com %1 %2 - + about %1 BPM aproximadamente %1 BPM - + about %n minute(s) long aproximadamente %n minuto de duraçãoaproximadamente %n minutos de duração - + about %1 dB aproximadamente %1 dB - + at around %1%2 %3 em torno de %1%2 %3 - + in %1 em %1 - + in a %1 key em um tom %1 - + sorted in %1 %2 order distrubuido em %1 %2 ordem - + with a %1 mood com um %1 humor - + in a %1 style em um %1 de estilo + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3547,7 +3578,7 @@ colocar o número PIN mostrado aqui: TreeItemDelegate - + Unknown Desconhecido diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 504cdfd6f7..e8739c677d 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -75,7 +75,7 @@ connect and stream from you? AccountWidget - + Invite Пригласить @@ -166,8 +166,7 @@ connect and stream from you? U&pdate Collection - Обновить коллекцию - + Обновить Коллекцию @@ -214,7 +213,7 @@ connect and stream from you? &Legal Information... - &Юридическая информация + &Юридическая Информация @@ -224,7 +223,7 @@ connect and stream from you? Check For Updates... - Проверить обновление... + Проверить Обновление... @@ -257,7 +256,7 @@ connect and stream from you? Tracklist - Треклист + Список Песен @@ -953,109 +952,109 @@ connect and stream from you? New Releases - Новые релизы + Новые Релизы PlayableModel - + Artist Исполнитель - + Title Название - + Composer Композитор - + Album Альбом - + Track Песня - + Duration Продолжительность - + Bitrate Битрей - + Age Возраст - + Year Год - + Size Размер - + Origin Расположение - + Accuracy Совпадение - + Perfect match Превосходное - + Very good match Очень Хорошое - + Good match Хорошое - + Vague match - Расплывчатое совпадение + Расплывчатое - + Bad match Плохое совпадение - + Very bad match Очень плохое совпадение - + Not available Недоступно - - + + Name Имя @@ -1465,7 +1464,7 @@ connect and stream from you? Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. - + Вы действительно хотите удалить все записи Access Control? Вас заново спросят о каждом соединении к которым вы были подключены. @@ -1572,7 +1571,10 @@ connect and stream from you? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - + Echo Nest позволяет следить за вашей коллекцией песен + и использовать её для создания персональных радиостанций. Включение этой опции +позволит вам (и вашим друзья) создать автоматические плейлисты +и станций на основе вашего личного вкуса из вашего профиля. @@ -1806,17 +1808,17 @@ connect and stream from you? Add to my Playlists - Добавить к моим Плейлистам + Добавить к Моим Плейлистам Add to my Automatic Playlists - Добавить к моим Автоматическим Плейлистам + Добавить к Моим Автоматическим Плейлистам Add to my Stations - Добавить к моим Станциям + Добавить к Моим Станциям @@ -1925,7 +1927,7 @@ connect and stream from you? New Releases - Новые релизы + Новые Релизы @@ -2480,7 +2482,7 @@ You may wish to try re-authenticating. &Copy Track Link - &Скопировать Ссылку Песни + &Скопировать Ссылку на Песню @@ -2622,6 +2624,7 @@ Try tweaking the filters for a new set of songs to play. + is is @@ -2632,7 +2635,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings Нет пользователей с каталогом Echo Nest. Попробуйте включить настройку в настройках коллекции @@ -2790,19 +2793,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity Artist Familiarity - + Artist Hotttnesss Artist Hotttnesss - + Song Hotttnesss Song Hotttnesss @@ -2828,138 +2831,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy Энергия - + Danceability Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 только ~ %1 - - + + similar to ~%1 похожие на ~%1 - + with genre ~%1 с жанром ~%1 - - + + from no one ни от кого не - + My Collection Моя Коллекция - + from my radio от моего радио - + from %1 radio от %1 радио - + Variety Variety - + Adventurousness Adventurousness - + very low Очень низкое - + low Низкое - + moderate Умереный - + high Высокое - + very high Очень высокое - + with %1 %2 с %1 %2 - + about %1 BPM около %1 BPM - + about %n minute(s) long Продолжительность около %n минутыПродолжительность около %n минутПродолжительность около %n минут - + about %1 dB около %1 dB - + at around %1%2 %3 около %1%2 %3 - + in %1 в %1 - + in a %1 key в %1 ключ - + sorted in %1 %2 order отсортированы в %1 %2 порядке - + with a %1 mood настроение %1 - + in a %1 style в стиле %1 + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3020,7 +3053,7 @@ Try tweaking the filters for a new set of songs to play. Hyped Tracks - + Hyped Tracks @@ -3548,7 +3581,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown Неизвестный @@ -3773,7 +3806,9 @@ Terms for %1: Hotttness for %1: %2 - + +Hotttness for %1: %2 + @@ -4077,7 +4112,7 @@ Lyrics for "%1" by %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Простите - я просто автоматическое присутствие Tomahawk Player (http://gettomahawk.com). Если Вы получили это сообщение, человека, которого вы пытаетесь достичь, вероятно, не подписан, поэтому, пожалуйста, повторите попытку позже! diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index e17b65bb1c..54094fdfaf 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -75,7 +75,7 @@ ansluta och strömma från dig? AccountWidget - + Invite @@ -955,103 +955,103 @@ ansluta och strömma från dig? PlayableModel - + Artist Artist - + Title Titel - + Composer Kompositör - + Album Album - + Track Spår - + Duration Längd - + Bitrate Bitrate - + Age Ålder - + Year År - + Size Storlek - + Origin Ursprung - + Accuracy Exakthet - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name Namn @@ -2620,6 +2620,7 @@ Försök att ändra i filtrerna för att få en ny låtlista + is är @@ -2630,7 +2631,7 @@ Försök att ändra i filtrerna för att få en ny låtlista - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2788,19 +2789,19 @@ Försök att ändra i filtrerna för att få en ny låtlista - + Artist Familiarity Artistigenkänning - + Artist Hotttnesss - + Song Hotttnesss @@ -2826,138 +2827,168 @@ Försök att ändra i filtrerna för att få en ny låtlista - + Energy Energi - + Danceability Dansbarhet - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 Bara med ~%1 - - + + similar to ~%1 liknar ~%1 - + with genre ~%1 med genre ~%1 - - + + from no one från ingen - + My Collection Min Samling - + from my radio från min radio - + from %1 radio från %1 radio - + Variety Variation - + Adventurousness - + very low Mycket lågt - + low låg - + moderate måttlig - + high högt - + very high mycket högt - + with %1 %2 med %1 %2 - + about %1 BPM ca %1 BPM - + about %n minute(s) long ca %n minut långca %n minuter lång - + about %1 dB ca %1 dB - + at around %1%2 %3 runt %1%2 %3 - + in %1 i %1 - + in a %1 key i en %1-nyckel - + sorted in %1 %2 order sorterad i %1 %2 ordning - + with a %1 mood med en %1 sinnesstämning - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3547,7 +3578,7 @@ anger du PIN-koden här: TreeItemDelegate - + Unknown Okänt diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 8301a3179b..8e1b87f94b 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist - + Title - + Composer - + Album - + Track - + Duration - + Bitrate - + Age - + Year - + Size - + Origin - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity - + Artist Hotttnesss - + Song Hotttnesss @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long - + about %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3537,7 +3568,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 1930041e60..b526e86440 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite 邀请 @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist 艺术家 - + Title 标题 - + Composer 作曲 - + Album 专辑 - + Track 歌曲 - + Duration 时长 - + Bitrate 比特率 - + Age 已发行 - + Year 发行年 - + Size 文件大小 - + Origin 来源 - + Accuracy 准确度 - + Perfect match 完美匹配 - + Very good match 极高匹配 - + Good match 高匹配 - + Vague match 模糊匹配 - + Bad match 低匹配 - + Very bad match 极低匹配 - + Not available - - + + Name 名字 @@ -2621,6 +2621,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2631,7 +2632,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings 没有用户启用 Echo Nest Catalogs。 尝试在收藏设置中启用该选项。 @@ -2789,19 +2790,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity 艺术家相似度 - + Artist Hotttnesss 艺术家热度 - + Song Hotttnesss 歌曲热度 @@ -2827,138 +2828,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy 能量 - + Danceability 舞动指数 - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 限定艺术家为 ~%1 - - + + similar to ~%1 类似于 ~%1 - + with genre ~%1 with genre ~%1 - - + + from no one - + My Collection 我的收藏 - + from my radio 从我的电台 - + from %1 radio 从 %1 电台 - + Variety 种类 - + Adventurousness 冒险指数 - + very low 非常低 - + low - + moderate 适中 - + high - + very high 非常高 - + with %1 %2 - + about %1 BPM 大约 %1 BPM - + about %n minute(s) long 大约 %n 分钟长 - + about %1 dB 大约 %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood 以 %1 的情绪 - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3548,7 +3579,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown 未知 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 24b299b1d7..c629e68d6e 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -74,7 +74,7 @@ connect and stream from you? AccountWidget - + Invite @@ -954,103 +954,103 @@ connect and stream from you? PlayableModel - + Artist - + Title - + Composer - + Album - + Track - + Duration - + Bitrate - + Age - + Year - + Size - + Origin - + Accuracy - + Perfect match - + Very good match - + Good match - + Vague match - + Bad match - + Very bad match - + Not available - - + + Name @@ -2611,6 +2611,7 @@ Try tweaking the filters for a new set of songs to play. + is @@ -2621,7 +2622,7 @@ Try tweaking the filters for a new set of songs to play. - + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings @@ -2779,19 +2780,19 @@ Try tweaking the filters for a new set of songs to play. - + Artist Familiarity 藝術家熟悉程度 - + Artist Hotttnesss - + Song Hotttnesss @@ -2817,138 +2818,168 @@ Try tweaking the filters for a new set of songs to play. - + Energy 能量 - + Danceability - + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + only by ~%1 - - + + similar to ~%1 - + with genre ~%1 - - + + from no one - + My Collection 我的收藏 - + from my radio - + from %1 radio - + Variety - + Adventurousness - + very low - + low - + moderate - + high - + very high - + with %1 %2 - + about %1 BPM - + about %n minute(s) long - + about %1 dB - + at around %1%2 %3 - + in %1 - + in a %1 key - + sorted in %1 %2 order - + with a %1 mood - + in a %1 style + + + where song type is %1 + + + + + where song type is not %1 + + Tomahawk::GroovesharkParser @@ -3537,7 +3568,7 @@ enter the displayed PIN number here: TreeItemDelegate - + Unknown From a52cb5c92d904214f7a234b1b7d5f4d185c417f0 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 10 Jan 2013 05:43:00 +0100 Subject: [PATCH 198/310] * Tweak AudioControls layout a bit. A lot less margins now. --- src/AudioControls.ui | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/AudioControls.ui b/src/AudioControls.ui index a531df131e..ce7f56fd51 100644 --- a/src/AudioControls.ui +++ b/src/AudioControls.ui @@ -34,6 +34,12 @@ 0 + +0 + + +0 + @@ -44,13 +50,13 @@ -254 +170 0 -254 +170 16777215 @@ -129,13 +135,13 @@ -10 +8 0 -12 +10 0 @@ -168,7 +174,7 @@ -4 +2 6 @@ -430,13 +436,13 @@ -200 +170 0 -200 +170 66 @@ -448,10 +454,10 @@ 0 -2 +0 -0 +12 0 @@ -527,7 +533,7 @@ 2 -2 +0 From 2243e401e3280fc0673425cd0db8f6f6861150af Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 10 Jan 2013 12:38:08 +0100 Subject: [PATCH 199/310] * Updated ChangeLog. --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index ef845c10a6..eb4c80a3bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -28,6 +28,7 @@ Version 0.6.0: * Added iTunes as available source for New Releases. * Updates and additions to translations including: Japanese, Bulgarian, Finnish, Russian, Arabic, Chinese, Swedish, Czech and more. + * (Windows) Added thumb buttons to Windows 7's taskbar. * (Linux) Allow disabling of playback notifications. Version 0.5.5: From 65911fc133da5a3dd1d2cbc657d542a999851270 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 9 Jan 2013 18:48:29 -0500 Subject: [PATCH 200/310] For extra safety check if resolver is null --- src/libtomahawk/accounts/ResolverAccount.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libtomahawk/accounts/ResolverAccount.cpp b/src/libtomahawk/accounts/ResolverAccount.cpp index caf25c4ebf..be163609a1 100644 --- a/src/libtomahawk/accounts/ResolverAccount.cpp +++ b/src/libtomahawk/accounts/ResolverAccount.cpp @@ -235,6 +235,9 @@ ResolverAccount::resolverChanged() QPixmap ResolverAccount::icon() const { + if ( m_resolver.isNull() ) + return QPixmap(); + return m_resolver.data()->icon(); } From 79efd35b9aec264af6ec661d6606fbc2b853de98 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 10 Jan 2013 11:36:07 -0500 Subject: [PATCH 201/310] Allow high res mode on Retina Display macs, fixes font rendering (but not icons) --- admin/mac/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/mac/Info.plist b/admin/mac/Info.plist index d0d40eea7c..ae94b37b86 100644 --- a/admin/mac/Info.plist +++ b/admin/mac/Info.plist @@ -26,6 +26,8 @@ 10.5.0 NSPrincipalClass NSApplication + NSHighResolutionCapable + SUFeedURL http://download.tomahawk-player.org/sparkle/update.php SUPublicDSAKeyFile From 6f9fd2ce4b22d00280cde9c056031737a0b94ebd Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 10 Jan 2013 11:40:50 -0500 Subject: [PATCH 202/310] Fix spaces -> tabs --- admin/mac/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/mac/Info.plist b/admin/mac/Info.plist index ae94b37b86..772f647ce2 100644 --- a/admin/mac/Info.plist +++ b/admin/mac/Info.plist @@ -26,8 +26,8 @@ 10.5.0 NSPrincipalClass NSApplication - NSHighResolutionCapable - + NSHighResolutionCapable + SUFeedURL http://download.tomahawk-player.org/sparkle/update.php SUPublicDSAKeyFile From 4b5023487fce0867fffc0fa938239cdaf94afff8 Mon Sep 17 00:00:00 2001 From: Jason Herskowitz Date: Thu, 10 Jan 2013 14:23:29 -0500 Subject: [PATCH 203/310] Fix some of the double-arrow svgs that were blank for some reason --- data/images/arrow-down-double.svg | 14 +++++++++----- data/images/arrow-right-double.svg | 12 ++++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/data/images/arrow-down-double.svg b/data/images/arrow-down-double.svg index 8653d24fe7..4713354278 100644 --- a/data/images/arrow-down-double.svg +++ b/data/images/arrow-down-double.svg @@ -1,11 +1,15 @@ - - arrow-up-double + + arrow-down-double Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + + + + + \ No newline at end of file diff --git a/data/images/arrow-right-double.svg b/data/images/arrow-right-double.svg index 5163a76fe3..d7adadc6de 100644 --- a/data/images/arrow-right-double.svg +++ b/data/images/arrow-right-double.svg @@ -1,11 +1,15 @@ - + arrow-right-double Created with Sketch (http://www.bohemiancoding.com/sketch) - - - + + + + + + + \ No newline at end of file From 969b6622833bd263b691d1dce4a793fcc20b19c7 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Fri, 11 Jan 2013 01:18:18 +0100 Subject: [PATCH 204/310] Automatic merge of Transifex translations --- lang/tomahawk_cs.ts | 12 +- lang/tomahawk_fi.ts | 12 +- lang/tomahawk_it.ts | 298 ++++++++++++++++++++++---------------------- lang/tomahawk_ru.ts | 50 ++++---- 4 files changed, 186 insertions(+), 186 deletions(-) diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index fc7d4d7d60..e1d86c4434 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -2840,22 +2840,22 @@ Zkuste vyladit filtry pro nové písně. is not - + není Studio - + Studio Live - + Naživo Christmas - + Vánoce @@ -2982,12 +2982,12 @@ Zkuste vyladit filtry pro nové písně. where song type is %1 - + kde typ písně je %1 where song type is not %1 - + kde typ písně není %1 diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index d133bfce7a..a44423b633 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -2846,22 +2846,22 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< is not - + ei ole Studio - + Studio Live - + Live Christmas - + Joululaulu @@ -2988,12 +2988,12 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< where song type is %1 - + jossa kappaleen tyyppi on %1 where song type is not %1 - + jossa kappaleen tyyppi ei ole %1 diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index f467f801ec..7e6491412d 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -44,7 +44,7 @@ connect and stream from you? Connecting... - In connessione... + Connessione in corso ... @@ -57,18 +57,18 @@ connect and stream from you? Connections - + Connessioni Connect &All - + Connetti &tutto Disconnect &All - + Disconnetti &tutto @@ -76,7 +76,7 @@ connect and stream from you? Invite - + Invita @@ -84,7 +84,7 @@ connect and stream from you? Configure Accounts - + Configura gli account @@ -92,34 +92,34 @@ connect and stream from you? &Listen Along - &Ascolta assieme + Asco&lta insieme Stop &Listening Along - &Stop&Ascolta assieme + Non asco&ltare assieme &Follow in real-time - &Segui in diretta + S&egui in diretta &Listen Privately - &Ascolta in privato + Asco&lta in privato &Listen Publicly - &Ascolta pubblicamente + Asco&lta pubblicamente &Load Playlist - &Carica playlist + C&arica playlist @@ -134,7 +134,7 @@ connect and stream from you? &Play - &Play + Ri&produci @@ -149,12 +149,12 @@ connect and stream from you? &Next Track - &Avanti + Ava&nti &Quit - &Chiudi + Chi&udi @@ -169,82 +169,82 @@ connect and stream from you? Fully &Rescan Collection - + Ri&scansiona completamente la collezione Show Offline Sources - + Mostra risorse non connesse &Configure Tomahawk... - + &Configura Tomahawk... Minimize - + Minimizza Zoom - + Zoom Hide Menu Bar - + Nascondi barra menu Diagnostics... - + Diagnostica... About &Tomahawk... - + Riguardo &Tomahawk... &Legal Information... - + Informazioni &legali... &View Logfile - + &Mostra file di log Check For Updates... - + Controlla per aggiornamenti... &Controls - + &Controlli &Settings - + &Impostazioni &Help - + &Aiuto &Window - + &Finestra Main Menu - + Menù principale @@ -252,12 +252,12 @@ connect and stream from you? Tracklist - + Elenco tracce Other Albums - + Altri album @@ -337,27 +337,27 @@ connect and stream from you? Time Elapsed - + Tempo trascorso Time Remaining - + Tempo rimanente Playing from %1 - + Riproducendo da %1 Share - + Condividi Love - + Preferito @@ -523,7 +523,7 @@ connect and stream from you? Tomahawk Diagnostics - Diagnostica di Tomahawk + Diagnostica Tomahawk @@ -541,97 +541,97 @@ connect and stream from you? Steer this station: - + Orienta questa stazione: Much less - + Molto meno Less - + Meno A bit less - + Un pochino meno Keep at current - + Così va bene A bit more - + Un pochino di più More - + Di più Much more - + Molto di più Tempo - + Tempo Loudness - + Rumorosità Danceability - + Ballabilità Energy - + Energia Song Hotttnesss - + Popolarità della canzone Artist Hotttnesss - + Popolarità dell'artista Artist Familiarity - + Familiarità con l'artista By Description - + Da descrizione Enter a description - + Inserisci una descrizione Apply steering command - + Applica il comando orientazione Reset all steering commands - + Azzera tutti i comandi di orientazione @@ -647,12 +647,12 @@ connect and stream from you? This playlist is currently empty. - + Questa playlist al momento è vuota. This playlist is currently empty. Add some tracks to it and enjoy the music! - + Questa playlist al momento è vuota. Aggiungi qualche traccia e goditi la musica @@ -660,7 +660,7 @@ connect and stream from you? Indexing database - Aggiornando collezione + Collezione in aggiornamento @@ -676,12 +676,12 @@ connect and stream from you? Scrobble tracks to Last.fm - Scrobbla le canzoni a Last.fm + Scrobbla le canzoni a Last.fm Username: - Nome utente: + Utente: @@ -691,7 +691,7 @@ connect and stream from you? Test Login - Login di test + Test di login @@ -847,7 +847,7 @@ connect and stream from you? Track Number: - + Numero traccia: @@ -912,7 +912,7 @@ connect and stream from you? Properties - + Proprietà @@ -1011,42 +1011,42 @@ connect and stream from you? Accuracy - + Precisione Perfect match - + Abbinamento perfetto Very good match - + Abbinamento molto buono Good match - + Buon abbinamento Vague match - + Vaga corrispondenza Bad match - + Brutto abbinamento Very bad match - + Pessimo abbinamento Not available - + Non disponibile @@ -1074,31 +1074,31 @@ connect and stream from you? played %1 by you e.g. played 3 hours ago by you - + riprodotta %1 da te played %1 by %2 e.g. played 3 hours ago by SomeSource - + riprotta %1 da %2 added %1 e.g. added 3 hours ago - + aggiunta %1 by <b>%1</b> e.g. by SomeArtist - + da <b>%1</b> by <b>%1</b> on <b>%2</b> e.g. by SomeArtist on SomeAlbum - + da <b>%1</b> su <b>%2</b> @@ -1106,13 +1106,13 @@ connect and stream from you? A playlist you created %1. - + Una playlist che hai creato %1. A playlist by %1, created %2. - + Una playlist di %1, creata da %2. @@ -1321,13 +1321,13 @@ connect and stream from you? %1 Config - + %1 Config %1 Configuration - + %1 Configurazione @@ -1429,22 +1429,22 @@ connect and stream from you? Install from file - + Installa da file Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Configura gli account e servizi utilizzati da Tomahawk per cercare e riprodurre musica, trovare i tuoi amici e aggiornare il tuo stato. Manage how Tomahawk finds music on your computer. - + Configura come Tomahawk trova la musica sul tuo computer. Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Configura le impostazioni avanzate di Tomahawk, compresa la connessione ad internet, interazione col browser ed altro ancora. @@ -1472,7 +1472,7 @@ connect and stream from you? Filter by capability: - + Filtra per capacità: @@ -1480,77 +1480,77 @@ connect and stream from you? Remote Peer Connection Method - + Metodo per connessione remota ai peer None (outgoing connections only) - + Nessuno (connessioni solo in uscita) Use UPnP to establish port forward (recommended) - + Utilizza UPnp per stabilire un port foward (consigliato) Use static external IP address/host name and port - + Utilizza un indirizzo IP esterno statico Set this to your external IP address or host name. Make sure to forward the port to this host! - + Imposta questo sul tuo indirizzo IP o nome host esterno. Controlla che la porta sia aperta per questo host! Static Host Name: - + Nome host statico: Static Port: - + Porta statica: SOCKS Proxy - + SOCKS Proxy Use SOCKS Proxy - + Utilizza un Proxy SOCKS Proxy Settings... - + Impostazioni Proxy... Other Settings - + Altre impostazioni Allow web browsers to interact with Tomahawk (recommended) - + Permetti ai browser di interagire con Tomahawk (raccomandato) Send reports after Tomahawk crashed - + Manda una segnalazione quando Tomahawk va in crash Show notification when a new song starts to play - + Mostra notifica quando una nuova traccia viene riprodotta Clear All Access Control Entries - + Cancella tutte le voci di controllo accesso @@ -1558,7 +1558,7 @@ connect and stream from you? Path to scan for music files: - + Percorso da scansionare per file musicali: @@ -1566,22 +1566,22 @@ connect and stream from you? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - + Echo Nest tiene conto dei metadata del tuo catalogo digitale⏎ utilizzandoli per creare radio personalizzate. Abilitando questa opzione⏎ permetterà te (e tutti i tuoi amici) di creare playlist automatiche⏎ e stazioni basate sui vostri gusti musicali. Upload collection list to The Echo Nest to enable user radio - + Carica la lista della tua collezione su Echo Nest per abilitare la radio personalizzata. Watch for changes - + Controlla per cambiamenti Time between scans, in seconds: - + Tempo tra scansioni, in secondi: @@ -1589,12 +1589,12 @@ connect and stream from you? On - + Acceso Off - + Spento @@ -1952,12 +1952,12 @@ connect and stream from you? Select All - + Seleziona tutti Sync Starred tracks to Loved tracks - + Sincronizza le tracce Starred con i preferiti @@ -2067,7 +2067,7 @@ connect and stream from you? Google Address: - + Indirizzo Google: @@ -2093,7 +2093,7 @@ connect and stream from you? Enter Google Address - + Inserisci indirizzo Google @@ -2195,27 +2195,27 @@ connect and stream from you? Subscribe to playlist changes - + Sottoscriviti ai cambiamenti della playlist Re-enable playlist subscription - + Riabilita sottoscrizione alla playlist Stop subscribing to changes - + Blocca sottoscrizione ai cambiamenti Enable Spotify collaborations - + Abilita collaborazione Spotify Disable Spotify collaborations - + Disabilita collaborazione Spotify @@ -2408,7 +2408,7 @@ You may wish to try re-authenticating. Local Network - + Network locale @@ -2416,7 +2416,7 @@ You may wish to try re-authenticating. Local Network - + Network locale @@ -2459,14 +2459,14 @@ You may wish to try re-authenticating. &Go to "%1" - + &Vai a "%1" Go to "%1" - + Vai a "%1" @@ -2831,22 +2831,22 @@ Try tweaking the filters for a new set of songs to play. is not - + non è Studio - + Studio Live - + Live Christmas - + Natale @@ -2878,7 +2878,7 @@ Try tweaking the filters for a new set of songs to play. from my radio - + dalla mia radio @@ -2888,37 +2888,37 @@ Try tweaking the filters for a new set of songs to play. Variety - + Specie Adventurousness - + Aventurosità very low - + molto basso low - + basso moderate - + moderato high - + alto very high - + molto alto @@ -2973,12 +2973,12 @@ Try tweaking the filters for a new set of songs to play. where song type is %1 - + dove il tipo di canzone è %1 where song type is not %1 - + dove il tipo di canzone non è %1 @@ -3163,7 +3163,7 @@ Try tweaking the filters for a new set of songs to play. %n people - + Una persona%n persone @@ -3192,7 +3192,7 @@ Try tweaking the filters for a new set of songs to play. Track '%1' by %2 is not streamable. - + La traccia '%1' di %2 non è riproducibile. @@ -3282,7 +3282,7 @@ enter the displayed PIN number here: Local Network - + Network locale @@ -3365,23 +3365,23 @@ enter the displayed PIN number here: Hide Menu Bar - + Nascondi barra menu Show Menu Bar - + Mostra barra menu Search for any artist, album or song... - + Cerca qualunque artista, album o canzone... &Main Menu - + &Menu principale @@ -3446,7 +3446,7 @@ enter the displayed PIN number here: &Play - + Ri&produci @@ -3674,7 +3674,7 @@ You can re-send a sync message at any time simply by sending another tweet using Enter Twitter username - + Inserisci utenza Twitter @@ -3682,7 +3682,7 @@ You can re-send a sync message at any time simply by sending another tweet using This playlist is empty! - + Questa playlist è vuota! @@ -3871,7 +3871,7 @@ Lyrics for "%1" by %2: Visible stanzas - + Strofe visibili @@ -4047,7 +4047,7 @@ Lyrics for "%1" by %2: Enter Jabber ID - + Inserisci ID Jabber diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index e8739c677d..5852b3fe4a 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -171,7 +171,7 @@ connect and stream from you? Fully &Rescan Collection - Полное сканирование коллекции + Полное Сканирование Коллекции @@ -509,7 +509,7 @@ connect and stream from you? About - О + О Spotify @@ -798,12 +798,12 @@ connect and stream from you? All of your loved tracks - Все ваши любимые песни + Ваши любимые песни All of %1's loved tracks - Все Любимые Песни %1 + Любимые Песни %1 @@ -1090,7 +1090,7 @@ connect and stream from you? added %1 e.g. added 3 hours ago - Добавлен %1 + Добавлена %1 @@ -1510,7 +1510,7 @@ connect and stream from you? Static Host Name: - Статические имя хоста: + Статическое имя хоста: @@ -1545,7 +1545,7 @@ connect and stream from you? Send reports after Tomahawk crashed - Отправлять отчеты при подениях Tomahawk + Отправлять отчеты при ошибках Tomahawk @@ -1706,12 +1706,12 @@ connect and stream from you? Recent Albums - Последние альбомы + Последние Альбомы Latest Additions - Последние добавленые + Последние Добавленые @@ -1721,7 +1721,7 @@ connect and stream from you? New Additions - Последние добавленые + Последние Добавленные @@ -1745,12 +1745,12 @@ connect and stream from you? Latest Additions - Последние добавленные + Последние Добавленные Recently Played - Последние воспроизводимые + Последние Воспроизводимые @@ -1760,7 +1760,7 @@ connect and stream from you? Latest additions to your collection - Последние добавления в коллекцию + Новые Поступления в Коллекцию @@ -1917,7 +1917,7 @@ connect and stream from you? Recently Played - Последние воспроизводимые + Последние Воспроизводимые @@ -1940,7 +1940,7 @@ connect and stream from you? Configure your Spotify account - Настроить аккаунт Spotify + Настройка аккаунт Spotify @@ -2844,22 +2844,22 @@ Try tweaking the filters for a new set of songs to play. is not - + Не Studio - + Студия Live - + В живую Christmas - + Рождество @@ -2986,7 +2986,7 @@ Try tweaking the filters for a new set of songs to play. where song type is %1 - + где песни типа %1 @@ -3156,12 +3156,12 @@ Try tweaking the filters for a new set of songs to play. You - Ты + Ваша you - ты + ваша @@ -3624,7 +3624,7 @@ enter the displayed PIN number here: The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. - Твиттер плагин позволяет вам находить и воспроизводить музыку друзей через Твиттер и посылать сообщения. + Плагин для Твиттера позволяет вам находить и воспроизводить музыку друзей, посылать сообщения в Твиттер. @@ -3639,7 +3639,7 @@ enter the displayed PIN number here: Twitter Connections - Твиттер соединение + Соединение Твиттер @@ -3944,7 +3944,7 @@ Lyrics for "%1" by %2: Configure this Xmpp account - Настроить аккаунт XMPP + Настройка аккаунт XMPP From 1cf86ef96a9a676eb2e980d1d874427732fdba32 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 11 Jan 2013 06:06:41 +0100 Subject: [PATCH 205/310] Updated README.md. --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c1a830212d..c223cb756a 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,11 @@ Start the application on OS X: Detailed building instructions for Ubuntu ----------------------------------------- -See: http://wiki.tomahawk-player.org/index.php/Building_Ubuntu_Binary_on_Precise_(12.04) +See: http://wiki.tomahawk-player.org/index.php/Building_Binary_on_Ubuntu_Precise_(12.04) Detailed building instructions for OS X --------------------------------------- -See: http://wiki.tomahawk-player.org/index.php/Building_OS_X_Application_Bundle_on_Snow_Leopard_(10.6)_and_Lion_(10.7) +See: http://wiki.tomahawk-player.org/index.php/Building_OS_X_Application_Bundle Doxygen Documentation --------------------- @@ -36,31 +36,31 @@ Dependencies Required dependencies: * CMake 2.8.6 - http://www.cmake.org/ -* Qt 4.7.0 - http://qt.nokia.com/ +* Qt 4.7.0 - http://qt-project.org/ * Phonon 4.6.0 - http://phonon.kde.org/ * QJson 0.7.1 - http://qjson.sourceforge.net/ * SQLite 3.6.22 - http://www.sqlite.org/ * TagLib 1.6.2 - http://developer.kde.org/~wheeler/taglib.html * Boost 1.3 - http://www.boost.org/ * CLucene 0.9.23 (0.9.21 will fail) - http://clucene.sourceforge.net/download.shtml -* libechonest (current GIT) - http://projects.kde.org/projects/playground/libs/libechonest/ +* libechonest (2.0.2) - http://projects.kde.org/projects/playground/libs/libechonest/ * Attica 0.4.0 - ftp://ftp.kde.org/pub/kde/stable/attica/ * QuaZip 0.4.3 - http://quazip.sourceforge.net/ * liblastfm 1.0.1 - http://github.com/lastfm/liblastfm/ The following dependencies are optional, but recommended: -* Jreen 1.0.5 (1.1.0 will fail, 1.1.1 is fine) - http://qutim.org/jreen / https://github.com/euroelessar/jreen -* QTweetLib 0.5.0 - https://github.com/minimoog/QTweetLib +* Jreen 1.0.5 (1.1.0 will fail, 1.1.1 is fine) - http://qutim.org/jreen/ +* QTweetLib 0.5.0 - https://github.com/minimoog/QTweetLib/ Third party libraries that we ship with our source: * MiniUPnP 1.6 - http://miniupnp.free.fr/ * Breakpad - http://code.google.com/p/google-breakpad/ -* Qocoa - http://github.com/mikemcquaid/Qocoa +* Qocoa - http://github.com/mikemcquaid/Qocoa/ * libqnetwm - http://code.google.com/p/libqnetwm/ -* libqxt (QxtWeb module) - http://libqxt.org -* SPMediaKeyTap - https://github.com/nevyn/SPMediaKeyTap -* kdsingleapplicationguard +* libqxt (QxtWeb module) - http://libqxt.org/ +* SPMediaKeyTap - https://github.com/nevyn/SPMediaKeyTap/ +* kdSingleApplicationGuard - http://www.kdab.com/ Enjoy! From a70ece152383b73dbdb7b61e90e214f1d6579844 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 11 Jan 2013 06:11:56 +0100 Subject: [PATCH 206/310] Use https:// for github urls. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c223cb756a..f620d8f158 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Required dependencies: * libechonest (2.0.2) - http://projects.kde.org/projects/playground/libs/libechonest/ * Attica 0.4.0 - ftp://ftp.kde.org/pub/kde/stable/attica/ * QuaZip 0.4.3 - http://quazip.sourceforge.net/ -* liblastfm 1.0.1 - http://github.com/lastfm/liblastfm/ +* liblastfm 1.0.1 - https://github.com/lastfm/liblastfm/ The following dependencies are optional, but recommended: @@ -57,7 +57,7 @@ Third party libraries that we ship with our source: * MiniUPnP 1.6 - http://miniupnp.free.fr/ * Breakpad - http://code.google.com/p/google-breakpad/ -* Qocoa - http://github.com/mikemcquaid/Qocoa/ +* Qocoa - https://github.com/mikemcquaid/Qocoa/ * libqnetwm - http://code.google.com/p/libqnetwm/ * libqxt (QxtWeb module) - http://libqxt.org/ * SPMediaKeyTap - https://github.com/nevyn/SPMediaKeyTap/ From b16d41810232718440209eb6d06010a2b59f47aa Mon Sep 17 00:00:00 2001 From: Patrick von Reth Date: Fri, 11 Jan 2013 10:27:59 +0100 Subject: [PATCH 207/310] fixed windows build --- .../qxt/qxtweb-standalone/CMakeLists.txt | 24 ++++--------------- .../qxt/qxtweb-standalone/qxtweb/qxtglobal.h | 2 ++ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt index 43bfc48e9b..1b4b42de3d 100644 --- a/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt +++ b/thirdparty/qxt/qxtweb-standalone/CMakeLists.txt @@ -58,25 +58,11 @@ SET( sources ) -# DLL on windows due to linker issues, otherwise static -IF(WIN32) - ADD_LIBRARY(qxtweb-standalone SHARED - ${mocstuff} - ${headers} - ${sources} - ) - INSTALL( TARGETS qxtweb-standalone - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - ) -ELSE() - ADD_LIBRARY(qxtweb-standalone STATIC - ${mocstuff} - ${headers} - ${sources} - ) -ENDIF() +ADD_LIBRARY(qxtweb-standalone STATIC + ${mocstuff} + ${headers} + ${sources} +) target_link_libraries( qxtweb-standalone diff --git a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h index 7d5abfbe0d..fa59218163 100644 --- a/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h +++ b/thirdparty/qxt/qxtweb-standalone/qxtweb/qxtglobal.h @@ -51,6 +51,8 @@ #define QXT_DLLEXPORT DO_NOT_USE_THIS_ANYMORE +#define QXT_STATIC + #if !defined(QXT_STATIC) && !defined(QXT_DOXYGEN_RUN) # if defined(BUILD_QXT_CORE) # define QXT_CORE_EXPORT Q_DECL_EXPORT From 08369c04765c9ae02a5892ded75ebdf9e794678e Mon Sep 17 00:00:00 2001 From: Patrick von Reth Date: Fri, 11 Jan 2013 15:35:18 +0100 Subject: [PATCH 208/310] removed the dll from the installer script --- CMakeModules/NSIS.template.in | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeModules/NSIS.template.in b/CMakeModules/NSIS.template.in index 6c99ad1ea7..0390d4fd4e 100644 --- a/CMakeModules/NSIS.template.in +++ b/CMakeModules/NSIS.template.in @@ -276,7 +276,6 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER File "${INSTALL_PATH}\bin\tomahawk_crash_reporter.exe" File "${INSTALL_PATH}\bin\libtomahawk_breakpad.dll" - File "${INSTALL_PATH}\bin\libqxtweb-standalone.dll" File "${INSTALL_PATH}\bin\libtomahawk_portfwd.dll" File "${INSTALL_PATH}\bin\libtomahawklib.dll" ; plugins @@ -290,7 +289,6 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER File "${BUILD_PATH}\libtomahawk_breakpad.dll" File "${BUILD_PATH}\libtomahawklib.dll" - File "${BUILD_PATH}\libqxtweb-standalone.dll" File "${BUILD_PATH}\libtomahawk_portfwd.dll" ; plugins File "${BUILD_PATH}\libtomahawk_*_*.dll" From 0e619addc4c9b1a6d033648b1b0b10909a87edea Mon Sep 17 00:00:00 2001 From: Patrick von Reth Date: Fri, 11 Jan 2013 15:51:59 +0100 Subject: [PATCH 209/310] fixed crash on love, when thumb buttons where not initialized --- src/TomahawkWindow.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index ff5084467d..275da763a4 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -777,6 +777,8 @@ void TomahawkWindow::updateWindowsLoveButton() { #ifdef HAVE_THUMBBUTTON + if ( m_taskbarList == 0 ) + return; if ( !AudioEngine::instance()->currentTrack().isNull() && AudioEngine::instance()->currentTrack()->toQuery()->loved() ) { m_thumbButtons[TP_LOVE].hIcon = thumbIcon(TomahawkUtils::Loved); From 175ef4f03a5807bde533e11952c57d2d94c763b9 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sat, 12 Jan 2013 01:16:57 +0100 Subject: [PATCH 210/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 48 +- lang/tomahawk_bg.ts | 62 +- lang/tomahawk_bn_IN.ts | 48 +- lang/tomahawk_ca.ts | 48 +- lang/tomahawk_cs.ts | 48 +- lang/tomahawk_da.ts | 4118 ++++++++++++++++++++++++++++++++++++++++ lang/tomahawk_de.ts | 48 +- lang/tomahawk_el.ts | 48 +- lang/tomahawk_en.ts | 48 +- lang/tomahawk_es.ts | 62 +- lang/tomahawk_fi.ts | 48 +- lang/tomahawk_fr.ts | 48 +- lang/tomahawk_gl.ts | 48 +- lang/tomahawk_hi_IN.ts | 48 +- lang/tomahawk_hu.ts | 48 +- lang/tomahawk_it.ts | 48 +- lang/tomahawk_ja.ts | 48 +- lang/tomahawk_lt.ts | 48 +- lang/tomahawk_pl.ts | 48 +- lang/tomahawk_pt_BR.ts | 48 +- lang/tomahawk_ru.ts | 79 +- lang/tomahawk_sv.ts | 48 +- lang/tomahawk_tr.ts | 48 +- lang/tomahawk_zh_CN.ts | 48 +- lang/tomahawk_zh_TW.ts | 48 +- 25 files changed, 4724 insertions(+), 605 deletions(-) create mode 100644 lang/tomahawk_da.ts diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index a37e6b5637..66968d6181 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -3374,13 +3374,13 @@ enter the displayed PIN number here: - + Hide Menu Bar إخفي شريط القائمة - + Show Menu Bar أظهر شريط القائمة @@ -3395,114 +3395,114 @@ enter the displayed PIN number here: ال&قائمة الرئيسية - + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 11a8209cda..da5539e5d0 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -214,7 +214,7 @@ connect and stream from you? &View Logfile - + &Виж лог-файлът @@ -2855,22 +2855,22 @@ Try tweaking the filters for a new set of songs to play. is not - + не е Studio - + Студийно Live - + На живо Christmas - + Коледа @@ -2997,12 +2997,12 @@ Try tweaking the filters for a new set of songs to play. where song type is %1 - + където стила на песенте е %1 where song type is not %1 - + където стила на песента не е %1 @@ -3388,13 +3388,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Скрий лентата с менюто - + Show Menu Bar Покажи лентата с менюто @@ -3409,117 +3409,117 @@ enter the displayed PIN number here: &Основно меню - + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Всички права - запазени. 2010 - 2013 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 8576d15ee3..b69087cfe9 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index ab347e1d5a..513b3fd4a6 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -3372,13 +3372,13 @@ introduïu el PIN aquí: - + Hide Menu Bar - + Show Menu Bar @@ -3393,114 +3393,114 @@ introduïu el PIN aquí: - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index e1d86c4434..614612b789 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -3373,13 +3373,13 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: - + Hide Menu Bar Skrýt pruh s hlavní nabídkou - + Show Menu Bar Ukázat pruh s hlavní nabídkou @@ -3394,114 +3394,114 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: Hlavní &nabídka - + XSPF Error Chyba XSPF - + This is not a valid XSPF playlist. Toto není platný seznam skladeb XSPF. - + Failed to save tracks Nepodařilo se uložit skladby - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Některé skladby v seznamu skladeb neobsahují ani umělce ani název. Tyto budou přehlíženy. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. Ujistěte se, že máte nainstalováno vhodné jádro Phonona potřebné přídavné moduly. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. - + Station Stanice - + Create New Station Vytvořit novou stanici - + Name: Název: - + Playlist Seznam skladeb - + Automatic Playlist Automatický seznam skladeb - + Pause Pozastavit - + &Play &Přehrát - + Authentication Error Chyba při ověřování - + Error connecting to SIP: Authentication failed! Chyba spojení se SIP: Potvrzení pravosti se nezdařilo! - + %1 by %2 track, artist name %1 od %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Autorské právo 2010 - 2013 - + Thanks to: Poděkování: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts new file mode 100644 index 0000000000..f92ecd32c0 --- /dev/null +++ b/lang/tomahawk_da.ts @@ -0,0 +1,4118 @@ + + + ACLJobDelegate + + + Allow %1 to +connect and stream from you? + + + + + Allow Streaming + + + + + Deny Access + + + + + ACLJobItem + + + Tomahawk needs you to decide whether %1 is allowed to connect. + + + + + AccountFactoryWrapper + + + Add Account + Tilføj Konto + + + + AccountFactoryWrapperDelegate + + + Online + Online + + + + Connecting... + Forbinder... + + + + Offline + Offline + + + + AccountListWidget + + + Connections + + + + + + Connect &All + + + + + Disconnect &All + + + + + AccountWidget + + + Invite + + + + + AccountsToolButton + + + Configure Accounts + + + + + ActionCollection + + + &Listen Along + &Lyt med + + + + Stop &Listening Along + Stop &Medlytning + + + + &Follow in real-time + &Følg i realtid + + + + + &Listen Privately + &Lyt Privat + + + + + &Listen Publicly + &Lyt Offentligt + + + + &Load Playlist + &Indlæs Spilleliste + + + + &Rename Playlist + &Omdøb Spilleliste + + + + &Copy Playlist Link + &Kopier Spilleliste Link + + + + &Play + &Afspil + + + + &Stop + &Stop + + + + &Previous Track + &Forrige Spor + + + + &Next Track + &Næste Spor + + + + &Quit + &Afslut + + + + Load &XSPF... + + + + + U&pdate Collection + + + + + Fully &Rescan Collection + + + + + Show Offline Sources + + + + + &Configure Tomahawk... + + + + + Minimize + + + + + Zoom + + + + + Hide Menu Bar + + + + + Diagnostics... + + + + + About &Tomahawk... + + + + + &Legal Information... + + + + + &View Logfile + + + + + Check For Updates... + + + + + &Controls + + + + + &Settings + + + + + &Help + + + + + &Window + + + + + Main Menu + + + + + AlbumInfoWidget + + + Tracklist + + + + + Other Albums + + + + + Sorry, we could not find any other albums for this artist! + + + + + Sorry, we could not find any tracks for this album! + + + + + Other Albums by %1 + Andre Albums af %1 + + + + AlbumModel + + + + All albums from %1 + Alle albums fra %1 + + + + All albums + Alle albums + + + + ArtistInfoWidget + + + Top Hits + Top Hits + + + + Related Artists + Relaterede Kunstnere + + + + Albums + Albums + + + + Sorry, we could not find any albums for this artist! + + + + + Sorry, we could not find any related artists! + + + + + Sorry, we could not find any top hits for this artist! + + + + + AudioControls + + + Shuffle + Bland + + + + Repeat + Gentag + + + + Time Elapsed + + + + + Time Remaining + + + + + Playing from %1 + + + + + Share + + + + + Love + + + + + AudioEngine + + + Sorry, Tomahawk couldn't find the track '%1' by %2 + + + + + Sorry, Tomahawk couldn't find the artist '%1' + + + + + Sorry, Tomahawk couldn't find the album '%1' by %2 + + + + + CategoryAddItem + + + Create new Playlist + + + + + Create new Station + + + + + + New Station + Ny Station + + + + + %1 Station + %1 Station + + + + CategoryItem + + + Playlists + Spilleliste + + + + Stations + Stationer + + + + ClearButton + + + Clear + Ryd + + + + ContextWidget + + + + Show Footnotes + Vis Fodnoter + + + + Hide Footnotes + Skjul Fodnoter + + + + CrashReporter + + + Tomahawk Crash Reporter + Tomahawk Crash Reporter + + + + <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> + + + + + Send this report + + + + + Don't send + + + + + Abort + Afbryd + + + + You can disable sending crash reports in the configuration dialog. + Du kan deaktivere afsending af crash reporter i konfigurationsdialogen + + + + Uploaded %L1 of %L2 KB. + Uploadet %L1 af %L2 KB. + + + + + Close + Luk + + + + Sent! <b>Many thanks</b>. + Sendt! <b>Mange Tak</b> + + + + Failed to send crash info. + Mislykkede at sende crash info + + + + DatabaseCommand_AllAlbums + + + Unknown + Ukendt + + + + DelegateConfigWrapper + + + About + + + + + Delete Account + Slet Konto + + + + About this Account + + + + + DiagnosticsDialog + + + Tomahawk Diagnostics + Tomahawk Diagnostikker + + + + &Copy to Clipboard + + + + + Open &Log-file + + + + + EchonestSteerer + + + Steer this station: + + + + + Much less + + + + + Less + + + + + A bit less + + + + + Keep at current + + + + + A bit more + + + + + More + + + + + Much more + + + + + Tempo + + + + + Loudness + + + + + Danceability + + + + + Energy + + + + + Song Hotttnesss + + + + + Artist Hotttnesss + + + + + Artist Familiarity + + + + + By Description + + + + + Enter a description + + + + + Apply steering command + + + + + Reset all steering commands + + + + + FlexibleHeader + + + Filter... + + + + + FlexibleView + + + This playlist is currently empty. + + + + + This playlist is currently empty. Add some tracks to it and enjoy the music! + + + + + IndexingJobItem + + + Indexing database + Indeks database + + + + InfoBar + + + Filter... + Filter... + + + + LastFmConfig + + + Scrobble tracks to Last.fm + Scrobble numre til Last.fm + + + + Username: + Brugernavn: + + + + Password: + Kodeord: + + + + Test Login + Test Login + + + + Import Playback History + + + + + Synchronize Loved Tracks + + + + + LastfmContext + + + Last.fm + Last.fm + + + + LatchedStatusItem + + + %1 is listening along with you! + + + + + LoadXSPF + + + Load XSPF + Indlæs XSPF + + + + Playlist URL + Spilleliste URL + + + + Enter URL... + Indtast URL + + + + ... + ... + + + + Automatically update + Automatisk Opdatering + + + + LoadXSPFDialog + + + Load XSPF File + Indlæs XSPF Fil + + + + XSPF Files (*.xspf) + XSPF Filer (*.xspf) + + + + LocalCollection + + + Bookmarks + Bogmærker + + + + Saved tracks + Gemte numre + + + + LovedTracksItem + + + Top Loved Tracks + + + + + Sorry, we could not find any loved tracks! + + + + + The most loved tracks from all your friends + + + + + All of your loved tracks + + + + + All of %1's loved tracks + + + + + Loved Tracks + + + + + MetadataEditor + + + Tags + + + + + Title: + + + + + Title... + + + + + Artist: + + + + + Artist... + + + + + Album: + + + + + Album... + + + + + Track Number: + + + + + Duration: + + + + + 00.00 + + + + + Year: + + + + + Bitrate: + + + + + File + + + + + File Name: + + + + + File Name... + + + + + File Size... + + + + + File size... + + + + + File Size: + + + + + Back + + + + + Forward + + + + + Properties + + + + + NewPlaylistWidget + + + Enter a title for the new playlist: + Indtast en titel for den nye spilleliste + + + + Tomahawk offers a variety of ways to help you create playlists and find music you enjoy! + Tomahawk tilbyder mange forskellige måder til at hjælpe dig lave spillelister og finde musik du kan lide! + + + + Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist: + Indtast blot en genre eller et tag navn og Tomahawk vil foreslå nogle få numre til at få dig startet med din nye spilleliste + + + + &Create Playlist + &Lav Spilleliste + + + + Create a new playlist + Lav en ny spilleliste + + + + NewReleasesWidget + + + New Releases + + + + + PlayableModel + + + Artist + + + + + Title + + + + + Composer + + + + + Album + + + + + Track + + + + + Duration + + + + + Bitrate + + + + + Age + + + + + Year + + + + + Size + + + + + Origin + + + + + Accuracy + + + + + Perfect match + + + + + Very good match + + + + + Good match + + + + + Vague match + + + + + Bad match + + + + + Very bad match + + + + + Not available + + + + + + Name + + + + + PlaylistItemDelegate + + + played %1 by you + afspillede %1 af dig + + + + played %1 by %2 + afspillede %1 af %2 + + + + PlaylistLargeItemDelegate + + + played %1 by you + e.g. played 3 hours ago by you + + + + + played %1 by %2 + e.g. played 3 hours ago by SomeSource + + + + + added %1 + e.g. added 3 hours ago + + + + + by <b>%1</b> + e.g. by SomeArtist + + + + + by <b>%1</b> on <b>%2</b> + e.g. by SomeArtist on SomeAlbum + + + + + PlaylistModel + + + A playlist you created %1. + + + + + + A playlist by %1, created %2. + + + + + All tracks by %1 on album %2 + Alle numre af %1 på albummet %2 + + + + All tracks by %1 + Alle numre af %1 + + + + PlaylistTypeSelectorDlg + + + New Playlist + Ny spilleliste + + + + Just a regular old playlist... Give it a name, drag in some tracks, and go! + Bare en standard gammel spilleliste... Giv den et navn, træk nogle numre ind og afsted! + + + + Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you! + + + + + Name: + Navn: + + + + New Playlist... + Ny Spilleliste... + + + + Create Manual Playlist + Lav Manuel Spilleliste + + + + Create Automatic Playlist + Lav Automatisk Spilleliste + + + + PlaylistView + + + This playlist is currently empty. + + + + + This playlist is currently empty. Add some tracks to it and enjoy the music! + Spillelisten are tom. Tilføj nogle numre til den og nyd musikken! + + + + ProxyDialog + + + Proxy Settings + Proxy indstillinger + + + + Hostname of proxy server + Værtsnavn for proxy server + + + + Host + Vært + + + + Port + Port + + + + Proxy login + Proxy login + + + + User + Bruger + + + + Password + Kodeord + + + + Proxy password + Proxy kodeord + + + + No Proxy Hosts: +(Overrides system proxy) + Ingen Proxy Vært: +(Overskrider system proxy) + + + + localhost *.example.com (space separated) + lokalvært *.eksempel.com (space separated) + + + + Use proxy for DNS lookups? + Benyt proxy for DNS opslag? + + + + QObject + + + %n year(s) ago + %n år siden%n år siden + + + + %n year(s) + %n år%n år + + + + %n month(s) ago + %n måned siden%n måneder siden + + + + %n month(s) + %n måned%n måneder + + + + %n week(s) ago + %n uge siden%n uger siden + + + + %n week(s) + %n uge%n uger + + + + %n day(s) ago + %n dag siden%n dage siden + + + + %n day(s) + %n dag%n dage + + + + %n hour(s) ago + %n time siden%n timer siden + + + + %n hour(s) + %n time%n timer + + + + %1 minutes ago + %1 minutter siden + + + + %1 minutes + %1 minutter + + + + just now + lige nu + + + + Friend Finders + Venne findere + + + + Music Finders + Musik Findere + + + + Status Updaters + Status Opdaterer + + + + + %1 Config + + + + + + %1 Configuration + + + + + QuaZipFilePrivate + + + ZIP/UNZIP API error %1 + ZIP/UNZIP API error %1 + + + + QueueView + + + + Open Queue + + + + + Open Queue - %n item(s) + + + + + Close Queue + + + + + RelatedArtistsContext + + + Related Artists + Relaterede Kunstnere + + + + ResolverConfigDelegate + + + Not found: %1 + Ikke fundet: %1 + + + + Failed to load: %1 + Kunne ikke indlæse: %1 + + + + SearchLineEdit + + + Search + Søg + + + + SearchWidget + + + Search: %1 + Søg: %1 + + + + Results for '%1' + Resultater for '%1' + + + + SettingsDialog + + + Collection + Samling + + + + Advanced + Advanceret + + + + All + Alle + + + + Some changed settings will not take effect until Tomahawk is restarted + + + + + Services + Services + + + + Install from file + + + + + Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. + + + + + Manage how Tomahawk finds music on your computer. + + + + + Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. + + + + + Install resolver from file + Installer resolver fra fil + + + + Delete all Access Control entries? + + + + + Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. + + + + + Information + Information + + + + Settings_Accounts + + + Filter by capability: + + + + + Settings_Advanced + + + Remote Peer Connection Method + + + + + None (outgoing connections only) + + + + + Use UPnP to establish port forward (recommended) + + + + + Use static external IP address/host name and port + + + + + Set this to your external IP address or host name. Make sure to forward the port to this host! + + + + + Static Host Name: + + + + + Static Port: + + + + + SOCKS Proxy + + + + + Use SOCKS Proxy + + + + + Proxy Settings... + + + + + Other Settings + + + + + Allow web browsers to interact with Tomahawk (recommended) + + + + + Send reports after Tomahawk crashed + + + + + Show notification when a new song starts to play + + + + + Clear All Access Control Entries + + + + + Settings_Collection + + + Path to scan for music files: + + + + + The Echo Nest supports keeping track of your catalog metadata + and using it to craft personalized radios. Enabling this option + will allow you (and all your friends) to create automatic playlists + and stations based on your personal taste profile. + + + + + Upload collection list to The Echo Nest to enable user radio + + + + + Watch for changes + + + + + Time between scans, in seconds: + + + + + SlideSwitchButton + + + On + + + + + Off + + + + + SocialPlaylistWidget + + + Popular New Albums From Your Friends + Populære Nye Albums Fra Dine Venner + + + + Most Played Playlists + Mest Spillede Spillelister + + + + Most Played Tracks You Don't Have + Mest Spillede Musiknumre Du Ikke Har + + + + SocialWidget + + + Facebook + + + + + Twitter + + + + + Tweet + + + + + Listening to "%1" by %2. %3 + + + + + Listening to "%1" by %2 on "%3". %4 + + + + + %1 characters left + + + + + SourceDelegate + + + Track + Musiknummer + + + + Album + Album + + + + Artist + Kunstner + + + + Local + Lokal + + + + Top 10 + Top 10 + + + + All available tracks + Alle tilgængelige numre + + + + + Show + Vis + + + + + Hide + Skjul + + + + SourceInfoWidget + + + Recent Albums + Seneste Albums + + + + Latest Additions + Seneste Tilføjelser + + + + Recently Played Tracks + Seneste Afspillede Numre + + + + New Additions + Nye Tilføjelser + + + + My recent activity + Min seneste aktivitet + + + + Recent activity from %1 + Seneste aktivitet fra %1 + + + + SourceItem + + + Collection + Samling + + + + + Latest Additions + Seneste Tilføjelser + + + + Recently Played + Senest Afspillet + + + + SuperCollection + SuperSamling + + + + Latest additions to your collection + + + + + Latest additions to %1's collection + + + + + Sorry, we could not find any recent additions! + + + + + Recently Played Tracks + + + + + Your recently played tracks + + + + + %1's recently played tracks + + + + + Sorry, we could not find any recent plays! + + + + + SourceTreeView + + + &Copy Link + &Kopier Link + + + + &Delete %1 + &Slet %1 + + + + Add to my Playlists + + + + + Add to my Automatic Playlists + + + + + Add to my Stations + + + + + &Export Playlist + &Eksporter Spilleliste + + + + playlist + + + + + automatic playlist + + + + + station + + + + + Would you like to delete the %1 <b>"%2"</b>? + e.g. Would you like to delete the playlist named Foobar? + + + + + Delete + + + + + Save XSPF + Gem XSPF + + + + Playlists (*.xspf) + Spilleliste (*.xspf) + + + + SourcesModel + + + Group + Gruppe + + + + Collection + Samling + + + + Playlist + Spilleliste + + + + Automatic Playlist + Automatisk Spilleliste + + + + Station + Station + + + + Browse + Browse + + + + Search History + Søge historie + + + + My Music + Min Musik + + + + SuperCollection + SuperSamling + + + + Dashboard + Instrumentbræt + + + + Recently Played + Nyligt Afspillede + + + + Charts + Lister + + + + New Releases + + + + + Friends + Venner + + + + SpotifyConfig + + + Configure your Spotify account + + + + + Username or Facebook Email + + + + + Log In + + + + + Right click on any Tomahawk playlist to sync it to Spotify. + + + + + Select All + + + + + Sync Starred tracks to Loved tracks + + + + + High Quality Streams + + + + + Spotify playlists to keep in sync: + + + + + Delete Tomahawk playlist when removing synchronization + + + + + Username: + Brugernavn: + + + + Password: + Kodeord: + + + + SpotifyPlaylistUpdater + + + Delete associated Spotify playlist? + + + + + TemporaryPageItem + + + Copy Artist Link + + + + + Copy Album Link + + + + + Copy Track Link + + + + + Tomahawk::Accounts::AccountDelegate + + + Add Account + TIlføj konto + + + + Remove + + + + + %1 downloads + %1 downloads + + + + Online + Online + + + + Connecting... + Forbinder... + + + + Offline + Offline + + + + Tomahawk::Accounts::AccountModel + + + Manual Install Required + + + + + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 + + + + + Tomahawk::Accounts::GoogleWrapper + + + Configure this Google Account + Konfigurér denne Google Konto + + + + Google Address: + + + + + Enter your Google login to connect with your friends using Tomahawk! + Indtast dit Google login for at forbinde med dine venner der bruger Tomahawk + + + + username@gmail.com + brugernavn@gmail.com + + + + Tomahawk::Accounts::GoogleWrapperFactory + + + Connect to Google Talk to find your friends + Forbind til Google Talk for at finde dine venner + + + + Tomahawk::Accounts::GoogleWrapperSip + + + Enter Google Address + + + + + Add Friend + Tilføj Ven + + + + Enter Google Address: + Indtast Google Adresse: + + + + Tomahawk::Accounts::LastFmAccountFactory + + + Scrobble your tracks to last.fm, and find freely downloadable tracks to play + Scrobble dine numre til Last.FM og find numre der kan downloades gratis og afspilles + + + + Tomahawk::Accounts::LastFmConfig + + + Testing... + + + + + Test Login + + + + + Importing %1 + e.g. Importing 2012/01/01 + + + + + Importing History... + + + + + History Incomplete. Resume + Text on a button that resumes import + + + + + Playback History Imported + + + + + + Failed + Fejlede + + + + Success + Succes + + + + Could not contact server + Kunne ikke kontakte serveren + + + + Synchronizing... + + + + + Synchronization Finished + + + + + Tomahawk::Accounts::SpotifyAccount + + + Sync with Spotify + + + + + Re-enable syncing with Spotify + + + + + Create local copy + + + + + Subscribe to playlist changes + + + + + Re-enable playlist subscription + + + + + Stop subscribing to changes + + + + + Enable Spotify collaborations + + + + + Disable Spotify collaborations + + + + + Stop syncing with Spotify + + + + + Tomahawk::Accounts::SpotifyAccountConfig + + + Logging in... + + + + + Failed: %1 + + + + + Logged in as %1 + + + + + Log Out + + + + + + Log In + + + + + Tomahawk::Accounts::SpotifyAccountFactory + + + Play music from and sync your playlists with Spotify Premium + Afspil musik fra og synkronisere dine spillelister med Spotify Premium + + + + Tomahawk::Accounts::TwitterAccountFactory + + + Connect to your Twitter followers. + Forbind til dine Twitter følgere + + + + Tomahawk::Accounts::TwitterConfigWidget + + + + + Tweet! + Tweet! + + + + + Status: No saved credentials + Status: Ingen gemte legimitationsoplysninger + + + + + + Authenticate + Godkend + + + + + Status: Credentials saved for %1 + Status: Legimitationsoplysninger gemt for %1 + + + + + De-authenticate + + + + + + + + + + + Tweetin' Error + Tweetin' Fejl + + + + The credentials could not be verified. +You may wish to try re-authenticating. + Dine legimitationsoplysninger kunne ikke blive verificeret +Du kan prøve at godkende igen + + + + Status: Error validating credentials + + + + + Global Tweet + Global Tweet + + + + Direct Message + Direkte Besked + + + + Send Message! + Send Besked! + + + + @Mention + @Nævn + + + + Send Mention! + Send Nævnelse! + + + + You must enter a user name for this type of tweet. + + + + + Your saved credentials could not be loaded. +You may wish to try re-authenticating. + + + + + Your saved credentials could not be verified. +You may wish to try re-authenticating. + + + + + + There was an error posting your status -- sorry! + + + + + + Tweeted! + Tweeted + + + + Your tweet has been posted! + Dit tweet er blevet posted + + + + There was an error posting your direct message -- sorry! + + + + + Your message has been posted! + Din besked er blevet posted + + + + Tomahawk::Accounts::XmppAccountFactory + + + Log on to your Jabber/XMPP account to connect to your friends + + + + + Tomahawk::Accounts::ZeroconfAccount + + + + Local Network + + + + + Tomahawk::Accounts::ZeroconfFactory + + + Local Network + + + + + Automatically connect to Tomahawks on the local network + Automatisk forbind til Tomahawks på det lokale netværk + + + + Tomahawk::ContextMenu + + + &Play + &Afspil + + + + + + Add to &Queue + Tilføj til &Kø + + + + Continue Playback after this &Track + + + + + Stop Playback after this &Track + + + + + + &Love + &Elsk + + + + + + &Go to "%1" + + + + + + + Go to "%1" + + + + + &Copy Track Link + &Kopier Nummer Link + + + + Copy Album &Link + + + + + Copy Artist &Link + + + + + Un-&Love + + + + + &Delete Items + &Slet emner + + + + Properties... + + + + + &Delete Item + &Slet emne + + + + Tomahawk::DropJobNotifier + + + playlist + + + + + artist + + + + + track + + + + + album + + + + + Fetching %1 from database + Henter %1 fra database + + + + Parsing %1 %2 + + + + + Tomahawk::DynamicControlList + + + Click to collapse + + + + + Tomahawk::DynamicModel + + + + Could not find a playable track. + +Please change the filters or try again. + + + + + Failed to generate preview with the desired filters + + + + + Tomahawk::DynamicSetupWidget + + + Type: + Type: + + + + Generate + Generér + + + + Tomahawk::DynamicView + + + Add some filters above to seed this station! + + + + + Press Generate to get started! + + + + + Add some filters above, and press Generate to get started! + + + + + Tomahawk::DynamicWidget + + + Station ran out of tracks! + +Try tweaking the filters for a new set of songs to play. + + + + + Tomahawk::EchonestControl + + + + + + + + + is + er + + + + from user + fra bruger + + + + + No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings + + + + + similar to + minder om + + + + + + + + + + Less + Mindre + + + + + + + + + + More + Mere + + + + 0 BPM + 0 BPM + + + + 500 BPM + 500 BPM + + + + 0 secs + 0 sekunder + + + + 3600 secs + 3600 sekunder + + + + -100 dB + -100 dB + + + + 100 dB + 100 dB + + + + Major + Dur + + + + Minor + Mol + + + + C + C + + + + C Sharp + + + + + D + D + + + + E Flat + Es + + + + E + E + + + + F + F + + + + F Sharp + + + + + G + G + + + + A Flat + + + + + A + A + + + + B Flat + + + + + B + B + + + + Ascending + + + + + Descending + + + + + Tempo + + + + + Duration + + + + + Loudness + + + + + + Artist Familiarity + + + + + + Artist Hotttnesss + + + + + + Song Hotttnesss + + + + + Latitude + + + + + Longitude + + + + + Mode + + + + + Key + + + + + + Energy + + + + + + Danceability + + + + + is not + + + + + Studio + + + + + Live + + + + + Christmas + + + + + only by ~%1 + + + + + + similar to ~%1 + + + + + with genre ~%1 + + + + + + from no one + + + + + My Collection + + + + + from my radio + + + + + from %1 radio + + + + + Variety + + + + + Adventurousness + + + + + very low + + + + + low + + + + + moderate + + + + + high + + + + + very high + + + + + with %1 %2 + + + + + about %1 BPM + + + + + about %n minute(s) long + + + + + about %1 dB + + + + + at around %1%2 %3 + + + + + in %1 + + + + + in a %1 key + + + + + sorted in %1 %2 order + + + + + with a %1 mood + + + + + in a %1 style + + + + + where song type is %1 + + + + + where song type is not %1 + + + + + Tomahawk::GroovesharkParser + + + Error fetching Grooveshark information from the network! + + + + + Tomahawk::InfoSystem::ChartsPlugin + + + Top Overall + + + + + Artists + + + + + Albums + + + + + Tracks + + + + + Tomahawk::InfoSystem::FdoNotifyPlugin + + + Tomahawk is playing "%1" by %2%3. + + + + + on "%1" + + + + + Tomahawk::InfoSystem::LastFmInfoPlugin + + + Top Tracks + + + + + Loved Tracks + + + + + Hyped Tracks + + + + + Top Artists + + + + + Hyped Artists + + + + + Tomahawk::InfoSystem::NewReleasesPlugin + + + Albums + + + + + Tomahawk::InfoSystem::TwitterInfoPlugin + + + Listening to "%1" by %2 and loving it! %3 + + + + + Tomahawk::ItunesParser + + + Error fetching iTunes information from the network! + + + + + Tomahawk::JSPFLoader + + + New Playlist + + + + + Failed to save tracks + + + + + Some tracks in the playlist do not contain an artist and a title. They will be ignored. + + + + + XSPF Error + + + + + This is not a valid XSPF playlist. + + + + + Tomahawk::LatchManager + + + &Catch Up + + + + + + &Listen Along + + + + + Tomahawk::Playlist + + + Would you like to delete the playlist <b>"%2"</b>? + e.g. Would you like to delete the playlist named Foobar? + + + + + Delete + + + + + Tomahawk::Query + + + and + + + + + You + + + + + you + + + + + and + + + + + %n other(s) + + + + + %n people + + + + + loved this track + + + + + Tomahawk::RdioParser + + + Error fetching Rdio information from the network! + + + + + Tomahawk::ShortenedLinkParser + + + Network error parsing shortened link! + + + + + Tomahawk::SoundcloudParser + + + Track '%1' by %2 is not streamable. + + + + + Tomahawk::Source + + + + Scanning (%L1 tracks) + + + + + Scanning + + + + + Checking + + + + + Syncing + + + + + Importing + + + + + Saving (%1%) + + + + + Online + + + + + Offline + + + + + Tomahawk::SpotifyParser + + + Error fetching Spotify information from the network! + + + + + Tomahawk::XspfUpdater + + + Automatically update from XSPF + + + + + TomahawkApp + + + My Collection + + + + + TomahawkOAuthTwitter + + + Twitter PIN + + + + + After authenticating on Twitter's web site, +enter the displayed PIN number here: + + + + + TomahawkSettings + + + Local Network + + + + + TomahawkTrayIcon + + + &Stop Playback after current Track + + + + + + Hide Tomahawk Window + + + + + Show Tomahawk Window + + + + + Currently not playing. + + + + + Play + + + + + Pause + + + + + &Love + + + + + Un-&Love + + + + + &Continue Playback after current Track + + + + + TomahawkWindow + + + Tomahawk + + + + + Back + + + + + Go back one page + + + + + Forward + + + + + Go forward one page + + + + + + Hide Menu Bar + + + + + + Show Menu Bar + + + + + Search for any artist, album or song... + + + + + &Main Menu + + + + + XSPF Error + + + + + This is not a valid XSPF playlist. + + + + + Failed to save tracks + + + + + Some tracks in the playlist do not contain an artist and a title. They will be ignored. + + + + + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. + + + + + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. + + + + + Station + + + + + Create New Station + + + + + Name: + + + + + Playlist + + + + + Automatic Playlist + + + + + Pause + + + + + &Play + + + + + Authentication Error + + + + + Error connecting to SIP: Authentication failed! + + + + + %1 by %2 + track, artist name + + + + + %1 - %2 + current track, some window title + + + + + <h2><b>Tomahawk %1<br/>(%2)</h2> + + + + + <h2><b>Tomahawk %1</h2> + + + + + Copyright 2010 - 2013 + + + + + Thanks to: + + + + + About Tomahawk + + + + + TopTracksContext + + + Top Hits + + + + + TrackInfoWidget + + + Similar Tracks + + + + + Sorry, but we could not find similar tracks for this song! + + + + + You've listened to this track %n time(s). + + + + + You've never listened to this track before. + + + + + You first listened to it on %1. + + + + + You've listened to %1 %n time(s). + + + + + You've never listened to %1 before. + + + + + TrackView + + + Sorry, your filter '%1' did not match any results. + + + + + TransferStatusItem + + + from + streaming artist - track from friend + + + + + to + streaming artist - track to friend + + + + + TreeItemDelegate + + + Unknown + + + + + TreeModel + + + All Artists + + + + + + My Collection + + + + + + Collection of %1 + + + + + TreeView + + + Sorry, your filter '%1' did not match any results. + + + + + TwitterConfigWidget + + + Configure this Twitter account + + + + + The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. + + + + + Status: No saved credentials + + + + + Authenticate with Twitter + + + + + Twitter Connections + + + + + +If you only want to post tweets, you're done. + +If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! + +You can re-send a sync message at any time simply by sending another tweet using the button. + + + + + Select the kind of tweet you would like, then press the button to post it: + + + + + Global Tweet + + + + + @Mention + + + + + Direct Message + + + + + e.g. @tomahawk + + + + + Send Message + + + + + TwitterSipPlugin + + + Enter Twitter username + + + + + ViewManager + + + This playlist is empty! + + + + + After you have scanned your music collection you will find your tracks right here. + + + + + This collection is empty. + + + + + SuperCollection + + + + + Combined libraries of all your online friends + + + + + Recently Played Tracks + + + + + Recently played tracks from all your friends + + + + + Sorry, we could not find any recent plays! + + + + + WelcomeWidget + + + Recent Additions + + + + + Newest Stations & Playlists + + + + + Recently Played Tracks + + + + + Recently played tracks + + + + + No recently created playlists in your network. + + + + + Welcome to Tomahawk + + + + + WhatsHotWidget + + + Charts + + + + + WikipediaContext + + + Wikipedia + + + + + XMPPBot + + + +Terms for %1: + + + + + + No terms found, sorry. + + + + + +Hotttness for %1: %2 + + + + + + +Familiarity for %1: %2 + + + + + + +Lyrics for "%1" by %2: + +%3 + + + + + + XSPFLoader + + + Failed to parse contents of XSPF playlist + + + + + Some playlist entries were found without artist and track name, they will be omitted + + + + + Failed to fetch the desired playlist from the network, or the desired file does not exist + + + + + New Playlist + + + + + XmlConsole + + + Xml stream console + + + + + + Filter + + + + + Save log + + + + + Disabled + + + + + By JID + + + + + By namespace uri + + + + + By all attributes + + + + + Visible stanzas + + + + + Information query + + + + + Message + + + + + Presence + + + + + Custom + + + + + Close + + + + + Save XMPP log to file + + + + + OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt) + + + + + XmppConfigWidget + + + Xmpp Configuration + + + + + Configure this Xmpp account + + + + + Enter your Xmpp login to connect with your friends using Tomahawk! + + + + + Login Information + + + + + Xmpp ID: + + + + + e.g. user@example.com + + + + + Password: + + + + + An account with this name already exists! + + + + + Advanced Xmpp Settings + + + + + Server: + + + + + Port: + + + + + Lots of servers don't support this (e.g. GTalk, jabber.org) + + + + + Publish currently playing track + + + + + Enforce secure connection + + + + + XmppSipPlugin + + + User Interaction + + + + + Host is unknown + + + + + Item not found + + + + + Authorization Error + + + + + Remote Stream Error + + + + + Remote Connection failed + + + + + Internal Server Error + + + + + System shutdown + + + + + Conflict + + + + + Unknown + + + + + Do you want to add <b>%1</b> to your friend list? + + + + + No Compression Support + + + + + Enter Jabber ID + + + + + No Encryption Support + + + + + No Authorization Support + + + + + No Supported Feature + + + + + Add Friend + + + + + Enter Xmpp ID: + + + + + Add Friend... + + + + + XML Console... + + + + + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! + + + + + Authorize User + + + + + ZeroconfConfig + + + Local Network configuration + + + + + This plugin will automatically find other users running Tomahawk on your local network + + + + + Connect automatically when Tomahawk starts + + + + \ No newline at end of file diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index de18594afc..f4d157e85a 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -3371,13 +3371,13 @@ Tomahawk auf Twitter's Website authentifiziert hast: - + Hide Menu Bar Menüleiste ausblenden - + Show Menu Bar Menüleiste einblenden @@ -3392,114 +3392,114 @@ Tomahawk auf Twitter's Website authentifiziert hast: Haupt&menü - + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 0681ab678d..9a6803c80e 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -3371,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Απόκρυψη Γραμμής Μενού - + Show Menu Bar @@ -3392,114 +3392,114 @@ enter the displayed PIN number here: - + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 6d98c92c0b..da27482089 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -3376,13 +3376,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Hide Menu Bar - + Show Menu Bar Show Menu Bar @@ -3397,114 +3397,114 @@ enter the displayed PIN number here: &Main Menu - + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index f719e71db1..375114bd8f 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -682,7 +682,7 @@ conectarse a usted y transmitir música? Username: - Usuario: + Nombre de usuario: @@ -2843,22 +2843,22 @@ Intente ajustar los filtros para reproducir nuevas canciones. is not - + no es Studio - + Estudio Live - + En vivo Christmas - + Navidad @@ -2985,12 +2985,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. where song type is %1 - + donde el tipo de canción es %1 where song type is not %1 - + donde el tipo de canción no es %1 @@ -3376,13 +3376,13 @@ introduzca su número PIN aquí: - + Hide Menu Bar Esconder barra de menú - + Show Menu Bar Mostrar barra de menú @@ -3397,114 +3397,114 @@ introduzca su número PIN aquí: &Menú principal - + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Nueva estación - + Create New Station Crear nueva estación - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index a44423b633..adcb2c53ea 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -3379,13 +3379,13 @@ anna siellä näytetty PIN-koodi tähän: - + Hide Menu Bar Piilota valikkorivi - + Show Menu Bar Näytä valikkorivi @@ -3400,114 +3400,114 @@ anna siellä näytetty PIN-koodi tähän: &Päävalikko - + XSPF Error XSPF-virhe - + This is not a valid XSPF playlist. Tämä ei ole kelvollinen XSPF-soittolista. - + Failed to save tracks Kappaleiden tallentaminen epäonnistui - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010–2013 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 19a916597d..785a4a77a1 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -3373,13 +3373,13 @@ saisissez le numéro PIN ici : - + Hide Menu Bar Masquer la barre de menu - + Show Menu Bar Afficher la barre de menu @@ -3394,114 +3394,114 @@ saisissez le numéro PIN ici : &Menu Principal - + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Droit d'auteur 2010 - 2013 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index a0f687b31a..7af2eb310b 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -3373,13 +3373,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Agochar a barra de menú - + Show Menu Bar Mostrar a barra de menú @@ -3394,115 +3394,115 @@ enter the displayed PIN number here: Menú &principal - + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autenticación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index f328d222a4..7e8e8ed6c6 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 8e9af48200..4534970132 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: - + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk Tomahawkról diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 7e6491412d..e3b6b244a0 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Nascondi barra menu - + Show Menu Bar Mostra barra menu @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: &Menu principale - + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play Ri&produci - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 18e28c71d5..9acff70ee3 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -3376,13 +3376,13 @@ enter the displayed PIN number here: - + Hide Menu Bar メニューバーを隠す - + Show Menu Bar メニューバーを表示 @@ -3397,114 +3397,114 @@ enter the displayed PIN number here: メインメニュー - + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 3f1af4bdbd..8bbd3f444a 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: - + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Autorinės teisės 2010 - 2013 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 7239876be7..a32ca3a5f5 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -3373,13 +3373,13 @@ wprowadź pokazany numer PIN tutaj: - + Hide Menu Bar - + Show Menu Bar @@ -3394,114 +3394,114 @@ wprowadź pokazany numer PIN tutaj: - + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 5d45507982..534a9040df 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -3373,13 +3373,13 @@ colocar o número PIN mostrado aqui: - + Hide Menu Bar Esconder barra de menu - + Show Menu Bar Mostrar barra de menu @@ -3394,114 +3394,114 @@ colocar o número PIN mostrado aqui: &Menu principal - + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 5852b3fe4a..6d50f57c4a 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -94,12 +94,12 @@ connect and stream from you? &Listen Along - &Слушать Его + &Слушать Вместе Stop &Listening Along - &Прекратить его слушать + &Прекратить Слушать Вместе @@ -110,13 +110,13 @@ connect and stream from you? &Listen Privately - &Слушать Cамому + &Listen Privately &Listen Publicly - &Слушать со всеми + &Listen Publicly @@ -1139,7 +1139,7 @@ connect and stream from you? Just a regular old playlist... Give it a name, drag in some tracks, and go! - Только регулярный старый плейлист ... Дайте ему имя, перетащитьте какие-нибудь пески, и можно слушать! + Старый плейлист ... Дайте ему имя, перетащите какие-нибудь песни, и можно слушать! @@ -1320,7 +1320,7 @@ connect and stream from you? Status Updaters - Статус обновления + Статус Обновления @@ -1545,7 +1545,7 @@ connect and stream from you? Send reports after Tomahawk crashed - Отправлять отчеты при ошибках Tomahawk + Отправлять отчеты об ошибках Tomahawk @@ -1912,7 +1912,7 @@ connect and stream from you? Dashboard - Панель + Главная Панель @@ -2289,7 +2289,7 @@ connect and stream from you? Status: No saved credentials - Статус: Нет сохраненных учетных данных + Статус: Нет сохраненных учетных записей @@ -2302,7 +2302,7 @@ connect and stream from you? Status: Credentials saved for %1 - Статус: Полномочия сохранены для %1 + Статус: Вход выполнен для %1 @@ -3129,7 +3129,7 @@ Try tweaking the filters for a new set of songs to play. &Listen Along - &Слушать Его + &Слушать Вместе @@ -3376,13 +3376,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Спрятать Строку Меню - + Show Menu Bar Показать Строку Меню @@ -3397,114 +3397,114 @@ enter the displayed PIN number here: &Главное меню - + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые песни в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. Убедитесь, что у вас есть подходящий Phonon backend и необходимые плагины установлены. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. - + Station Станция - + Create New Station Создать Новую Станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Авторское право 2010 - 2013 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3629,7 +3629,7 @@ enter the displayed PIN number here: Status: No saved credentials - Статус: Нет сохраненных учетных данных + Статус: Нет сохраненных учетных записей @@ -3649,11 +3649,12 @@ If you only want to post tweets, you're done. If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! You can re-send a sync message at any time simply by sending another tweet using the button. - Если вы хотите посылать твиты, это все. + +If you only want to post tweets, you're done. -Если вы хотите подключиться через Tomahawk к вашим друзьями через Twitter, выбрать тип чириканье и нажмите на кнопку ниже, чтобы отправить сообщение синхронизации. Вы оба должны быть следующими друг за другом, как прямого сообщения используются. Тогда не (очень) пациента - это может занять несколько минут! +If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! -Вы можете повторно отправить сообщение синхронизации в любое время, просто отправив другой твиты с помощью кнопки. +You can re-send a sync message at any time simply by sending another tweet using the button. diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 54094fdfaf..704b7f240b 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -3373,13 +3373,13 @@ anger du PIN-koden här: - + Hide Menu Bar - + Show Menu Bar @@ -3394,114 +3394,114 @@ anger du PIN-koden här: - + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Tyvärr! Det uppstod ett problem med kontakten till ditt ljudkort eller det önskade spåret. Nuvarande spår kommer att hoppas över. Kontrollera att du har en lämplig Phonon-backend och alla nödvändiga plugins installerade - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist Spellista - + Automatic Playlist Automatisk spellista - + Pause Paus - + &Play - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! Anslutningsfel till SIP: Autentisering misslyckades! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Tack till: - + About Tomahawk Om Tomahawk diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 8e1b87f94b..7ab48d6eb7 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: - + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index b526e86440..5300de9c36 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -3374,13 +3374,13 @@ enter the displayed PIN number here: - + Hide Menu Bar 隐藏菜单栏 - + Show Menu Bar 显示菜单栏 @@ -3395,114 +3395,114 @@ enter the displayed PIN number here: 主菜单 - + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 版权所有 2010 - 2013 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index c629e68d6e..056c535c80 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -3363,13 +3363,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3384,114 +3384,114 @@ enter the displayed PIN number here: - + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk From 7c462f8ff079b4927dd81afa2180145a3e864a59 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 12 Jan 2013 04:35:14 +0100 Subject: [PATCH 211/310] * Get rid of qDebug usage in TreeView. --- src/libtomahawk/playlist/TreeView.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/TreeView.cpp b/src/libtomahawk/playlist/TreeView.cpp index 53c7572ab3..9b314a6a11 100644 --- a/src/libtomahawk/playlist/TreeView.cpp +++ b/src/libtomahawk/playlist/TreeView.cpp @@ -111,7 +111,7 @@ void TreeView::setModel( QAbstractItemModel* model ) { Q_UNUSED( model ); - qDebug() << "Explicitly use setPlaylistModel instead"; + tDebug() << "Explicitly use setPlaylistModel instead"; Q_ASSERT( false ); } @@ -335,7 +335,7 @@ TreeView::startDrag( Qt::DropActions supportedActions ) if ( indexes.count() == 0 ) return; - qDebug() << "Dragging" << indexes.count() << "indexes"; + tDebug( LOGVERBOSE ) << "Dragging" << indexes.count() << "indexes"; QMimeData* data = m_proxyModel->mimeData( indexes ); if ( !data ) return; From 47439baa377a4a45f35d86c797df9bab6851754b Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 12 Jan 2013 18:20:08 +0100 Subject: [PATCH 212/310] Draw SocialWidget, STPD and AccountsWidget the same way. --- src/SocialWidget.cpp | 27 +++++++------------ .../widgets/SourceTreePopupDialog.cpp | 6 ++--- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/SocialWidget.cpp b/src/SocialWidget.cpp index caed845adf..ae0d319a4d 100644 --- a/src/SocialWidget.cpp +++ b/src/SocialWidget.cpp @@ -41,11 +41,11 @@ SocialWidget::SocialWidget( QWidget* parent ) , m_parentRect( parent->rect() ) { ui->setupUi( this ); -#ifndef Q_OS_WIN - setWindowFlags( Qt::FramelessWindowHint ); //this causes ugly black shadows on Windows - setWindowFlags( Qt::Popup ); -#endif + setWindowFlags( Qt::Popup | Qt::FramelessWindowHint ); + + setAutoFillBackground( false ); setAttribute( Qt::WA_TranslucentBackground, true ); + setAttribute( Qt::WA_NoSystemBackground, true ); TomahawkUtils::unmarginLayout( layout() ); @@ -149,20 +149,11 @@ SocialWidget::paintEvent( QPaintEvent* event ) outline.lineTo( r.right() - ARROW_HEIGHT * 3, r.bottom()+1 + ARROW_HEIGHT ); outline.lineTo( r.right() - ARROW_HEIGHT * 4, r.bottom()+1 ); - QPainter p( this ); - p.setRenderHint( QPainter::Antialiasing ); - p.setBackgroundMode( Qt::TransparentMode ); - - QPen pen( TomahawkUtils::Colors::BORDER_LINE ); - pen.setWidth( 2 ); - p.setPen( pen ); - p.drawPath( outline ); - - p.setOpacity( TomahawkUtils::POPUP_OPACITY ); - p.fillPath( outline, TomahawkUtils::Colors::POPUP_BACKGROUND ); - - QWidget::paintEvent( event ); - return; + TomahawkUtils::drawCompositedPopup( this, + outline, + TomahawkUtils::Colors::BORDER_LINE, + TomahawkUtils::Colors::POPUP_BACKGROUND, + TomahawkUtils::POPUP_OPACITY ); } diff --git a/src/libtomahawk/widgets/SourceTreePopupDialog.cpp b/src/libtomahawk/widgets/SourceTreePopupDialog.cpp index c8a91a69ba..e0a406bff6 100644 --- a/src/libtomahawk/widgets/SourceTreePopupDialog.cpp +++ b/src/libtomahawk/widgets/SourceTreePopupDialog.cpp @@ -49,13 +49,11 @@ SourceTreePopupDialog::SourceTreePopupDialog() #ifndef ENABLE_HEADLESS setParent( QApplication::activeWindow() ); #endif -#ifndef Q_OS_WIN - setWindowFlags( Qt::FramelessWindowHint ); - setWindowFlags( Qt::Popup ); -#endif + setWindowFlags( Qt::Popup | Qt::FramelessWindowHint ); setAutoFillBackground( false ); setAttribute( Qt::WA_TranslucentBackground, true ); + setAttribute( Qt::WA_NoSystemBackground, true ); //setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); From 1b466d725649adc1df271ad8bdbf77722ff3924e Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 12 Jan 2013 21:26:31 +0100 Subject: [PATCH 213/310] Remove obsolete Windows hacks. --- src/SocialWidget.cpp | 4 +--- src/sourcetree/SourceTreeView.cpp | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/SocialWidget.cpp b/src/SocialWidget.cpp index ae0d319a4d..e9085a7157 100644 --- a/src/SocialWidget.cpp +++ b/src/SocialWidget.cpp @@ -242,9 +242,7 @@ SocialWidget::onGeometryUpdate() QPoint position( m_position - QPoint( size().width(), size().height() ) + QPoint( 2 + ARROW_HEIGHT * 3, 0 ) ); -#ifdef Q_OS_WIN - position.ry() -= 18/*margins I guess*/ + ARROW_HEIGHT; -#endif + if ( position != pos() ) { move( position ); diff --git a/src/sourcetree/SourceTreeView.cpp b/src/sourcetree/SourceTreeView.cpp index f8145d9ac3..41a572e1c5 100644 --- a/src/sourcetree/SourceTreeView.cpp +++ b/src/sourcetree/SourceTreeView.cpp @@ -377,9 +377,6 @@ SourceTreeView::deletePlaylist( const QModelIndex& idxIn ) PlaylistItem* item = itemFromIndex< PlaylistItem >( idx ); playlist_ptr playlist = item->playlist(); QPoint rightCenter = viewport()->mapToGlobal( visualRect( idx ).topRight() + QPoint( 0, visualRect( idx ).height() / 2 ) ); -#ifdef Q_OS_WIN - rightCenter = QApplication::activeWindow()->mapFromGlobal( rightCenter ); -#endif if ( playlist->hasCustomDeleter() ) { From b6bed8203cef378c1674bc9541d87da2a9a34d12 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sun, 13 Jan 2013 01:16:45 +0100 Subject: [PATCH 214/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 14 +++--- lang/tomahawk_bg.ts | 14 +++--- lang/tomahawk_bn_IN.ts | 14 +++--- lang/tomahawk_ca.ts | 14 +++--- lang/tomahawk_cs.ts | 14 +++--- lang/tomahawk_da.ts | 102 ++++++++++++++++++++--------------------- lang/tomahawk_de.ts | 14 +++--- lang/tomahawk_el.ts | 14 +++--- lang/tomahawk_en.ts | 14 +++--- lang/tomahawk_es.ts | 74 +++++++++++++++--------------- lang/tomahawk_fi.ts | 14 +++--- lang/tomahawk_fr.ts | 14 +++--- lang/tomahawk_gl.ts | 14 +++--- lang/tomahawk_hi_IN.ts | 14 +++--- lang/tomahawk_hu.ts | 14 +++--- lang/tomahawk_it.ts | 14 +++--- lang/tomahawk_ja.ts | 14 +++--- lang/tomahawk_lt.ts | 14 +++--- lang/tomahawk_pl.ts | 14 +++--- lang/tomahawk_pt_BR.ts | 14 +++--- lang/tomahawk_ru.ts | 14 +++--- lang/tomahawk_sv.ts | 14 +++--- lang/tomahawk_tr.ts | 14 +++--- lang/tomahawk_zh_CN.ts | 14 +++--- lang/tomahawk_zh_TW.ts | 14 +++--- 25 files changed, 249 insertions(+), 249 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 66968d6181..03f7eb5d74 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -1636,17 +1636,17 @@ connect and stream from you? تويت (Tweet) - + Listening to "%1" by %2. %3 إنني أستمع إلى "%1" من قبل %2. %3 - + Listening to "%1" by %2 on "%3". %4 إنني أستمع إلى "%1" من قبل %2 على "%3". %4 - + %1 characters left تبقى %1 حروف @@ -1836,23 +1836,23 @@ connect and stream from you? إذاعة - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? هل ترغب في حذف %1 <b>"%2"</b>؟ - + Delete احذف - + Save XSPF حفظ XSPF - + Playlists (*.xspf) قوائم أغاني (*.xspf) diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index da5539e5d0..fb6fb490aa 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -1645,17 +1645,17 @@ Tomahawk създаде доклад относно това и изпращай Чурулик - + Listening to "%1" by %2. %3 "%1" от %2, %3 - + Listening to "%1" by %2 on "%3". %4 "%1" от %2, от %3, %4 - + %1 characters left Остават още %1 символа @@ -1846,23 +1846,23 @@ Tomahawk създаде доклад относно това и изпращай станция - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Наистина ли желаеш да изтриеш %1 <b>''%2" </b> - + Delete Изтрий - + Save XSPF Запази XSPF - + Playlists (*.xspf) Списъци (*.xspf) diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index b69087cfe9..2517dea5ac 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -1633,17 +1633,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1833,23 +1833,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF - + Playlists (*.xspf) diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 513b3fd4a6..56eab8ed46 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -1634,17 +1634,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 Escoltant "%1" de %2. %3 - + Listening to "%1" by %2 on "%3". %4 Escoltant "%1" de %2 de "%3". %4 - + %1 characters left %1 caràcters restants @@ -1834,23 +1834,23 @@ connect and stream from you? emissora - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Voleu esborrar %1 <b>"%2"</b>? - + Delete - + Save XSPF Desa com XSPF - + Playlists (*.xspf) Llistes de reproducció (*.xspf) diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 614612b789..aaae8db1fc 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -1635,17 +1635,17 @@ se s vámi spojil? Zpráva - + Listening to "%1" by %2. %3 Poslouchá "%1" od %2, %3 - + Listening to "%1" by %2 on "%3". %4 Poslouchá "%1" od %2 na "%3", %4 - + %1 characters left Zbývá %1 znaků @@ -1835,23 +1835,23 @@ se s vámi spojil? Stanice - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Chcete smazat %1 <b>"%2"</b>? - + Delete Smazat - + Save XSPF Uložit XSPF - + Playlists (*.xspf) Seznamy skladeb (*.xspf) diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts index f92ecd32c0..da43b4a893 100644 --- a/lang/tomahawk_da.ts +++ b/lang/tomahawk_da.ts @@ -1634,17 +1634,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1834,23 +1834,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF Gem XSPF - + Playlists (*.xspf) Spilleliste (*.xspf) @@ -2758,27 +2758,27 @@ Try tweaking the filters for a new set of songs to play. Ascending - + Stigende Descending - + Faldende Tempo - + Tempo Duration - + Varighed Loudness - + Lydstyrke @@ -2801,12 +2801,12 @@ Try tweaking the filters for a new set of songs to play. Latitude - + Breddegrad Longitude - + Længdegrad @@ -2822,7 +2822,7 @@ Try tweaking the filters for a new set of songs to play. Energy - + Energi @@ -2870,12 +2870,12 @@ Try tweaking the filters for a new set of songs to play. from no one - + fra ingen My Collection - + Min Samling @@ -2885,7 +2885,7 @@ Try tweaking the filters for a new set of songs to play. from %1 radio - + fra %1 radio @@ -2925,12 +2925,12 @@ Try tweaking the filters for a new set of songs to play. with %1 %2 - + med %1 %2 about %1 BPM - + ca. %1 BPM @@ -2950,12 +2950,12 @@ Try tweaking the filters for a new set of songs to play. in %1 - + i %1 in a %1 key - + i %1 @@ -3140,22 +3140,22 @@ Try tweaking the filters for a new set of songs to play. and - + og You - + Dig you - + dig and - + og @@ -3170,7 +3170,7 @@ Try tweaking the filters for a new set of songs to play. loved this track - + elskede dette nummer @@ -3203,17 +3203,17 @@ Try tweaking the filters for a new set of songs to play. Scanning (%L1 tracks) - + Scanner (%L1 numre) Scanning - + Scanner Checking - + Checker @@ -3228,7 +3228,7 @@ Try tweaking the filters for a new set of songs to play. Saving (%1%) - + Gemmer (%1%) @@ -3262,7 +3262,7 @@ Try tweaking the filters for a new set of songs to play. My Collection - + Min Samling @@ -3298,12 +3298,12 @@ enter the displayed PIN number here: Hide Tomahawk Window - + Skjul Tomahawk Vindue Show Tomahawk Window - + Vis Tomahawk Vindue @@ -3313,12 +3313,12 @@ enter the displayed PIN number here: Play - + Afspil Pause - + Pause @@ -3341,7 +3341,7 @@ enter the displayed PIN number here: Tomahawk - + Tomahawk @@ -3388,17 +3388,17 @@ enter the displayed PIN number here: XSPF Error - + XSPF Fejl This is not a valid XSPF playlist. - + Dette er ikke en gyldig XSPF spilleliste Failed to save tracks - + Fejlede i at gemme numrene @@ -3423,12 +3423,12 @@ enter the displayed PIN number here: Create New Station - + Lav Ny Station Name: - + Navn: @@ -3443,7 +3443,7 @@ enter the displayed PIN number here: Pause - + Pause @@ -3470,7 +3470,7 @@ enter the displayed PIN number here: %1 - %2 current track, some window title - + %1 - %2 @@ -3503,7 +3503,7 @@ enter the displayed PIN number here: Top Hits - + Top Hits @@ -3572,7 +3572,7 @@ enter the displayed PIN number here: Unknown - + Ukendt @@ -3580,19 +3580,19 @@ enter the displayed PIN number here: All Artists - + Alle Kunstnere My Collection - + Min Samling Collection of %1 - + Samling af %1 @@ -3608,7 +3608,7 @@ enter the displayed PIN number here: Configure this Twitter account - + Konfigurer denne Twitter konto @@ -3648,7 +3648,7 @@ You can re-send a sync message at any time simply by sending another tweet using Global Tweet - + Global Tweet diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index f4d157e85a..f2b536f2de 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -1635,17 +1635,17 @@ erlauben sich mit dir zu verbinden? Tweet - + Listening to "%1" by %2. %3 Hört "%1" von %2, %3 - + Listening to "%1" by %2 on "%3". %4 Hört "%1" von %2 auf "%3", %4 - + %1 characters left %1 Zeichen übrig @@ -1835,23 +1835,23 @@ erlauben sich mit dir zu verbinden? Station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Möchtest du die %1 <b>"%2"</b> löschen? - + Delete Löschen - + Save XSPF XSPF speichern - + Playlists (*.xspf) Playlisten (*.xspf) diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 9a6803c80e..9fc6a51c54 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -1634,17 +1634,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1834,23 +1834,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Θέλετε να διαγράψετε την %1 <b>"%2"</b>; - + Delete Διαγραφή - + Save XSPF Αποθήκευση XSPF - + Playlists (*.xspf) Λίστες Αναπαραγωγής (*.xspf) diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index da27482089..e585d466cc 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -1638,17 +1638,17 @@ connect and stream from you? Tweet - + Listening to "%1" by %2. %3 Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 Listening to "%1" by %2 on "%3". %4 - + %1 characters left %1 characters left @@ -1838,23 +1838,23 @@ connect and stream from you? station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Would you like to delete the %1 <b>"%2"</b>? - + Delete Delete - + Save XSPF Save XSPF - + Playlists (*.xspf) Playlists (*.xspf) diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 375114bd8f..c23718b76e 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -109,7 +109,7 @@ conectarse a usted y transmitir música? &Listen Privately - &Modo privado + &Escuchar en privado @@ -195,12 +195,12 @@ conectarse a usted y transmitir música? Hide Menu Bar - Esconder barra de menú + Ocultar barra de menús Diagnostics... - Diagnósticos... + Diagnósticos… @@ -220,7 +220,7 @@ conectarse a usted y transmitir música? Check For Updates... - Buscar actualizaciones... + Buscar actualizaciones… @@ -389,13 +389,13 @@ conectarse a usted y transmitir música? Create new Station - Nueva estación + Crear estación nueva New Station - Nueva estación + Estación nueva @@ -677,7 +677,7 @@ conectarse a usted y transmitir música? Scrobble tracks to Last.fm - Hacer scrobble en Last.fm + Enviar las pistas a Last.fm @@ -736,7 +736,7 @@ conectarse a usted y transmitir música? Enter URL... - Introducir URL... + Introducir URL… @@ -1151,7 +1151,7 @@ conectarse a usted y transmitir música? New Playlist... - Nueva lista de reproducción... + Lista de reproducción nueva… @@ -1638,17 +1638,17 @@ y estaciones basadas en sus gustos personales. Tweet - + Listening to "%1" by %2. %3 Escuchando "%1" de %2.%3 - + Listening to "%1" by %2 on "%3". %4 Escuchando "%1" de %2 en "%3". %4 - + %1 characters left %1 caracteres restantes @@ -1838,23 +1838,23 @@ y estaciones basadas en sus gustos personales. estación - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? ¿Borrar lista de reproducción %1 <b>"%2"</b>? - + Delete Eliminar - + Save XSPF Guardar XSPF - + Playlists (*.xspf) Listas de reproducción (*.xspf) @@ -1982,7 +1982,7 @@ y estaciones basadas en sus gustos personales. Username: - Usuario: + Nombre de usuario: @@ -2116,7 +2116,7 @@ y estaciones basadas en sus gustos personales. Scrobble your tracks to last.fm, and find freely downloadable tracks to play - Hacer scrobble en Last.fm y encontrar canciones gratuitas + Haga «scrobbling» de sus pistas a Last.fm, y encuentre pistas gratuitas para reproducir @@ -2124,7 +2124,7 @@ y estaciones basadas en sus gustos personales. Testing... - Probando conexión... + Probando… @@ -2140,7 +2140,7 @@ y estaciones basadas en sus gustos personales. Importing History... - Importando historial... + Importando el historial… @@ -2172,7 +2172,7 @@ y estaciones basadas en sus gustos personales. Synchronizing... - Sincronizando... + Sincronizando… @@ -2233,7 +2233,7 @@ y estaciones basadas en sus gustos personales. Logging in... - Iniciando sesión... + Iniciando sesión… @@ -2504,7 +2504,7 @@ Deberá volverse a autenticar. Properties... - Propiedades... + Propiedades… @@ -2609,7 +2609,7 @@ Por favor, cambie los filtros o inténtelo de nuevo. Station ran out of tracks! Try tweaking the filters for a new set of songs to play. - La estación se ha quedado sin pistas + La estación se ha quedado sin pistas. Intente ajustar los filtros para reproducir nuevas canciones. @@ -3029,12 +3029,12 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk is playing "%1" by %2%3. - Tomahawk está reproduciendo "%1" de %2%3. + Tomahawk está reproduciendo «%1» de %2%3. on "%1" - en "%1" + en «%1» @@ -3078,7 +3078,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Listening to "%1" by %2 and loving it! %3 - Escuchando "%1" de %2 y me encanta! %3 + Escuchando «%1» de %2 y ¡me encanta! %3 @@ -3378,18 +3378,18 @@ introduzca su número PIN aquí: Hide Menu Bar - Esconder barra de menú + Ocultar barra de menús Show Menu Bar - Mostrar barra de menú + Mostrar barra de menús Search for any artist, album or song... - Buscar un artista, álbum o pista... + Buscar un artista, álbum o pista… @@ -3429,12 +3429,12 @@ introduzca su número PIN aquí: Station - Nueva estación + Estación Create New Station - Crear nueva estación + Crear estación nueva @@ -3961,7 +3961,7 @@ Letras de "%1" por %2: Xmpp ID: - ID XMPP: + ID de XMPP: @@ -4079,12 +4079,12 @@ Letras de "%1" por %2: No Encryption Support - Encriptación no soportada + Sin soporte de cifrado No Authorization Support - Autorización no soportada + Sin soporte de autorización @@ -4104,12 +4104,12 @@ Letras de "%1" por %2: Add Friend... - Añadir amigo... + Añadir amigo… XML Console... - Consola XML... + Consola XML… diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index adcb2c53ea..ca616a1c2d 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -1640,17 +1640,17 @@ käyttäjäradion käyttöönottamiseksi Twiittaa - + Listening to "%1" by %2. %3 Kuuntelen ”%1” artistilta %2. %3 - + Listening to "%1" by %2 on "%3". %4 Kuuntelen ”%1” artistilta %2, albumilta ”%3”. %4 - + %1 characters left %1 merkkiä jäljellä @@ -1840,23 +1840,23 @@ käyttäjäradion käyttöönottamiseksi aseman - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Haluatko poistaa %1 <b>”%2”</b>? - + Delete Poista - + Save XSPF Tallenna XSPF - + Playlists (*.xspf) Soittolistat (*.xspf) diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 785a4a77a1..7bc4253eb5 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -1635,17 +1635,17 @@ de se connecter et streamer de vous? Tweet - + Listening to "%1" by %2. %3 J'écoute "%1" par %2. %3 - + Listening to "%1" by %2 on "%3". %4 J'écoute "%1" par %2 sur "%3". %4 - + %1 characters left %1 caractères restants @@ -1835,23 +1835,23 @@ de se connecter et streamer de vous? station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Voulez-vous supprimer la %1 <b>"%2"</b>? - + Delete Supprimer - + Save XSPF Enregistrer XSPF - + Playlists (*.xspf) Listes de lecture (*.xspf) diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 7af2eb310b..a159a9d469 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -1634,17 +1634,17 @@ connect and stream from you? Chío - + Listening to "%1" by %2. %3 Escoitando a «%1» por %2. %3 - + Listening to "%1" by %2 on "%3". %4 Escoitando a «%1» por %2 en «%3». %4 - + %1 characters left quedan %1 caracteres @@ -1835,23 +1835,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Queres eliminar a %1 que se chama <b>«%2»</b>? - + Delete Borrar - + Save XSPF Gardar XSPF - + Playlists (*.xspf) Listas de reprodución (*.xspf) diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 7e8e8ed6c6..971aae9a1e 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -1633,17 +1633,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1833,23 +1833,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF - + Playlists (*.xspf) diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 4534970132..4c7d0c24d9 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -1633,17 +1633,17 @@ connect and stream from you? Tweet - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1833,23 +1833,23 @@ connect and stream from you? rádióállomás - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete Törlés - + Save XSPF XSPF mentése - + Playlists (*.xspf) Lejátszólisták (*.xspf) diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index e3b6b244a0..2560cee3dc 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -1633,17 +1633,17 @@ connect and stream from you? Tweetta - + Listening to "%1" by %2. %3 Ascoltando "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 Ascoltando "%1" di %2. %3".%4 - + %1 characters left %1 caratteri rimanenti @@ -1833,23 +1833,23 @@ connect and stream from you? stazione - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Vuoi cancellare %1 <b>"%2"</b>? - + Delete Cancella - + Save XSPF Salva XSPF - + Playlists (*.xspf) Playlist (*.xspf) diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 9acff70ee3..194365b4cb 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -1638,17 +1638,17 @@ connect and stream from you? ツイート - + Listening to "%1" by %2. %3 %2の"%1"を聴いています。%3 - + Listening to "%1" by %2 on "%3". %4 %2の"%3"の"%1"を聴いています。%4 - + %1 characters left 残り%1文字 @@ -1838,23 +1838,23 @@ connect and stream from you? ステーション - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? <b>"%2"</b>と言う%1を削除しますか? - + Delete 削除 - + Save XSPF XSPFを保存する - + Playlists (*.xspf) プレイリスト (*.xspf) diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 8bbd3f444a..1f3e6a7c34 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -1633,17 +1633,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 Klausosi "%1", atliekamą %2. %3 - + Listening to "%1" by %2 on "%3". %4 Klausosi "%1", atliekamą %2 iš albumo "%3". %4 - + %1 characters left Liko simbolių: %1 @@ -1833,23 +1833,23 @@ connect and stream from you? stotis - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Ar norite pašalinti %1 <b>"%2"</b>? - + Delete Pašalinti - + Save XSPF Išsaugoti XSPF - + Playlists (*.xspf) Grojaraščiai (*.xspf) diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index a32ca3a5f5..bcdeaee841 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -1635,17 +1635,17 @@ połączyć się i strumieniować od ciebie? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 Słucham "%1" wykonawcy %2 z "%3". %4 - + %1 characters left pozostało znaków: %1 @@ -1835,23 +1835,23 @@ połączyć się i strumieniować od ciebie? stacja - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF Zapisz XSPF - + Playlists (*.xspf) Listy (*.xspf) diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 534a9040df..54cee916c5 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -1635,17 +1635,17 @@ se conecte e faça o stream de você? Tweet - + Listening to "%1" by %2. %3 Ouvindo "%1" de %2. %3 - + Listening to "%1" by %2 on "%3". %4 Ouvindo "%1" de %2 em "%3". %4 - + %1 characters left %1 caracteres restantes @@ -1835,23 +1835,23 @@ se conecte e faça o stream de você? estação - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Gostaria de deletar a %1 <b>"%2"</b>? - + Delete Excluir - + Save XSPF Salvar XSPF - + Playlists (*.xspf) Playlists (*.xspf) diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 6d50f57c4a..aeef297f80 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -1641,17 +1641,17 @@ connect and stream from you? Твитнуть - + Listening to "%1" by %2. %3 Прослушивание "%1" %2. %3 - + Listening to "%1" by %2 on "%3". %4 Слушает Песню "%1" %2 альбома "%3". %4 - + %1 characters left Осталось %1 символов @@ -1841,23 +1841,23 @@ connect and stream from you? станция - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Вы хотите удалить %1 <b>"%2"</b>? - + Delete Удалить - + Save XSPF Сохранить XSPF - + Playlists (*.xspf) Плейлисты (*.xspf) diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 704b7f240b..94932113c0 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -1635,17 +1635,17 @@ ansluta och strömma från dig? Tweet - + Listening to "%1" by %2. %3 Lyssnar på "%1" av %2. %3 - + Listening to "%1" by %2 on "%3". %4 Lyssnar på "%1" av %2 på "%3". %4 - + %1 characters left %1 bokstäver kvar @@ -1835,23 +1835,23 @@ ansluta och strömma från dig? station - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? Vill du ta bort %1 <b>"%2"</b>? - + Delete Ta bort - + Save XSPF Spara XSPF - + Playlists (*.xspf) Spellistor (*.xspf) diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 7ab48d6eb7..458f906b4f 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -1633,17 +1633,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1833,23 +1833,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF - + Playlists (*.xspf) diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 5300de9c36..2cc171ed3d 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -1636,17 +1636,17 @@ connect and stream from you? Tweet - + Listening to "%1" by %2. %3 正在听 %2. %3 的 "%1"。 - + Listening to "%1" by %2 on "%3". %4 正在听 "%1",来自 %2 的专辑 "%3"。 %4 - + %1 characters left 剩余 %1 字 @@ -1836,23 +1836,23 @@ connect and stream from you? 电台 - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? 要删除 %1 <b>"%2"</b> 吗? - + Delete 删除 - + Save XSPF 保存 XSPF - + Playlists (*.xspf) 播放列表 (*.xspf) diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 056c535c80..3892d67be3 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -1633,17 +1633,17 @@ connect and stream from you? - + Listening to "%1" by %2. %3 - + Listening to "%1" by %2 on "%3". %4 - + %1 characters left @@ -1833,23 +1833,23 @@ connect and stream from you? - + Would you like to delete the %1 <b>"%2"</b>? e.g. Would you like to delete the playlist named Foobar? - + Delete - + Save XSPF 儲存 XSPF - + Playlists (*.xspf) 播放清單(*.xspf) From a973ea758af406c8a06dcd9ff7c32c10bf52e7aa Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 13 Jan 2013 08:47:09 +0100 Subject: [PATCH 215/310] * Reset timer labels in onPlaybackLoading. --- src/AudioControls.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index 52752d87fb..d1333f687f 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -227,6 +227,9 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result ) ui->seekSlider->setValue( 0 ); ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() ); + ui->timeLabel->setText( TomahawkUtils::timeToString( 0 ) ); + ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( 0 ) ); + m_sliderTimeLine.setDuration( duration ); m_sliderTimeLine.setFrameRange( 0, duration ); m_sliderTimeLine.setCurveShape( QTimeLine::LinearCurve ); From 143078699b88d72b161e2f5f36292f9c7f5a7189 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 13 Jan 2013 08:48:22 +0100 Subject: [PATCH 216/310] * Fixed not emitting start with GStreamer Phonon backend. --- src/libtomahawk/audio/AudioEngine.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index b0ad84cf39..e1985bf776 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -764,6 +764,11 @@ AudioEngine::onStateChanged( Phonon::State newState, Phonon::State oldState ) setState( Playing ); } + if ( newState == Phonon::StoppedState && oldState == Phonon::PausedState ) + { + // GStreamer backend hack: instead of going from PlayingState to StoppedState, it traverses PausedState + setState( Stopped ); + } if ( oldState == Phonon::PlayingState ) { From d93f4f352c7dd810bd937f6bb6c2db4ffd664cbe Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 13 Jan 2013 08:53:43 +0100 Subject: [PATCH 217/310] * Fixed README.md. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f620d8f158..95acee2ade 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Compile: Start the application on Linux: $ ./tomahawk + Start the application on OS X: $ open tomahawk.app @@ -43,7 +44,7 @@ Required dependencies: * TagLib 1.6.2 - http://developer.kde.org/~wheeler/taglib.html * Boost 1.3 - http://www.boost.org/ * CLucene 0.9.23 (0.9.21 will fail) - http://clucene.sourceforge.net/download.shtml -* libechonest (2.0.2) - http://projects.kde.org/projects/playground/libs/libechonest/ +* libechonest 2.0.2 - http://projects.kde.org/projects/playground/libs/libechonest/ * Attica 0.4.0 - ftp://ftp.kde.org/pub/kde/stable/attica/ * QuaZip 0.4.3 - http://quazip.sourceforge.net/ * liblastfm 1.0.1 - https://github.com/lastfm/liblastfm/ From cc6b87c882bf414ebbbac692f9912397e143d27b Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Mon, 14 Jan 2013 01:16:50 +0100 Subject: [PATCH 218/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 14 +++++++------- lang/tomahawk_bg.ts | 14 +++++++------- lang/tomahawk_bn_IN.ts | 14 +++++++------- lang/tomahawk_ca.ts | 14 +++++++------- lang/tomahawk_cs.ts | 14 +++++++------- lang/tomahawk_da.ts | 14 +++++++------- lang/tomahawk_de.ts | 14 +++++++------- lang/tomahawk_el.ts | 14 +++++++------- lang/tomahawk_en.ts | 14 +++++++------- lang/tomahawk_es.ts | 14 +++++++------- lang/tomahawk_fi.ts | 14 +++++++------- lang/tomahawk_fr.ts | 14 +++++++------- lang/tomahawk_gl.ts | 14 +++++++------- lang/tomahawk_hi_IN.ts | 14 +++++++------- lang/tomahawk_hu.ts | 14 +++++++------- lang/tomahawk_it.ts | 14 +++++++------- lang/tomahawk_ja.ts | 14 +++++++------- lang/tomahawk_lt.ts | 14 +++++++------- lang/tomahawk_pl.ts | 14 +++++++------- lang/tomahawk_pt_BR.ts | 14 +++++++------- lang/tomahawk_ru.ts | 14 +++++++------- lang/tomahawk_sv.ts | 14 +++++++------- lang/tomahawk_tr.ts | 14 +++++++------- lang/tomahawk_zh_CN.ts | 14 +++++++------- lang/tomahawk_zh_TW.ts | 14 +++++++------- 25 files changed, 175 insertions(+), 175 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 03f7eb5d74..137f38eea6 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -326,37 +326,37 @@ connect and stream from you? AudioControls - + Shuffle خلط - + Repeat إعادة - + Time Elapsed الوقت المنقضي - + Time Remaining الوقت المتبقي - + Playing from %1 يتم الاستماع من %1 - + Share شارك - + Love أحب diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index fb6fb490aa..a38a627b17 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Разбъркано - + Repeat Повтори - + Time Elapsed Изминало време - + Time Remaining Оставащо време - + Playing from %1 Изпълнявам от %1 - + Share Сподели - + Love Харесай diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 2517dea5ac..6f7ec3e6fc 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 56eab8ed46..02bbe6c645 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Mescla - + Repeat Repeteix - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index aaae8db1fc..9a68e4d042 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -326,37 +326,37 @@ se s vámi spojil? AudioControls - + Shuffle Zamíchat - + Repeat Opakovat - + Time Elapsed Uběhlý čas - + Time Remaining Zbývající čas - + Playing from %1 Přehrávání od %1 - + Share Sdílet - + Love Mít rád diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts index da43b4a893..e1b23edb69 100644 --- a/lang/tomahawk_da.ts +++ b/lang/tomahawk_da.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Bland - + Repeat Gentag - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index f2b536f2de..52c858e5cb 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -326,37 +326,37 @@ erlauben sich mit dir zu verbinden? AudioControls - + Shuffle Zufall - + Repeat Wiederholen - + Time Elapsed Abgelaufene Zeit - + Time Remaining Verbleibende Zeit - + Playing from %1 Wiedergabe von %1 - + Share Teilen - + Love Lieben diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 9fc6a51c54..102b94d746 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Τυχαία σειρά - + Repeat Επανάληψη - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index e585d466cc..6d828c8c61 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -326,37 +326,37 @@ connect and stream from you? AudioControls - + Shuffle Shuffle - + Repeat Repeat - + Time Elapsed Time Elapsed - + Time Remaining Time Remaining - + Playing from %1 Playing from %1 - + Share Share - + Love Love diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index c23718b76e..155622a32f 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -326,37 +326,37 @@ conectarse a usted y transmitir música? AudioControls - + Shuffle Aleatorio - + Repeat Repetir - + Time Elapsed Tiempo transcurrido - + Time Remaining Tiempo restante - + Playing from %1 Reproduciendo de %1 - + Share Compartir - + Love Favorito diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index ca616a1c2d..6653e46bb7 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -326,37 +326,37 @@ yhdistää ja toistaa sinulta virtaa? AudioControls - + Shuffle Sekoita - + Repeat Toista - + Time Elapsed Kulunut aika - + Time Remaining Jäljellä oleva aika - + Playing from %1 Soitetaan lähteestä %1 - + Share Jaa - + Love Tykkää diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 7bc4253eb5..a779da2fb3 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -326,37 +326,37 @@ de se connecter et streamer de vous? AudioControls - + Shuffle Lecture Aléatoire - + Repeat Répéter - + Time Elapsed Durée Ecoulé - + Time Remaining Durée Restante - + Playing from %1 - + Share Partager - + Love Favori diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index a159a9d469..d166a828cc 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Ao chou - + Repeat Repetir - + Time Elapsed Tempo transcorrido - + Time Remaining Tempo que falta - + Playing from %1 Reproducindo de %1 - + Share Compartir - + Love gusta diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 971aae9a1e..7d3efdeb96 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 4c7d0c24d9..a4a4e97535 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat Ismétlés - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 2560cee3dc..0d96c72656 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Riproduzione casuale - + Repeat Ripeti - + Time Elapsed Tempo trascorso - + Time Remaining Tempo rimanente - + Playing from %1 Riproducendo da %1 - + Share Condividi - + Love Preferito diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 194365b4cb..5bfc927e97 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle シャッフル - + Repeat リピート - + Time Elapsed 再生時間 - + Time Remaining 残り時間 - + Playing from %1 %1から再生中 - + Share シェアー - + Love Love diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 1f3e6a7c34..74f4739511 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Maišyti - + Repeat Kartoti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index bcdeaee841..f366dab300 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -326,37 +326,37 @@ połączyć się i strumieniować od ciebie? AudioControls - + Shuffle Losowo - + Repeat Powtarzaj - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love Lubię diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 54cee916c5..43e78a7e46 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -326,37 +326,37 @@ se conecte e faça o stream de você? AudioControls - + Shuffle Shuffle - + Repeat Repetir - + Time Elapsed Tempo decorrido - + Time Remaining Tempo restante - + Playing from %1 Reproduzindo de %1 - + Share Compartilhar - + Love Gostar diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index aeef297f80..37ff3c257e 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -329,37 +329,37 @@ connect and stream from you? AudioControls - + Shuffle Случаная - + Repeat Повторять - + Time Elapsed Прошедшее время - + Time Remaining Оставшееся время - + Playing from %1 Воспроизводит из %1 - + Share Поделиться - + Love Любимая diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 94932113c0..265fbf216d 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -326,37 +326,37 @@ ansluta och strömma från dig? AudioControls - + Shuffle Blanda - + Repeat Upprepa - + Time Elapsed - + Time Remaining - + Playing from %1 Spelar från %1 - + Share - + Love diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 458f906b4f..94095d18ef 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle Karışık - + Repeat Yenile - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 2cc171ed3d..163283e35c 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle 无序播放 - + Repeat 重复播放 - + Time Elapsed 已播放时间 - + Time Remaining 剩余时间 - + Playing from %1 歌曲来自 %1 - + Share 分享 - + Love 喜欢 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 3892d67be3..71c821850f 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -325,37 +325,37 @@ connect and stream from you? AudioControls - + Shuffle 隨機 - + Repeat 重複 - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love From e5f207f0f599dece4efcfdfc8c558cd4ba5356bd Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Mon, 14 Jan 2013 11:08:58 -0500 Subject: [PATCH 219/310] THR-40: Set last.fm resolver icon so last.fm results have icon --- src/libtomahawk/accounts/lastfm/LastFmAccount.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp b/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp index 54d1cad939..11e62ff5df 100644 --- a/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp +++ b/src/libtomahawk/accounts/lastfm/LastFmAccount.cpp @@ -287,6 +287,7 @@ LastFmAccount::hookupResolver() const AtticaManager::Resolver data = AtticaManager::instance()->resolverData( res.id() ); m_resolver = QPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( data.scriptPath ) ) ); + m_resolver.data()->setIcon( icon() ); connect( m_resolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); } From cd3d42dc61f0e92118e32a2947de02281973da85 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Mon, 14 Jan 2013 14:39:30 -0500 Subject: [PATCH 220/310] Add some methods for pushing supported info types out of infosystem; untested currently, but compiles --- src/libtomahawk/Typedefs.h | 1 + src/libtomahawk/infosystem/InfoSystem.cpp | 16 +++++++++++ src/libtomahawk/infosystem/InfoSystem.h | 28 +++++++++++++++---- .../infosystem/InfoSystemWorker.cpp | 7 +++-- src/libtomahawk/infosystem/InfoSystemWorker.h | 3 ++ 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/Typedefs.h b/src/libtomahawk/Typedefs.h index fc0dc5c6b7..61973c1e3e 100644 --- a/src/libtomahawk/Typedefs.h +++ b/src/libtomahawk/Typedefs.h @@ -208,6 +208,7 @@ namespace Tomahawk class InfoPlugin; + typedef QSet< InfoType > InfoTypeSet; typedef QMap< InfoType, QVariant > InfoTypeMap; typedef QMap< InfoType, uint > InfoTimeoutMap; typedef QHash< QString, QString > InfoStringHash; diff --git a/src/libtomahawk/infosystem/InfoSystem.cpp b/src/libtomahawk/infosystem/InfoSystem.cpp index f1cae7698f..fc6c56b22e 100644 --- a/src/libtomahawk/infosystem/InfoSystem.cpp +++ b/src/libtomahawk/infosystem/InfoSystem.cpp @@ -309,6 +309,22 @@ InfoSystem::removeInfoPlugin( Tomahawk::InfoSystem::InfoPluginPtr plugin ) } +void +InfoSystem::receiveUpdatedSupportedGetTypes( InfoTypeSet supportedTypes ) +{ + m_supportedGetTypes = supportedTypes; + emit updatedSupportedGetTypes( m_supportedGetTypes ); +} + + +void +InfoSystem::receiveUpdatedSupportedPushTypes( InfoTypeSet supportedTypes ) +{ + m_supportedPushTypes = supportedTypes; + emit updatedSupportedPushTypes( m_supportedPushTypes ); +} + + QPointer< QThread > InfoSystem::workerThread() const { diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index c46fe46b79..433f304b18 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -155,9 +155,11 @@ class DLLEXPORT InfoSystemCacheThread : public QThread virtual ~InfoSystemCacheThread(); void run(); - InfoSystemCache* cache() const; private: + friend class InfoSystem; + InfoSystemCache* cache() const; + QPointer< InfoSystemCache > m_cache; }; @@ -171,9 +173,12 @@ class DLLEXPORT InfoSystemWorkerThread : public QThread virtual ~InfoSystemWorkerThread(); void run(); - InfoSystemWorker* worker() const; private: + friend class DiagnosticsDialog; + friend class InfoSystem; + InfoSystemWorker* worker() const; + QPointer< InfoSystemWorker > m_worker; }; @@ -185,14 +190,17 @@ class DLLEXPORT InfoSystem : public QObject public: static InfoSystem* instance(); - InfoSystem( QObject *parent ); + InfoSystem( QObject* parent ); ~InfoSystem(); - bool getInfo( const InfoRequestData &requestData ); + bool getInfo( const InfoRequestData& requestData ); //WARNING: if changing timeoutMillis above, also change in below function in .cpp file - bool getInfo( const QString &caller, const QVariantMap &customData, const InfoTypeMap &inputMap, const InfoTimeoutMap &timeoutMap = InfoTimeoutMap(), bool allSources = false ); + bool getInfo( const QString &caller, const QVariantMap& customData, const InfoTypeMap& inputMap, const InfoTimeoutMap& timeoutMap = InfoTimeoutMap(), bool allSources = false ); bool pushInfo( InfoPushData pushData ); - bool pushInfo( const QString &caller, const InfoTypeMap &input, const PushInfoFlags pushFlags ); + bool pushInfo( const QString& caller, const InfoTypeMap& input, const PushInfoFlags pushFlags ); + + const InfoTypeSet& supportedGetTypes() const { return m_supportedGetTypes; } + const InfoTypeSet& supportedPushTypes() const { return m_supportedPushTypes; } QPointer< QThread > workerThread() const; @@ -206,14 +214,22 @@ public slots: void finished( QString target ); void finished( QString target, Tomahawk::InfoSystem::InfoType type ); + void updatedSupportedGetTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); + void updatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); + private slots: void init(); + void receiveUpdatedSupportedGetTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); + void receiveUpdatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); private: bool m_inited; InfoSystemCacheThread* m_infoSystemCacheThreadController; InfoSystemWorkerThread* m_infoSystemWorkerThreadController; + InfoTypeSet m_supportedGetTypes; + InfoTypeSet m_supportedPushTypes; + static InfoSystem* s_instance; }; diff --git a/src/libtomahawk/infosystem/InfoSystemWorker.cpp b/src/libtomahawk/infosystem/InfoSystemWorker.cpp index 4bceb6efe6..eaaf64765c 100644 --- a/src/libtomahawk/infosystem/InfoSystemWorker.cpp +++ b/src/libtomahawk/infosystem/InfoSystemWorker.cpp @@ -29,10 +29,10 @@ #include -#include -#include #include #include +#include +#include #include namespace Tomahawk @@ -130,6 +130,9 @@ InfoSystemWorker::addInfoPlugin( Tomahawk::InfoSystem::InfoPluginPtr plugin ) ); QMetaObject::invokeMethod( plugin.data(), "init", Qt::QueuedConnection ); + + emit updatedSupportedGetTypes( QSet< InfoType >::fromList( m_infoGetMap.keys() ) ); + emit updatedSupportedPushTypes( QSet< InfoType >::fromList( m_infoPushMap.keys() ) ); } diff --git a/src/libtomahawk/infosystem/InfoSystemWorker.h b/src/libtomahawk/infosystem/InfoSystemWorker.h index 9b977571b7..96a0ddb8fa 100644 --- a/src/libtomahawk/infosystem/InfoSystemWorker.h +++ b/src/libtomahawk/infosystem/InfoSystemWorker.h @@ -55,6 +55,9 @@ class DLLEXPORT InfoSystemWorker : public QObject void finished( QString target ); void finished( QString target, Tomahawk::InfoSystem::InfoType type ); + void updatedSupportedGetTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); + void updatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); + public slots: void init( Tomahawk::InfoSystem::InfoSystemCache* cache ); void getInfo( Tomahawk::InfoSystem::InfoRequestData requestData ); From 54d0f23a44701d90546c356f554f03d72f604123 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 14 Jan 2013 20:59:51 +0100 Subject: [PATCH 221/310] * Forward declaration and friend class out of namespace for GCC happiness. --- src/libtomahawk/infosystem/InfoSystem.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 433f304b18..97ec9c99e1 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -38,6 +38,7 @@ #include class QNetworkAccessManager; +class DiagnosticsDialog; namespace Tomahawk { @@ -175,7 +176,7 @@ class DLLEXPORT InfoSystemWorkerThread : public QThread void run(); private: - friend class DiagnosticsDialog; + friend class ::DiagnosticsDialog; friend class InfoSystem; InfoSystemWorker* worker() const; From 07887a4ade6acac333a64ce2fbd8dfe3c24e96d2 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sat, 12 Jan 2013 03:21:31 +0100 Subject: [PATCH 222/310] Refactor peer announcement and disable Twitter until it's ported --- src/DiagnosticsDialog.cpp | 39 ++- src/accounts/CMakeLists.txt | 8 +- src/accounts/xmpp/sip/XmppSip.cpp | 54 ++- src/accounts/xmpp/sip/XmppSip.h | 3 +- src/accounts/zeroconf/Zeroconf.cpp | 28 +- src/accounts/zeroconf/Zeroconf.h | 5 +- src/libtomahawk/CMakeLists.txt | 2 +- src/libtomahawk/Source.cpp | 86 +---- src/libtomahawk/Source.h | 7 - src/libtomahawk/TomahawkSettings.cpp | 1 - src/libtomahawk/Typedefs.h | 2 + src/libtomahawk/accounts/AccountManager.cpp | 18 +- src/libtomahawk/accounts/AccountManager.h | 2 + src/libtomahawk/network/ControlConnection.cpp | 62 +--- src/libtomahawk/network/ControlConnection.h | 8 +- src/libtomahawk/network/Servent.cpp | 305 +++++++++++++++-- src/libtomahawk/network/Servent.h | 14 +- src/libtomahawk/sip/PeerInfo.cpp | 315 ++++++++++++++++++ src/libtomahawk/sip/PeerInfo.h | 132 ++++++++ src/libtomahawk/sip/SipHandler.cpp | 247 -------------- src/libtomahawk/sip/SipHandler.h | 88 ----- src/libtomahawk/sip/SipInfo.cpp | 31 +- src/libtomahawk/sip/SipInfo.h | 4 +- src/libtomahawk/sip/SipPlugin.cpp | 29 +- src/libtomahawk/sip/SipPlugin.h | 25 +- 25 files changed, 928 insertions(+), 587 deletions(-) create mode 100644 src/libtomahawk/sip/PeerInfo.cpp create mode 100644 src/libtomahawk/sip/PeerInfo.h delete mode 100644 src/libtomahawk/sip/SipHandler.cpp delete mode 100644 src/libtomahawk/sip/SipHandler.h diff --git a/src/DiagnosticsDialog.cpp b/src/DiagnosticsDialog.cpp index 015e3ce2e4..3e1d42b98d 100644 --- a/src/DiagnosticsDialog.cpp +++ b/src/DiagnosticsDialog.cpp @@ -27,7 +27,7 @@ #include "accounts/AccountManager.h" #include "network/Servent.h" -#include "sip/SipHandler.h" +#include "sip/PeerInfo.h" #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" #include "infosystem/InfoSystem.h" @@ -109,10 +109,7 @@ DiagnosticsDialog::updateLogView() connect( account, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); connect( account, SIGNAL( error( int, QString ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); - connect( account->sipPlugin(), SIGNAL( peerOnline( QString ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); - connect( account->sipPlugin(), SIGNAL( peerOffline( QString ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); - connect( account->sipPlugin(), SIGNAL( sipInfoReceived( QString, SipInfo ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); - connect( account->sipPlugin(), SIGNAL( softwareVersionReceived( QString, QString ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); + connect( account->sipPlugin(), SIGNAL( peerOnline( Tomahawk::peerinfo_ptr ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); log.append( accountLog( account ) + "\n" ); } @@ -163,15 +160,16 @@ DiagnosticsDialog::accountLog( Tomahawk::Accounts::Account* account ) .arg( stateString ) ); - foreach( const QString& peerId, account->sipPlugin()->peersOnline() ) + foreach( const Tomahawk::peerinfo_ptr& peerInfo, account->sipPlugin()->peersOnline() ) { - QString versionString = SipHandler::instance()->versionString( peerId ); - SipInfo sipInfo = SipHandler::instance()->sipInfo( peerId ); + QString peerId = peerInfo->id(); + QString versionString = peerInfo->versionString(); + SipInfo sipInfo = peerInfo->sipInfo(); if ( !sipInfo.isValid() ) { accountInfo.append( - QString(" %1: %2 %3" /*"(%4)"*/ "\n") - .arg( peerId ) + QString(" %1: %2 %3" /*"(%4)"*/) + .arg( peerInfo->id() ) .arg( "sipinfo invalid" ) .arg( versionString ) // .arg( connected ? "connected" : "not connected") @@ -180,7 +178,7 @@ DiagnosticsDialog::accountLog( Tomahawk::Accounts::Account* account ) else if ( sipInfo.isVisible() ) { accountInfo.append( - QString(" %1: %2:%3 %4" /*" (%5)"*/ "\n") + QString(" %1: %2:%3 %4" /*" (%5)"*/) .arg( peerId ) .arg( sipInfo.host() ) .arg( sipInfo.port() ) @@ -191,14 +189,29 @@ DiagnosticsDialog::accountLog( Tomahawk::Accounts::Account* account ) else { accountInfo.append( - QString(" %1: visible: false %2" /*" (%3)"*/ "\n") + QString(" %1: visible: false %2" /*" (%3)"*/) .arg( peerId ) .arg( versionString ) // .arg( connected ? "connected" : "not connected") ); } + + if( sipInfo.isValid() ) + { + if( !Servent::instance()->visibleExternally() || + Servent::instance()->externalAddress() < sipInfo.host() || + ( Servent::instance()->externalAddress() == sipInfo.host() && Servent::instance()->externalPort() < sipInfo.port() ) ) + { + accountInfo.append(" (outbound)"); + } + else + { + accountInfo.append(" (inbound)"); + } + } + accountInfo.append("\n"); } accountInfo.append( "\n" ); return accountInfo; -} \ No newline at end of file +} diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index f68da9e7ba..76552a5c27 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -4,8 +4,8 @@ IF( JREEN_FOUND ) add_subdirectory( xmpp ) ENDIF() -IF( QTWEETLIB_FOUND AND BUILD_GUI ) - ADD_SUBDIRECTORY( twitter ) -ENDIF() - +# IF( QTWEETLIB_FOUND AND BUILD_GUI ) +# ADD_SUBDIRECTORY( twitter ) +# ENDIF() +# ADD_SUBDIRECTORY( zeroconf ) diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index 7f4e70d917..472b255e2e 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -30,6 +30,7 @@ #include "accounts/AccountManager.h" #include "TomahawkSettings.h" #include "utils/TomahawkUtilsGui.h" +#include "sip/PeerInfo.h" #include "config.h" #include "TomahawkVersion.h" @@ -432,9 +433,9 @@ XmppSipPlugin::errorMessage( Jreen::Client::DisconnectReason reason ) void -XmppSipPlugin::sendMsg( const QString& to, const SipInfo& info ) +XmppSipPlugin::sendSipInfo( const Tomahawk::peerinfo_ptr& receiver, const SipInfo& info ) { - qDebug() << Q_FUNC_INFO << to << info; + qDebug() << Q_FUNC_INFO << receiver << info; if ( !m_client ) return; @@ -447,8 +448,8 @@ XmppSipPlugin::sendMsg( const QString& to, const SipInfo& info ) else sipMessage = new TomahawkXmppMessage(); - qDebug() << "Send sip messsage to" << to; - Jreen::IQ iq( Jreen::IQ::Set, to ); + qDebug() << "Send sip messsage to" << receiver; + Jreen::IQ iq( Jreen::IQ::Set, receiver->id() ); iq.addExtension( sipMessage ); Jreen::IQReply *reply = m_client->send( iq ); reply->setData( SipMessageSent ); @@ -689,13 +690,10 @@ XmppSipPlugin::onNewMessage( const Jreen::Message& message ) // this is not a sip message, so we send it directly through the client m_client->send( Jreen::Message ( Jreen::Message::Error, Jreen::JID( to ), response) ); - - emit msgReceived( from, msg ); return; } qDebug() << Q_FUNC_INFO << "From:" << message.from().full() << ":" << message.body(); - emit sipInfoReceived( from, info ); } @@ -864,7 +862,11 @@ XmppSipPlugin::onNewIq( const Jreen::IQ& iq ) { QString versionString = QString( "%1 %2 %3" ).arg( softwareVersion->name(), softwareVersion->os(), softwareVersion->version() ); qDebug() << Q_FUNC_INFO << "Received software version for" << iq.from().full() << ":" << versionString; - emit softwareVersionReceived( iq.from().full(), versionString ); + Tomahawk::peerinfo_ptr peerInfo = PeerInfo::get( this, iq.from().full() ); + if( !peerInfo.isNull() ) + { + peerInfo->setVersionString( versionString ); + } } } else if ( context == RequestedDisco ) @@ -902,7 +904,13 @@ XmppSipPlugin::onNewIq( const Jreen::IQ& iq ) Q_ASSERT( info.isValid() ); qDebug() << Q_FUNC_INFO << "From:" << iq.from().full() << ":" << info; - emit sipInfoReceived( iq.from().full(), info ); + Tomahawk::peerinfo_ptr peerInfo = PeerInfo::get( this, iq.from().full() ); + if( peerInfo.isNull() ) + { + tDebug() << Q_FUNC_INFO << "no valid peerInfo for " << iq.from().full(); + return; + } + peerInfo->setSipInfo( info ); } } } @@ -930,14 +938,23 @@ XmppSipPlugin::handlePeerStatus( const Jreen::JID& jid, Jreen::Presence::Type pr { QString fulljid = jid.full(); + if(fulljid.contains("public.talk.google.com")) + return; + // "going offline" event if ( !presenceMeansOnline( presenceType ) && ( !m_peers.contains( jid ) || presenceMeansOnline( m_peers.value( jid ) ) ) ) { - m_peers[ jid ] = presenceType; qDebug() << Q_FUNC_INFO << "* Peer goes offline:" << fulljid; - emit peerOffline( fulljid ); + m_peers[ jid ] = presenceType; + + Tomahawk::peerinfo_ptr peerInfo = PeerInfo::get( this, fulljid ); + if( !peerInfo.isNull() ) + { + peerInfo->setStatus( PeerInfo::Offline ); + } + return; } @@ -945,10 +962,12 @@ XmppSipPlugin::handlePeerStatus( const Jreen::JID& jid, Jreen::Presence::Type pr if ( presenceMeansOnline( presenceType ) && ( !m_peers.contains( jid ) || !presenceMeansOnline( m_peers.value( jid ) ) ) ) { - m_peers[ jid ] = presenceType; qDebug() << Q_FUNC_INFO << "* Peer goes online:" << fulljid; - emit peerOnline( fulljid ); + m_peers[ jid ] = presenceType; + + Tomahawk::peerinfo_ptr peerInfo = PeerInfo::get( this, fulljid, PeerInfo::AutoCreate ); + peerInfo->setStatus( PeerInfo::Online ); #ifndef ENABLE_HEADLESS if ( !m_avatarManager->avatar( jid.bare() ).isNull() ) @@ -986,16 +1005,17 @@ XmppSipPlugin::onNewAvatar( const QString& jid ) { if ( peer.bare() == jid ) { - emit avatarReceived( peer.full(), m_avatarManager->avatar( jid ) ); + Tomahawk::peerinfo_ptr peerInfo = PeerInfo::get( this, peer.full() ); + if( !peerInfo.isNull() ) + peerInfo->setAvatar( m_avatarManager->avatar( jid ) ); } } if ( jid == m_client->jid().bare() ) + { // own avatar emit avatarReceived( m_avatarManager->avatar( jid ) ); - else - // someone else's avatar - emit avatarReceived( jid, m_avatarManager->avatar( jid ) ); + } #endif } diff --git a/src/accounts/xmpp/sip/XmppSip.h b/src/accounts/xmpp/sip/XmppSip.h index f48f03f14b..36096fb3fc 100644 --- a/src/accounts/xmpp/sip/XmppSip.h +++ b/src/accounts/xmpp/sip/XmppSip.h @@ -88,9 +88,10 @@ public slots: virtual void disconnectPlugin(); virtual void checkSettings(); virtual void configurationChanged(); - virtual void sendMsg( const QString& peerId, const SipInfo& info ); virtual void addContact( const QString& peerId, const QString& msg = QString() ); + virtual void sendSipInfo( const Tomahawk::peerinfo_ptr& receiver, const SipInfo& info ); + void showAddFriendDialog(); void publishTune( const QUrl& url, const Tomahawk::InfoSystem::InfoStringHash& trackInfo ); diff --git a/src/accounts/zeroconf/Zeroconf.cpp b/src/accounts/zeroconf/Zeroconf.cpp index d255759bfb..3497651278 100644 --- a/src/accounts/zeroconf/Zeroconf.cpp +++ b/src/accounts/zeroconf/Zeroconf.cpp @@ -23,6 +23,8 @@ #include "utils/Logger.h" #include "ZeroconfAccount.h" #include "Source.h" +#include "sip/PeerInfo.h" +#include "network/ControlConnection.h" #include #include @@ -56,6 +58,12 @@ ZeroconfPlugin::accountName() const return QString( MYNAME ); } +const QString +ZeroconfPlugin::serviceName() const +{ + return QString( MYNAME ); +} + const QString ZeroconfPlugin::friendlyName() const { @@ -82,8 +90,7 @@ ZeroconfPlugin::connectPlugin() foreach( const QStringList& nodeSet, m_cachedNodes ) { - if ( !Servent::instance()->connectedToSession( nodeSet[3] ) ) - Servent::instance()->connectToPeer( nodeSet[0], nodeSet[1].toInt(), "whitelist", nodeSet[2], nodeSet[3] ); + lanHostFound( nodeSet[0], nodeSet[1].toInt(), nodeSet[2], nodeSet[3]); } m_cachedNodes.clear(); @@ -135,9 +142,18 @@ ZeroconfPlugin::lanHostFound( const QString& host, int port, const QString& name return; } - if ( !Servent::instance()->connectedToSession( nodeid ) ) - Servent::instance()->connectToPeer( host, port, "whitelist", name, nodeid ); - else - qDebug() << "Already connected to" << host; + SipInfo sipInfo; + sipInfo.setHost( host ); + sipInfo.setPort( port ); + sipInfo.setUniqname( nodeid ); + sipInfo.setKey( "whitelist" ); + sipInfo.setVisible( true ); + + Tomahawk::peerinfo_ptr peerInfo = Tomahawk::PeerInfo::get( this, host, Tomahawk::PeerInfo::AutoCreate ); + peerInfo->setSipInfo( sipInfo ); + peerInfo->setFriendlyName( name ); + peerInfo->setType( PeerInfo::Local ); + peerInfo->setStatus( PeerInfo::Online ); } + diff --git a/src/accounts/zeroconf/Zeroconf.h b/src/accounts/zeroconf/Zeroconf.h index 460117d537..5c79c89b57 100644 --- a/src/accounts/zeroconf/Zeroconf.h +++ b/src/accounts/zeroconf/Zeroconf.h @@ -28,7 +28,7 @@ #include -#define MYNAME "Local Network" +#define MYNAME "zeroconf" namespace Tomahawk { @@ -50,6 +50,7 @@ class ACCOUNTDLLEXPORT ZeroconfPlugin : public SipPlugin virtual const QString name() const; virtual const QString friendlyName() const; virtual const QString accountName() const; + virtual const QString serviceName() const; virtual Account::ConnectionState connectionState() const; virtual bool isValid() const { return true; } #ifndef ENABLE_HEADLESS @@ -64,7 +65,7 @@ public slots: void advertise(); - void sendMsg( const QString&, const SipInfo& ) {} + void sendSipInfo( const Tomahawk::peerinfo_ptr&, const SipInfo& ) {} void broadcastMsg( const QString & ) {} void addContact( const QString &, const QString& ) {} diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index ca7e5567ec..8250770722 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -212,8 +212,8 @@ list(APPEND libSources accounts/lastfm/LastFmInfoPlugin.cpp sip/SipPlugin.cpp - sip/SipHandler.cpp sip/SipInfo.cpp + sip/PeerInfo.cpp audio/AudioEngine.cpp diff --git a/src/libtomahawk/Source.cpp b/src/libtomahawk/Source.cpp index bc0b888a2c..732a914f7c 100644 --- a/src/libtomahawk/Source.cpp +++ b/src/libtomahawk/Source.cpp @@ -32,7 +32,6 @@ #include "database/Database.h" #include -#include #include "utils/TomahawkCache.h" #include "database/DatabaseCommand_SocialAction.h" @@ -42,6 +41,7 @@ #endif #include "utils/Logger.h" +#include "sip/PeerInfo.h" using namespace Tomahawk; @@ -53,12 +53,9 @@ Source::Source( int id, const QString& username ) , m_username( username ) , m_id( id ) , m_updateIndexWhenSynced( false ) - , m_avatarUpdated( true ) , m_state( DBSyncConnection::UNKNOWN ) , m_cc( 0 ) , m_commandCount( 0 ) - , m_avatar( 0 ) - , m_fancyAvatar( 0 ) { m_scrubFriendlyName = qApp->arguments().contains( "--demo" ); @@ -79,8 +76,6 @@ Source::Source( int id, const QString& username ) Source::~Source() { qDebug() << Q_FUNC_INFO << friendlyName(); - delete m_avatar; - delete m_fancyAvatar; } @@ -129,80 +124,27 @@ Source::friendlyName() const #ifndef ENABLE_HEADLESS -void -Source::setAvatar( const QPixmap& avatar ) -{ - QByteArray ba; - QBuffer buffer( &ba ); - buffer.open( QIODevice::WriteOnly ); - avatar.save( &buffer, "PNG" ); - - // Check if the avatar is different by comparing a hash of the first 4096 bytes - const QByteArray hash = QCryptographicHash::hash( ba.left( 4096 ), QCryptographicHash::Sha1 ); - if ( m_avatarHash == hash ) - return; - else - m_avatarHash = hash; - - delete m_avatar; - m_avatar = new QPixmap( avatar ); - m_fancyAvatar = 0; - - TomahawkUtils::Cache::instance()->putData( "Sources", 7776000000 /* 90 days */, m_username, ba ); - m_avatarUpdated = true; -} - - QPixmap Source::avatar( TomahawkUtils::ImageMode style, const QSize& size ) { - if ( !m_avatar && m_avatarUpdated ) + if( controlConnection() ) { - m_avatar = new QPixmap(); - QByteArray ba = TomahawkUtils::Cache::instance()->getData( "Sources", m_username ).toByteArray(); - - if ( ba.count() ) - m_avatar->loadFromData( ba ); - - if ( m_avatar->isNull() ) +// tLog() << "****************************************************************************************"; +// tLog() << controlConnection()->peerInfos().count() << "PEERS FOR " << friendlyName(); + QPixmap result; + foreach( const peerinfo_ptr& peerInfo, controlConnection()->peerInfos() ) { - delete m_avatar; - m_avatar = 0; +// peerInfoDebug(peerInfo); + if( !peerInfo.isNull() && !peerInfo->avatar( style, size ).isNull() ) + { + result = peerInfo->avatar( style, size ); + } } - m_avatarUpdated = false; - } - - if ( style == TomahawkUtils::RoundedCorners && m_avatar && !m_avatar->isNull() && !m_fancyAvatar ) - m_fancyAvatar = new QPixmap( TomahawkUtils::createRoundedImage( QPixmap( *m_avatar ), QSize( 0, 0 ) ) ); - - QPixmap pixmap; - if ( style == TomahawkUtils::RoundedCorners && m_fancyAvatar ) - { - pixmap = *m_fancyAvatar; - } - else if ( m_avatar ) - { - pixmap = *m_avatar; - } - - if ( !pixmap.isNull() && !size.isEmpty() ) - { - if ( m_coverCache[ style ].contains( size.width() ) ) - { - return m_coverCache[ style ].value( size.width() ); - } - - QPixmap scaledCover; - scaledCover = pixmap.scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); - - QHash< int, QPixmap > innerCache = m_coverCache[ style ]; - innerCache.insert( size.width(), scaledCover ); - m_coverCache[ style ] = innerCache; - - return scaledCover; +// tLog() << "****************************************************************************************"; + return result; } - return pixmap; + return QPixmap(); } #endif diff --git a/src/libtomahawk/Source.h b/src/libtomahawk/Source.h index 786d61a422..97368ed702 100644 --- a/src/libtomahawk/Source.h +++ b/src/libtomahawk/Source.h @@ -66,7 +66,6 @@ friend class ::MusicScanner; void setFriendlyName( const QString& fname ); #ifndef ENABLE_HEADLESS - void setAvatar( const QPixmap& avatar ); QPixmap avatar( TomahawkUtils::ImageMode style = TomahawkUtils::Original, const QSize& size = QSize() ); #endif @@ -147,7 +146,6 @@ private slots: int m_id; bool m_scrubFriendlyName; bool m_updateIndexWhenSynced; - bool m_avatarUpdated; Tomahawk::query_ptr m_currentTrack; QString m_textStatus; @@ -160,11 +158,6 @@ private slots: QString m_lastCmdGuid; mutable QMutex m_cmdMutex; - mutable QPixmap* m_avatar; - mutable QPixmap* m_fancyAvatar; - mutable QByteArray m_avatarHash; - mutable QHash< TomahawkUtils::ImageMode, QHash< int, QPixmap > > m_coverCache; - Tomahawk::playlistinterface_ptr m_playlistInterface; }; diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp index ef86d81dbd..d4237488c5 100644 --- a/src/libtomahawk/TomahawkSettings.cpp +++ b/src/libtomahawk/TomahawkSettings.cpp @@ -23,7 +23,6 @@ #include #include "Source.h" -#include "sip/SipHandler.h" #include "PlaylistInterface.h" #include "utils/Logger.h" diff --git a/src/libtomahawk/Typedefs.h b/src/libtomahawk/Typedefs.h index 61973c1e3e..daf5a98f2f 100644 --- a/src/libtomahawk/Typedefs.h +++ b/src/libtomahawk/Typedefs.h @@ -46,6 +46,7 @@ namespace Tomahawk class Source; class DynamicControl; class GeneratorInterface; + class PeerInfo; typedef QSharedPointer collection_ptr; typedef QSharedPointer playlist_ptr; @@ -57,6 +58,7 @@ namespace Tomahawk typedef QSharedPointer source_ptr; typedef QSharedPointer artist_ptr; typedef QSharedPointer album_ptr; + typedef QSharedPointer peerinfo_ptr; typedef QSharedPointer dyncontrol_ptr; typedef QSharedPointer geninterface_ptr; diff --git a/src/libtomahawk/accounts/AccountManager.cpp b/src/libtomahawk/accounts/AccountManager.cpp index 3e23bf3f3c..ce2b0e13db 100644 --- a/src/libtomahawk/accounts/AccountManager.cpp +++ b/src/libtomahawk/accounts/AccountManager.cpp @@ -28,7 +28,6 @@ #include #include #include -#include namespace Tomahawk { @@ -58,8 +57,6 @@ AccountManager::AccountManager( QObject *parent ) AccountManager::~AccountManager() { - delete SipHandler::instance(); - disconnectAll(); qDeleteAll( m_accounts ); qDeleteAll( m_accountFactories ); @@ -397,6 +394,18 @@ AccountManager::addAccountFactory( AccountFactory* factory ) } +Account* +AccountManager::zeroconfAccount() const +{ + foreach( Account* account, accounts() ) + { + if( account->sipPlugin() && account->sipPlugin()->serviceName() == "zeroconf" ) + return account; + } + + return 0; +} + void AccountManager::hookupAccount( Account* account ) const { @@ -411,9 +420,6 @@ AccountManager::hookupAndEnable( Account* account, bool startup ) Q_UNUSED( startup ); tDebug( LOGVERBOSE ) << Q_FUNC_INFO; - SipPlugin* p = account->sipPlugin(); - if ( p ) - SipHandler::instance()->hookUpPlugin( p ); hookupAccount( account ); if ( account->enabled() ) diff --git a/src/libtomahawk/accounts/AccountManager.h b/src/libtomahawk/accounts/AccountManager.h index 02a54efcbc..5269716874 100644 --- a/src/libtomahawk/accounts/AccountManager.h +++ b/src/libtomahawk/accounts/AccountManager.h @@ -80,6 +80,8 @@ class DLLEXPORT AccountManager : public QObject void addAccountFactory( AccountFactory* factory ); + Account* zeroconfAccount() const; + public slots: void connectAll(); void disconnectAll(); diff --git a/src/libtomahawk/network/ControlConnection.cpp b/src/libtomahawk/network/ControlConnection.cpp index 4aa0e8113e..0f7294c7af 100644 --- a/src/libtomahawk/network/ControlConnection.cpp +++ b/src/libtomahawk/network/ControlConnection.cpp @@ -26,7 +26,7 @@ #include "SourceList.h" #include "network/DbSyncConnection.h" #include "network/Servent.h" -#include "sip/SipHandler.h" +#include "sip/PeerInfo.h" #include "utils/Logger.h" #define TCP_TIMEOUT 600 @@ -34,7 +34,7 @@ using namespace Tomahawk; -ControlConnection::ControlConnection( Servent* parent, const QHostAddress &ha ) +ControlConnection::ControlConnection( Servent* parent ) : Connection( parent ) , m_dbsyncconn( 0 ) , m_registered( false ) @@ -48,38 +48,6 @@ ControlConnection::ControlConnection( Servent* parent, const QHostAddress &ha ) this->setMsgProcessorModeIn( MsgProcessor::UNCOMPRESS_ALL | MsgProcessor::PARSE_JSON ); this->setMsgProcessorModeOut( MsgProcessor::COMPRESS_IF_LARGE ); - - m_peerIpAddress = ha; -} - - -ControlConnection::ControlConnection( Servent* parent, const QString &ha ) - : Connection( parent ) - , m_dbsyncconn( 0 ) - , m_registered( false ) - , m_pingtimer( 0 ) -{ - qDebug() << "CTOR controlconnection"; - setId("ControlConnection()"); - - // auto delete when connection closes: - connect( this, SIGNAL( finished() ), SLOT( deleteLater() ) ); - - this->setMsgProcessorModeIn( MsgProcessor::UNCOMPRESS_ALL | MsgProcessor::PARSE_JSON ); - this->setMsgProcessorModeOut( MsgProcessor::COMPRESS_IF_LARGE ); - - if ( !ha.isEmpty() ) - { - QHostAddress qha( ha ); - if ( !qha.isNull() ) - m_peerIpAddress = qha; - else - { - QHostInfo qhi = QHostInfo::fromName( ha ); - if ( !qhi.addresses().isEmpty() ) - m_peerIpAddress = qhi.addresses().first(); - } - } } @@ -107,7 +75,7 @@ ControlConnection::source() const Connection* ControlConnection::clone() { - ControlConnection* clone = new ControlConnection( servent(), m_peerIpAddress.toString() ); + ControlConnection* clone = new ControlConnection( servent() ); clone->setOnceOnly( onceOnly() ); clone->setName( name() ); return clone; @@ -158,16 +126,7 @@ ControlConnection::registerSource() Q_UNUSED( source ) Q_ASSERT( source == m_source.data() ); -#ifndef ENABLE_HEADLESS -// qDebug() << Q_FUNC_INFO << "Setting avatar ... " << name() << !SipHandler::instance()->avatar( name() ).isNull(); - if ( !SipHandler::instance()->avatar( name() ).isNull() ) - { - source->setAvatar( SipHandler::instance()->avatar( name() ) ); - } -#endif - m_registered = true; - m_servent->registerControlConnection( this ); setupDbSyncConnection(); } @@ -311,3 +270,18 @@ ControlConnection::onPingTimer() sendMsg( Msg::factory( QByteArray(), Msg::PING ) ); } + + +void +ControlConnection::addPeerInfo( const peerinfo_ptr& peerInfo ) +{ + peerInfo->setControlConnection( this ); + m_peerInfos.insert( peerInfo ); +} + + +const QSet< peerinfo_ptr > +ControlConnection::peerInfos() const +{ + return m_peerInfos; +} diff --git a/src/libtomahawk/network/ControlConnection.h b/src/libtomahawk/network/ControlConnection.h index da6f78a256..91cbf60ebc 100644 --- a/src/libtomahawk/network/ControlConnection.h +++ b/src/libtomahawk/network/ControlConnection.h @@ -40,8 +40,7 @@ class DLLEXPORT ControlConnection : public Connection Q_OBJECT public: - explicit ControlConnection( Servent* parent = 0, const QHostAddress &ha = QHostAddress() ); - explicit ControlConnection( Servent* parent = 0, const QString &ha = QString() ); + ControlConnection( Servent* parent ); ~ControlConnection(); Connection* clone(); @@ -49,6 +48,9 @@ Q_OBJECT Tomahawk::source_ptr source() const; + void addPeerInfo( const Tomahawk::peerinfo_ptr& peerInfo ); + const QSet< Tomahawk::peerinfo_ptr > peerInfos() const; + protected: virtual void setup(); @@ -71,6 +73,8 @@ private slots: QTimer* m_pingtimer; QTime m_pingtimer_mark; + + QSet< Tomahawk::peerinfo_ptr > m_peerInfos; }; #endif // CONTROLCONNECTION_H diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index 48ec76f261..04df4aa7bf 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -19,17 +19,6 @@ #include "Servent.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include - #include "Result.h" #include "Source.h" #include "BufferIoDevice.h" @@ -39,11 +28,26 @@ #include "database/DatabaseImpl.h" #include "StreamConnection.h" #include "SourceList.h" - +#include "sip/SipInfo.h" +#include "sip/PeerInfo.h" +#include "sip/SipPlugin.h" #include "PortFwdThread.h" #include "TomahawkSettings.h" #include "utils/TomahawkUtils.h" #include "utils/Logger.h" +#include "accounts/AccountManager.h" + + +#include +#include +#include +#include +#include +#include +#include +#include + +#include using namespace Tomahawk; @@ -168,7 +172,7 @@ Servent::createConnectionKey( const QString& name, const QString &nodeid, const Q_ASSERT( this->thread() == QThread::currentThread() ); QString _key = ( key.isEmpty() ? uuid() : key ); - ControlConnection* cc = new ControlConnection( this, name ); + ControlConnection* cc = new ControlConnection( this ); cc->setName( name.isEmpty() ? QString( "KEY(%1)" ).arg( key ) : name ); if ( !nodeid.isEmpty() ) cc->setId( nodeid ); @@ -268,16 +272,142 @@ Servent::unregisterControlConnection( ControlConnection* conn ) ControlConnection* -Servent::lookupControlConnection( const QString& name ) +Servent::lookupControlConnection( const SipInfo& sipInfo ) { foreach( ControlConnection* c, m_controlconnections ) - if( c->name() == name ) - return c; + { + tLog() << sipInfo.port() << c->peerPort() << sipInfo.host() << c->peerIpAddress().toString(); + if ( sipInfo.port() == c->peerPort() && sipInfo.host() == c->peerIpAddress().toString() ) + return c; + } return NULL; } +void +Servent::registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ) +{ + if( peerInfo->hasControlConnection() ) + { + peerInfoDebug(peerInfo) << "already had control connection, not doin nuffin: " << peerInfo->controlConnection()->name(); + tLog() << "existing control connection has following peers:"; + foreach(const peerinfo_ptr& otherPeerInfo, peerInfo->controlConnection()->peerInfos()) + { + peerInfoDebug(otherPeerInfo); + } + + tLog() << "end peers"; + return; + } + + if( peerInfo->type() == Tomahawk::PeerInfo::Local ) + { + peerInfoDebug(peerInfo) << "YAY, we need to establish the connection now.. thinking"; + if ( !connectedToSession( peerInfo->sipInfo().uniqname() ) ) + { + Servent::instance()->connectToPeer( peerInfo ); + } + else + { +// FIXME: do we need to port this?! + +// qDebug() << "Already connected to" << host; // so peerInfo was 0 before +// qDebug() << "They connected to us and we don't have a PeerInfo object, created one..."; +// m_peersOnline.append( peerInfo ); + +// // attach to control connection +// ControlConnection* conn = Servent::instance()->lookupControlConnection( sipInfo ); + +// // we're connected to this nodeid, so we should find a control connection for this sipinfo, no? +// Q_ASSERT( conn ); + +// conn->addPeerInfo( peerInfo ); + } + } + else + { + SipInfo info; + if( Servent::instance()->visibleExternally() ) + { + QString peerId = peerInfo->id(); + QString key = uuid(); + ControlConnection* conn = new ControlConnection( Servent::instance() ); + + const QString& nodeid = Database::instance()->impl()->dbid(); + conn->setName( peerId.left( peerId.indexOf( "/" ) ) ); + conn->setId( nodeid ); + conn->addPeerInfo( peerInfo ); + + Servent::instance()->registerOffer( key, conn ); + info.setVisible( true ); + info.setHost( Servent::instance()->externalAddress() ); + info.setPort( Servent::instance()->externalPort() ); + info.setKey( key ); + info.setUniqname( nodeid ); + + tDebug() << "Asking them ( " << peerInfo->id() << " ) to connect to us:" << info; + } + else + { + info.setVisible( false ); + tDebug() << "We are not visible externally:" << info; + } + + peerInfo->sendLocalSipInfo( info ); + + handleSipInfo( peerInfo ); + connect( peerInfo.data(), SIGNAL( sipInfoChanged() ), SLOT( onSipInfoChanged() ) ); + } +} + +void +Servent::onSipInfoChanged() +{ + Tomahawk::PeerInfo* peerInfo = qobject_cast< Tomahawk::PeerInfo* >( sender() ); + + if( !peerInfo ) + return; + + handleSipInfo( peerInfo->weakRef().toStrongRef() ); +} + + +void Servent::handleSipInfo( const Tomahawk::peerinfo_ptr& peerInfo ) +{ + tLog() << Q_FUNC_INFO << peerInfo->id() << peerInfo->sipInfo(); + + SipInfo info = peerInfo->sipInfo(); + if( !info.isValid() ) + return; + + /* + If only one party is externally visible, connection is obvious + If both are, peer with lowest IP address initiates the connection. + + This avoids dupe connections. + */ + if ( info.isVisible() ) + { + if( !Servent::instance()->visibleExternally() || + Servent::instance()->externalAddress() < info.host() || + ( Servent::instance()->externalAddress() == info.host() && Servent::instance()->externalPort() < info.port() ) ) + { + + tDebug() << "Initiate connection to" << peerInfo->id() << "at" << info.host() << " peer of: " << peerInfo->sipPlugin()->account()->accountFriendlyName(); + Servent::instance()->connectToPeer( peerInfo ); + } + else + { + tDebug() << Q_FUNC_INFO << "They should be conecting to us..."; + } + } + else + { + tDebug() << Q_FUNC_INFO << "They are not visible, doing nothing atm"; + } +} + void Servent::incomingConnection( int sd ) { @@ -344,16 +474,21 @@ Servent::readyRead() controlid = m.value( "controlid" ).toString(); tDebug( LOGVERBOSE ) << "Incoming connection details:" << m; - if( !nodeid.isEmpty() ) // only control connections send nodeid { bool dupe = false; if ( m_connectedNodes.contains( nodeid ) ) + { + tDebug() << "connected nodes contains it."; dupe = true; + } foreach( ControlConnection* con, m_controlconnections ) { - tLog( LOGVERBOSE ) << "known connection:" << con->id() << con->source()->friendlyName(); + if(!con) + continue; + + tLog() << "known connection:" << con->id(); if( con->id() == nodeid ) { dupe = true; @@ -361,16 +496,47 @@ Servent::readyRead() } } - if ( dupe ) + // for zeroconf there might be no offer, that case is handled later + ControlConnection* ccMatch = qobject_cast< ControlConnection* >( m_offers.value( key ).data() ); + if ( dupe && ccMatch ) { tLog() << "Duplicate control connection detected, dropping:" << nodeid << conntype; + + tDebug() << "PEERINFO: to be dropped connection has following peers"; + foreach(const peerinfo_ptr& currentPeerInfo, ccMatch->peerInfos() ) + { + peerInfoDebug(currentPeerInfo); + } + + + foreach(ControlConnection* keepConnection, m_controlconnections) + { + Q_ASSERT(keepConnection); + if( !keepConnection ) + continue; + + if( keepConnection->id() == nodeid ) + { + tDebug() << "Keep connection" << keepConnection->name() << "with following peers"; + foreach( const peerinfo_ptr& currentPeerInfo, keepConnection->peerInfos() ) + peerInfoDebug(currentPeerInfo); + + tDebug() << "Add these peers now"; + foreach( const peerinfo_ptr& currentPeerInfo, ccMatch->peerInfos() ) + { + tDebug() << "Adding " << currentPeerInfo->id(); + keepConnection->addPeerInfo( currentPeerInfo ); + } + tDebug() << "Done adding."; + } + } goto closeconnection; } } foreach( ControlConnection* con, m_controlconnections ) { - if ( con->id() == controlid ) + if ( con && con->id() == controlid ) { cc = con; break; @@ -398,7 +564,9 @@ Servent::readyRead() tLog() << "Socket has become invalid, possibly took too long to make an ACL decision, key:" << key << nodeid; goto closeconnection; } - tDebug( LOGVERBOSE ) << "claimOffer OK:" << key << nodeid; + tDebug( LOGVERBOSE ) << "claimOffer OK:" << key << nodeid; + + registerControlConnection( qobject_cast(conn) ); m_connectedNodes << nodeid; if( !nodeid.isEmpty() ) @@ -526,26 +694,84 @@ Servent::socketError( QAbstractSocket::SocketError e ) void -Servent::connectToPeer( const QString& ha, int port, const QString &key, const QString& name, const QString& id ) +Servent::connectToPeer( const peerinfo_ptr& peerInfo ) { Q_ASSERT( this->thread() == QThread::currentThread() ); - ControlConnection* conn = new ControlConnection( this, ha ); + SipInfo sipInfo = peerInfo->sipInfo(); + + peerInfoDebug(peerInfo) << "connectToPeer: search for already established connections to the same nodeid: " << m_controlconnections.count() << "connections"; + + bool isDupe = false; + ControlConnection* conn = 0; + // try to find a ControlConnection with the same SipInfo, then we dont need to try to connect again + foreach( ControlConnection* c, m_controlconnections ) + { + if( !c ) + continue; + + if( c->id() == sipInfo.uniqname() ) + { + conn = c; + + + foreach(const peerinfo_ptr& currentPeerInfo, c->peerInfos()) + { + tLog() << "peerInfo:" << currentPeerInfo->debugName() << "same object: " << (peerInfo == currentPeerInfo) << (peerInfo.data() == currentPeerInfo.data()) << (peerInfo->debugName() == currentPeerInfo->debugName()); + + if(peerInfo == currentPeerInfo) + { + isDupe = true; + tLog() << "Not adding " << peerInfo->debugName() << ", because it's a dupe: peerInfoCount remains " << conn->peerInfos().count(); + } + } + + if( !c->peerInfos().contains( peerInfo ) ) + { + c->addPeerInfo( peerInfo ); +// peerInfoDebug(peerInfo) << "Adding " << peerInfo->debugName() << ", not a dupe... new peerInfoCount:" << c->peerInfos().count(); +// foreach(const peerinfo_ptr& kuh, c->peerInfos()) +// { +// peerInfoDebug(peerInfo) << " ** " << kuh->debugName(); +// } + } + + break; + } + } + + peerInfoDebug(peerInfo) << "connectToPeer: found a match: " << ( conn ? conn->name() : "false" ) << "dupe: " << isDupe; + + if(isDupe) + { + peerInfoDebug(peerInfo) << "it's a dupe, nothing to do here, returning and stopping processing: peerInfoCount:" << conn->peerInfos().count(); + } + + if(conn) + return; + QVariantMap m; m["conntype"] = "accept-offer"; - m["key"] = key; + m["key"] = sipInfo.key(); m["port"] = externalPort(); m["nodeid"] = Database::instance()->impl()->dbid(); + peerInfoDebug(peerInfo) << "No match found, creating a new ControlConnection..."; + conn = new ControlConnection( this ); + conn->addPeerInfo( peerInfo ); conn->setFirstMessage( m ); - if( name.length() ) - conn->setName( name ); - if( id.length() ) - conn->setId( id ); - conn->setProperty( "nodeid", id ); + if( peerInfo->id().length() ) + conn->setName( peerInfo->id() ); + + if( sipInfo.uniqname().length() ) + conn->setId( sipInfo.uniqname() ); + + conn->setProperty( "nodeid", sipInfo.uniqname() ); + + registerControlConnection( conn ); - connectToPeer( ha, port, key, conn ); + connectToPeer( sipInfo.host(), sipInfo.port(), sipInfo.key(), conn ); } @@ -654,8 +880,19 @@ Servent::claimOffer( ControlConnection* cc, const QString &nodeid, const QString if( isIPWhitelisted( peer ) ) { tDebug() << "Connection is from whitelisted IP range (LAN)"; - Connection* conn = new ControlConnection( this, peer.toString() ); + ControlConnection* conn = new ControlConnection( this ); conn->setName( peer.toString() ); + + Tomahawk::Accounts::Account* account = Tomahawk::Accounts::AccountManager::instance()->zeroconfAccount(); + // if we get this connection the account should exist and be enabled + Q_ASSERT( account ); + Q_ASSERT( account->enabled() ); + + // this is terrible, actually there should be a way to let this be created by the zeroconf plugin + // because this way we rely on the ip being used as id in two totally different parts of the code + Tomahawk::peerinfo_ptr peerInfo = Tomahawk::PeerInfo::get( account->sipPlugin(), peer.toString(), Tomahawk::PeerInfo::AutoCreate ); + peerInfoDebug(peerInfo); + conn->addPeerInfo(peerInfo); return conn; } else @@ -698,7 +935,7 @@ Servent::claimOffer( ControlConnection* cc, const QString &nodeid, const QString else if ( noauth ) { Connection* conn; - conn = new ControlConnection( this, peer ); + conn = new ControlConnection( this ); conn->setName( key ); return conn; } @@ -803,6 +1040,10 @@ Servent::connectedToSession( const QString& session ) { foreach( ControlConnection* cc, m_controlconnections ) { + Q_ASSERT( cc ); + if( !cc ) + continue; + if( cc->id() == session ) return true; } diff --git a/src/libtomahawk/network/Servent.h b/src/libtomahawk/network/Servent.h index 7608da544c..165095c6ac 100644 --- a/src/libtomahawk/network/Servent.h +++ b/src/libtomahawk/network/Servent.h @@ -51,6 +51,8 @@ class StreamConnection; class ProxyConnection; class RemoteCollectionConnection; class PortFwdThread; +class PeerInfo; +class SipInfo; // this is used to hold a bit of state, so when a connected signal is emitted // from a socket, we can associate it with a Connection object etc. @@ -101,9 +103,17 @@ Q_OBJECT void registerControlConnection( ControlConnection* conn ); void unregisterControlConnection( ControlConnection* conn ); - ControlConnection* lookupControlConnection( const QString& name ); + ControlConnection* lookupControlConnection( const SipInfo& sipInfo ); - void connectToPeer( const QString& ha, int port, const QString &key, const QString& name = "", const QString& id = "" ); + // you may call this method as often as you like for the same peerInfo, dupe checking is done inside + void registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ); + void handleSipInfo( const Tomahawk::peerinfo_ptr& peerInfo ); + +public slots: + void onSipInfoChanged(); + +public: + void connectToPeer( const Tomahawk::peerinfo_ptr& ha ); void connectToPeer( const QString& ha, int port, const QString &key, Connection* conn ); void reverseOfferRequest( ControlConnection* orig_conn, const QString &theirdbid, const QString& key, const QString& theirkey ); diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp new file mode 100644 index 0000000000..635bd23693 --- /dev/null +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -0,0 +1,315 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2012, Dominik Schmidt + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#include "PeerInfo.h" +#include "SipPlugin.h" +#include "utils/TomahawkCache.h" +#include "utils/TomahawkUtilsGui.h" +#include "network/ControlConnection.h" +#include "network/Servent.h" + +#include +#include + +namespace Tomahawk +{ + +QHash< QString, peerinfo_ptr > PeerInfo::s_peersByCacheKey = QHash< QString, peerinfo_ptr >(); + +inline QString +peerCacheKey( SipPlugin* plugin, const QString& peerId ) +{ + return QString( "%1\t\t%2" ).arg( (quintptr) plugin ).arg( peerId ); +} + + +Tomahawk::peerinfo_ptr +PeerInfo::get(SipPlugin* parent, const QString& id, GetOptions options ) +{ + const QString key = peerCacheKey( parent, id ); + if ( s_peersByCacheKey.contains( key ) ) + { + return s_peersByCacheKey.value( key ); + } + + // if AutoCreate isn't enabled nothing to do here + if( ! ( options & AutoCreate ) ) + { + return peerinfo_ptr(); + } + + peerinfo_ptr peerInfo( new PeerInfo( parent, id ) ); + peerInfo->setWeakRef( peerInfo.toWeakRef() ); + s_peersByCacheKey.insert( key, peerInfo); + + return peerInfo; +} + + +QList< Tomahawk::peerinfo_ptr > +PeerInfo::getAll() +{ + return s_peersByCacheKey.values(); +} + +PeerInfo::PeerInfo( SipPlugin* parent, const QString& id ) + : QObject( parent ) + , m_type( External ) + , m_avatar( 0 ) + , m_fancyAvatar( 0 ) + , m_avatarUpdated( true ) +{ + m_id = id; +} + + + +PeerInfo::~PeerInfo() +{ + tDebug() << Q_FUNC_INFO; + delete m_avatar; + delete m_fancyAvatar; +} + + +void +PeerInfo::announce() +{ + Servent::instance()->registerPeer( weakRef().toStrongRef() ); +} + + +QWeakPointer< PeerInfo > +PeerInfo::weakRef() +{ + return m_ownRef; +} + + +void +PeerInfo::setWeakRef( QWeakPointer< PeerInfo > weakRef ) +{ + m_ownRef = weakRef; +} + + +void +PeerInfo::setControlConnection( ControlConnection* controlConnection ) +{ + m_controlConnection = controlConnection; +} + +ControlConnection* +PeerInfo::controlConnection() const +{ + return m_controlConnection; +} + +bool PeerInfo::hasControlConnection() +{ + return !m_controlConnection.isNull(); +} + + + +void +PeerInfo::setType( Tomahawk::PeerInfo::Type type ) +{ + m_type = type; +} + +PeerInfo::Type +PeerInfo::type() const +{ + return m_type; +} + +const +QString PeerInfo::id() const +{ + return m_id; +} + + + +SipPlugin* +PeerInfo::sipPlugin() const +{ + return qobject_cast< SipPlugin* >( parent() ); +} + + +void +PeerInfo::sendLocalSipInfo( const SipInfo& sipInfo ) +{ + sipPlugin()->sendSipInfo( weakRef().toStrongRef(), sipInfo ); +} + + +const QString +PeerInfo::debugName() const +{ + return QString("%1 : %2").arg( sipPlugin()->account()->accountFriendlyName() ).arg( id() ); +} + + + +void +PeerInfo::setStatus( PeerInfo::Status status ) +{ + m_status = status; + + if( status == Online ) + announce(); +} + + +PeerInfo::Status +PeerInfo::status() const +{ + return m_status; +} + + +void +PeerInfo::setSipInfo( const SipInfo& sipInfo ) +{ + if(sipInfo == m_sipInfo) + return; + + m_sipInfo = sipInfo; + + tLog() << "id: " << id() << " info changed" << sipInfo; + emit sipInfoChanged(); +} + + +const SipInfo +PeerInfo::sipInfo() const +{ + return m_sipInfo; +} + + +void +PeerInfo::setFriendlyName( const QString& friendlyName ) +{ + m_friendlyName = friendlyName; +} + + +const QString +PeerInfo::friendlyName() const +{ + return m_friendlyName; +} + + +void +PeerInfo::setAvatar( const QPixmap& avatar ) +{ + QByteArray ba; + QBuffer buffer( &ba ); + buffer.open( QIODevice::WriteOnly ); + avatar.save( &buffer, "PNG" ); + + // Check if the avatar is different by comparing a hash of the first 4096 bytes + const QByteArray hash = QCryptographicHash::hash( ba.left( 4096 ), QCryptographicHash::Sha1 ); + if ( m_avatarHash == hash ) + return; + else + m_avatarHash = hash; + + delete m_avatar; + m_avatar = new QPixmap( avatar ); + m_fancyAvatar = 0; + + TomahawkUtils::Cache::instance()->putData( "Sources", 7776000000 /* 90 days */, id(), ba ); + m_avatarUpdated = true; +} + + +const QPixmap +PeerInfo::avatar( TomahawkUtils::ImageMode style, const QSize& size ) const +{ +// tLog() << "*****************************************" << Q_FUNC_INFO << id(); + + if ( !m_avatar && m_avatarUpdated ) + { + m_avatar = new QPixmap(); + QByteArray ba = TomahawkUtils::Cache::instance()->getData( "Sources", id() ).toByteArray(); + + if ( ba.count() ) + m_avatar->loadFromData( ba ); + + if ( m_avatar->isNull() ) + { + delete m_avatar; + m_avatar = 0; + } + m_avatarUpdated = false; + } + + if ( style == TomahawkUtils::RoundedCorners && m_avatar && !m_avatar->isNull() && !m_fancyAvatar ) + m_fancyAvatar = new QPixmap( TomahawkUtils::createRoundedImage( QPixmap( *m_avatar ), QSize( 0, 0 ) ) ); + + QPixmap pixmap; + if ( style == TomahawkUtils::RoundedCorners && m_fancyAvatar ) + { + pixmap = *m_fancyAvatar; + } + else if ( m_avatar ) + { + pixmap = *m_avatar; + } + + if ( !pixmap.isNull() && !size.isEmpty() ) + { + if ( m_coverCache[ style ].contains( size.width() ) ) + { + return m_coverCache[ style ].value( size.width() ); + } + + QPixmap scaledCover; + scaledCover = pixmap.scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); + + QHash< int, QPixmap > innerCache = m_coverCache[ style ]; + innerCache.insert( size.width(), scaledCover ); + m_coverCache[ style ] = innerCache; + + return scaledCover; + } + + return pixmap; +} + +void +PeerInfo::setVersionString(const QString& versionString) +{ + m_versionString = versionString; +} + + +const QString +PeerInfo::versionString() const +{ + return m_versionString; +} + + +} // ns diff --git a/src/libtomahawk/sip/PeerInfo.h b/src/libtomahawk/sip/PeerInfo.h new file mode 100644 index 0000000000..b2e967b610 --- /dev/null +++ b/src/libtomahawk/sip/PeerInfo.h @@ -0,0 +1,132 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2012, Dominik Schmidt + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#ifndef PEERINFO_H +#define PEERINFO_H + + + +#include "DllMacro.h" + +#include "SipInfo.h" +#include "accounts/Account.h" +#include "utils/TomahawkUtils.h" + +#include +#include + + +#define peerInfoDebug(peerInfo) tDebug() << "PEERINFO:" << ( !peerInfo.isNull() ? peerInfo->debugName() : "Invalid PeerInfo" ).toLatin1().constData() + +class SipPlugin; +class ControlConnection; + +namespace Tomahawk +{ + +class DLLEXPORT PeerInfo : public QObject +{ +Q_OBJECT + +public: + enum Status + { + Online, + Offline + }; + + enum GetOptions + { + None, + AutoCreate + }; + + // this is a uberstupid hack, identify characteristics of the type + enum Type + { + External, // this is the default + Local + }; + + static Tomahawk::peerinfo_ptr get( SipPlugin* parent, const QString& id, GetOptions options = None); + static QList< Tomahawk::peerinfo_ptr > getAll(); + + virtual ~PeerInfo(); + + const QString id() const; + SipPlugin* sipPlugin() const; + const QString debugName() const; + void sendLocalSipInfo( const SipInfo& sipInfo ); + + QWeakPointer< Tomahawk::PeerInfo > weakRef(); + void setWeakRef( QWeakPointer< Tomahawk::PeerInfo > weakRef ); + + void setControlConnection( ControlConnection* controlConnection ); + ControlConnection* controlConnection() const; + bool hasControlConnection(); + + void setType( Tomahawk::PeerInfo::Type type ); + PeerInfo::Type type() const; + + // actual data + void setStatus( Status status ); + Status status() const; + + void setSipInfo( const SipInfo& sipInfo ); + const SipInfo sipInfo() const; + + void setFriendlyName( const QString& friendlyName ); + const QString friendlyName() const; + + void setAvatar( const QPixmap& avatar ); + const QPixmap avatar( TomahawkUtils::ImageMode style = TomahawkUtils::Original, const QSize& size = QSize() ) const; + + void setVersionString( const QString& versionString ); + const QString versionString() const; + +signals: + void sipInfoChanged(); + +private: + PeerInfo( SipPlugin* parent, const QString& id ); + void announce(); + + static QHash< QString, peerinfo_ptr > s_peersByCacheKey; + QWeakPointer< Tomahawk::PeerInfo > m_ownRef; + QPointer< ControlConnection > m_controlConnection; + + PeerInfo::Type m_type; + + QString m_id; + Status m_status; + SipInfo m_sipInfo; + QString m_friendlyName; + QString m_versionString; + + mutable QPixmap* m_avatar; + mutable QPixmap* m_fancyAvatar; + mutable QByteArray m_avatarHash; + mutable bool m_avatarUpdated; + mutable QHash< TomahawkUtils::ImageMode, QHash< int, QPixmap > > m_coverCache; +}; + + +} // ns + + +#endif // PEERINFO_H diff --git a/src/libtomahawk/sip/SipHandler.cpp b/src/libtomahawk/sip/SipHandler.cpp deleted file mode 100644 index 8e545a04db..0000000000 --- a/src/libtomahawk/sip/SipHandler.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* === This file is part of Tomahawk Player - === - * - * Copyright 2010-2011, Christian Muehlhaeuser - * Copyright 2010-2011, Leo Franchi - * Copyright 2010-2011, Jeff Mitchell - * - * Tomahawk is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tomahawk is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tomahawk. If not, see . - */ - -#include "SipHandler.h" -#include "sip/SipPlugin.h" - -#include -#include -#include - -#ifndef ENABLE_HEADLESS - #include -#endif - -#include "database/Database.h" -#include "database/DatabaseImpl.h" -#include "network/ControlConnection.h" -#include "network/Servent.h" -#include "SourceList.h" -#include "TomahawkSettings.h" -#include "utils/Logger.h" -#include "accounts/AccountManager.h" - -#include "config.h" - -SipHandler* SipHandler::s_instance = 0; - - -SipHandler* -SipHandler::instance() -{ - if ( !s_instance ) - new SipHandler( 0 ); - - return s_instance; -} - - -SipHandler::SipHandler( QObject* parent ) - : QObject( parent ) -{ - s_instance = this; -} - - -SipHandler::~SipHandler() -{ - qDebug() << Q_FUNC_INFO; - s_instance = 0; -} - - -#ifndef ENABLE_HEADLESS -const QPixmap -SipHandler::avatar( const QString& name ) const -{ -// qDebug() << Q_FUNC_INFO << "Getting avatar" << name; // << m_usernameAvatars.keys(); - if( m_usernameAvatars.contains( name ) ) - { -// qDebug() << Q_FUNC_INFO << "Getting avatar and avatar != null "; - Q_ASSERT(!m_usernameAvatars.value( name ).isNull()); - return m_usernameAvatars.value( name ); - } - else - { -// qDebug() << Q_FUNC_INFO << "Getting avatar and avatar == null :-("; - return QPixmap(); - } -} -#endif - -const SipInfo -SipHandler::sipInfo( const QString& peerId ) const -{ - return m_peersSipInfos.value( peerId ); -} - -const QString -SipHandler::versionString( const QString& peerId ) const -{ - return m_peersSoftwareVersions.value( peerId ); -} - - -void -SipHandler::hookUpPlugin( SipPlugin* sip ) -{ - QObject::connect( sip, SIGNAL( peerOnline( QString ) ), SLOT( onPeerOnline( QString ) ) ); - QObject::connect( sip, SIGNAL( peerOffline( QString ) ), SLOT( onPeerOffline( QString ) ) ); - QObject::connect( sip, SIGNAL( msgReceived( QString, QString ) ), SLOT( onMessage( QString, QString ) ) ); - QObject::connect( sip, SIGNAL( sipInfoReceived( QString, SipInfo ) ), SLOT( onSipInfo( QString, SipInfo ) ) ); - QObject::connect( sip, SIGNAL( softwareVersionReceived( QString, QString ) ), SLOT( onSoftwareVersion( QString, QString ) ) ); - - QObject::connect( sip, SIGNAL( avatarReceived( QString, QPixmap ) ), SLOT( onAvatarReceived( QString, QPixmap ) ) ); - QObject::connect( sip, SIGNAL( avatarReceived( QPixmap ) ), SLOT( onAvatarReceived( QPixmap ) ) ); - - QObject::connect( sip->account(), SIGNAL( configurationChanged() ), sip, SLOT( configurationChanged() ) ); -} - - -void -SipHandler::onPeerOnline( const QString& peerId ) -{ -// qDebug() << Q_FUNC_INFO; - tDebug() << "SIP online:" << peerId; - - SipPlugin* sip = qobject_cast(sender()); - - SipInfo info; - if( Servent::instance()->visibleExternally() ) - { - QString key = uuid(); - ControlConnection* conn = new ControlConnection( Servent::instance(), QString() ); - - const QString& nodeid = Database::instance()->impl()->dbid(); - conn->setName( peerId.left( peerId.indexOf( "/" ) ) ); - conn->setId( nodeid ); - - Servent::instance()->registerOffer( key, conn ); - info.setVisible( true ); - info.setHost( Servent::instance()->externalAddress() ); - info.setPort( Servent::instance()->externalPort() ); - info.setKey( key ); - info.setUniqname( nodeid ); - - tDebug() << "Asking them to connect to us:" << info; - } - else - { - info.setVisible( false ); - tDebug() << "We are not visible externally:" << info; - } - - sip->sendMsg( peerId, info ); -} - - -void -SipHandler::onPeerOffline( const QString& peerId ) -{ -// qDebug() << Q_FUNC_INFO; - tDebug() << "SIP offline:" << peerId; -} - - -void -SipHandler::onSipInfo( const QString& peerId, const SipInfo& info ) -{ - tDebug() << Q_FUNC_INFO << "SIP Message:" << peerId << info; - - QString barePeerId = peerId.left( peerId.indexOf( "/" ) ); - - //FIXME: We should probably be using barePeerId in the connectToPeer call below. - //But, verify this doesn't cause any problems (there is still a uniquename after all) - - /* - If only one party is externally visible, connection is obvious - If both are, peer with lowest IP address initiates the connection. - This avoids dupe connections. - */ - if ( info.isVisible() ) - { - if( !Servent::instance()->visibleExternally() || - Servent::instance()->externalAddress() < info.host() || - ( Servent::instance()->externalAddress() == info.host() && Servent::instance()->externalPort() < info.port() ) ) - { - tDebug() << "Initiate connection to" << peerId << "at" << info.host(); - Servent::instance()->connectToPeer( info.host(), - info.port(), - info.key(), - peerId, - info.uniqname() ); - } - else - { - tDebug() << Q_FUNC_INFO << "They should be conecting to us..."; - } - } - else - { - tDebug() << Q_FUNC_INFO << "They are not visible, doing nothing atm"; - } - - m_peersSipInfos.insert( peerId, info ); -} - -void SipHandler::onSoftwareVersion( const QString& peerId, const QString& versionString ) -{ - m_peersSoftwareVersions.insert( peerId, versionString ); -} - -void -SipHandler::onMessage( const QString& from, const QString& msg ) -{ - qDebug() << Q_FUNC_INFO << from << msg; -} - -#ifndef ENABLE_HEADLESS -void -SipHandler::onAvatarReceived( const QString& from, const QPixmap& avatar ) -{ -// qDebug() << Q_FUNC_INFO << "setting avatar on source for" << from; - if ( avatar.isNull() ) - { - return; - } - - m_usernameAvatars.insert( from, avatar ); - - ControlConnection *conn = Servent::instance()->lookupControlConnection( from ); - if( conn ) - { - Tomahawk::source_ptr source = conn->source(); - if( source ) - { - -// qDebug() << Q_FUNC_INFO << from << "got source, setting avatar on source:" << source->friendlyName(); - source->setAvatar( avatar ); - } - } -} - - -void -SipHandler::onAvatarReceived( const QPixmap& avatar ) -{ -// qDebug() << Q_FUNC_INFO << "Set own avatar on MyCollection"; - SourceList::instance()->getLocal()->setAvatar( avatar ); -} -#endif diff --git a/src/libtomahawk/sip/SipHandler.h b/src/libtomahawk/sip/SipHandler.h deleted file mode 100644 index cede506070..0000000000 --- a/src/libtomahawk/sip/SipHandler.h +++ /dev/null @@ -1,88 +0,0 @@ -/* === This file is part of Tomahawk Player - === - * - * Copyright 2010-2011, Christian Muehlhaeuser - * Copyright 2010-2011, Leo Franchi - * Copyright 2010-2011, Jeff Mitchell - * - * Tomahawk is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Tomahawk is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Tomahawk. If not, see . - */ - -#ifndef SIPHANDLER_H -#define SIPHANDLER_H - -#include "sip/SipPlugin.h" -#include "DllMacro.h" - -#include -#include -#include - -#ifndef ENABLE_HEADLESS - #include -#endif - -/** - * Manages SIP plugins for connecting to friends. External interface to SIP plugins is - * through AccountManager, this is an internal class. - */ - -class DLLEXPORT SipHandler : public QObject -{ - Q_OBJECT - -public: - static SipHandler* instance(); - - SipHandler( QObject* parent ); - ~SipHandler(); - - void loadFromAccountManager(); - -#ifndef ENABLE_HEADLESS - const QPixmap avatar( const QString& name ) const; -#endif - - //TODO: implement a proper SipInfo class and maybe attach it to the source - const SipInfo sipInfo( const QString& peerId ) const; - const QString versionString( const QString& peerId ) const; - - void hookUpPlugin( SipPlugin* p ); - -private slots: - void onSipInfo( const QString& peerId, const SipInfo& info ); - void onSoftwareVersion( const QString& peerId, const QString& versionString ); - void onMessage( const QString&, const QString& ); - void onPeerOffline( const QString& ); - void onPeerOnline( const QString& ); - -#ifndef ENABLE_HEADLESS - // set data for local source - void onAvatarReceived( const QPixmap& avatar ); - - // set data for other sources - void onAvatarReceived( const QString& from, const QPixmap& avatar ); -#endif - -private: - static SipHandler *s_instance; - - //TODO: move this to source - QHash m_peersSipInfos; - QHash m_peersSoftwareVersions; -#ifndef ENABLE_HEADLESS - QHash m_usernameAvatars; -#endif -}; - -#endif diff --git a/src/libtomahawk/sip/SipInfo.cpp b/src/libtomahawk/sip/SipInfo.cpp index 03596305d0..7280882f90 100644 --- a/src/libtomahawk/sip/SipInfo.cpp +++ b/src/libtomahawk/sip/SipInfo.cpp @@ -237,7 +237,8 @@ SipInfo::fromJson( QString json ) } -QDebug operator<< ( QDebug dbg, const SipInfo& info ) +QDebug +operator<< ( QDebug dbg, const SipInfo& info ) { if( !info.isValid() ) dbg.nospace() << "info is invalid"; @@ -246,3 +247,31 @@ QDebug operator<< ( QDebug dbg, const SipInfo& info ) return dbg.maybeSpace(); } + +bool operator==( const SipInfo& one, const SipInfo& two ) +{ + // check valid/invalid combinations first, so we don't try to access any invalid sipInfos (->assert) + if( !one.isValid() && !two.isValid() ) + { + return true; + } + else if( ( one.isValid() && !two.isValid() ) || ( !one.isValid() && two.isValid() ) ) + { + return false; + } + else if( one.isValid() && two.isValid() ) + { + if( one.isVisible() == two.isVisible() + && one.host() == two.host() + && one.port() == two.port() + && one.uniqname() == two.uniqname() + && one.key() == two.key() + ) + { + return true; + } + } + + return false; +} + diff --git a/src/libtomahawk/sip/SipInfo.h b/src/libtomahawk/sip/SipInfo.h index 4b5ea2b480..fbe417e04b 100644 --- a/src/libtomahawk/sip/SipInfo.h +++ b/src/libtomahawk/sip/SipInfo.h @@ -64,7 +64,7 @@ Q_OBJECT }; DLLEXPORT QDebug operator<<( QDebug dbg, const SipInfo &info ); +DLLEXPORT bool operator==( const SipInfo& one, const SipInfo& two ); - -#endif // SIPINFO_H \ No newline at end of file +#endif // SIPINFO_H diff --git a/src/libtomahawk/sip/SipPlugin.cpp b/src/libtomahawk/sip/SipPlugin.cpp index 484a44dbd3..a71b52e80e 100644 --- a/src/libtomahawk/sip/SipPlugin.cpp +++ b/src/libtomahawk/sip/SipPlugin.cpp @@ -23,6 +23,7 @@ #include "utils/Logger.h" #include "Source.h" +#include "sip/PeerInfo.h" SipPlugin::SipPlugin() : QObject() {} @@ -32,8 +33,7 @@ SipPlugin::SipPlugin( Tomahawk::Accounts::Account *account, QObject* parent ) : QObject( parent ) , m_account( account ) { - connect( this, SIGNAL( peerOnline( QString ) ), this, SLOT( onPeerOnline( QString ) ) ); - connect( this, SIGNAL( peerOffline( QString ) ), this, SLOT( onPeerOffline( QString ) ) ); + connect( account, SIGNAL( configurationChanged() ), SLOT( configurationChanged() ) ); } @@ -82,25 +82,16 @@ SipPlugin::account() const } -const QStringList +const QList< Tomahawk::peerinfo_ptr > SipPlugin::peersOnline() const { - return m_peersOnline; -} - - -void -SipPlugin::onPeerOnline( const QString& peerId ) -{ - if( !m_peersOnline.contains( peerId ) ) - { - m_peersOnline.append( peerId ); - } -} + QList< Tomahawk::peerinfo_ptr > result; + foreach( const Tomahawk::peerinfo_ptr& peerInfo, Tomahawk::PeerInfo::getAll() ) + { + if(peerInfo->sipPlugin() == this) + result.append( peerInfo ); + } -void -SipPlugin::onPeerOffline( const QString& peerId ) -{ - m_peersOnline.removeAll( peerId ); + return result; } diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index 63379fa77f..509ee9fbd0 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -59,7 +59,7 @@ class DLLEXPORT SipPlugin : public QObject virtual Tomahawk::Accounts::Account* account() const; // peer infos - virtual const QStringList peersOnline() const; + virtual const QList< Tomahawk::peerinfo_ptr > peersOnline() const; public slots: virtual void connectPlugin() = 0; @@ -67,38 +67,23 @@ public slots: virtual void checkSettings() = 0; virtual void configurationChanged() = 0; - virtual void addContact( const QString &jid, const QString& msg = QString() ) = 0; - virtual void sendMsg( const QString& to, const SipInfo& info ) = 0; + virtual void addContact( const QString& peerId, const QString& msg = QString() ) = 0; + virtual void sendSipInfo( const Tomahawk::peerinfo_ptr& receiver, const SipInfo& info ) = 0; signals: - void peerOnline( const QString& ); - void peerOffline( const QString& ); - void msgReceived( const QString& from, const QString& msg ); - void sipInfoReceived( const QString& peerId, const SipInfo& info ); - void softwareVersionReceived( const QString& peerId, const QString& versionString ); + void peerOnline( const Tomahawk::peerinfo_ptr& ); + void dataError( bool ); #ifndef ENABLE_HEADLESS // new data for own source void avatarReceived ( const QPixmap& avatar ); - // new data for other sources; - void avatarReceived ( const QString& from, const QPixmap& avatar); - void addMenu( QMenu* menu ); void removeMenu( QMenu* menu ); #endif - void dataError( bool ); - -private slots: - void onPeerOnline( const QString &peerId ); - void onPeerOffline( const QString &peerId ); - protected: Tomahawk::Accounts::Account *m_account; - -private: - QStringList m_peersOnline; }; #endif From 259f4969859fcb2b219dd49b0450618672d690c6 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 12 Jan 2013 13:29:47 +0100 Subject: [PATCH 223/310] Unnecessary asserts are unnecessary. --- src/libtomahawk/network/Servent.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index 04df4aa7bf..7fe1109592 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -511,7 +511,6 @@ Servent::readyRead() foreach(ControlConnection* keepConnection, m_controlconnections) { - Q_ASSERT(keepConnection); if( !keepConnection ) continue; @@ -1040,7 +1039,6 @@ Servent::connectedToSession( const QString& session ) { foreach( ControlConnection* cc, m_controlconnections ) { - Q_ASSERT( cc ); if( !cc ) continue; From 352dd7588d13a90263419392474d5b862e6ca6d2 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sun, 13 Jan 2013 17:46:14 +0100 Subject: [PATCH 224/310] Add PeerInfo to Source and SourceItem tooltips. --- src/libtomahawk/Source.cpp | 8 ++++++++ src/libtomahawk/Source.h | 2 ++ src/sourcetree/items/SourceItem.cpp | 19 ++++++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/Source.cpp b/src/libtomahawk/Source.cpp index 732a914f7c..d286b9d113 100644 --- a/src/libtomahawk/Source.cpp +++ b/src/libtomahawk/Source.cpp @@ -85,6 +85,14 @@ Source::setControlConnection( ControlConnection* cc ) m_cc = cc; } +const QSet +Source::peerInfos() const +{ + if( controlConnection() ) + return controlConnection()->peerInfos(); + return QSet< Tomahawk::peerinfo_ptr >(); +} + collection_ptr Source::collection() const diff --git a/src/libtomahawk/Source.h b/src/libtomahawk/Source.h index 97368ed702..4943ebed23 100644 --- a/src/libtomahawk/Source.h +++ b/src/libtomahawk/Source.h @@ -77,6 +77,8 @@ friend class ::MusicScanner; ControlConnection* controlConnection() const { return m_cc; } void setControlConnection( ControlConnection* cc ); + const QSet< Tomahawk::peerinfo_ptr > peerInfos() const; + void scanningProgress( unsigned int files ); void scanningFinished( bool updateGUI ); diff --git a/src/sourcetree/items/SourceItem.cpp b/src/sourcetree/items/SourceItem.cpp index 50f4234d0d..b6771f3284 100644 --- a/src/sourcetree/items/SourceItem.cpp +++ b/src/sourcetree/items/SourceItem.cpp @@ -1,6 +1,7 @@ /* * Copyright 2010-2011, Leo Franchi * Copyright 2010-2012, Jeff Mitchell + * Copyright 2013, Teo Mrnjavac * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,6 +34,7 @@ #include "playlist/RecentlyAddedModel.h" #include "playlist/RecentlyPlayedModel.h" #include "playlist/PlaylistLargeItemDelegate.h" +#include "sip/PeerInfo.h" #include "utils/ImageRegistry.h" #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" @@ -143,10 +145,21 @@ SourceItem::text() const QString SourceItem::tooltip() const { - if ( !m_source.isNull() && !m_source->currentTrack().isNull() ) - return m_source->textStatus(); + if ( m_source.isNull() || m_source->peerInfos().isEmpty() ) + return QString(); - return QString(); + QString t; + + // This is kind of debug output for now. + foreach( Tomahawk::peerinfo_ptr p, m_source->peerInfos() ) + { + t.append( p->id() + "
" ); + } + + if ( !m_source->currentTrack().isNull() ) + t.append( m_source->textStatus() ); + + return t; } From 80900a546da9f12abbcef0d1139a8c010222ba0f Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 13 Jan 2013 17:17:09 +0100 Subject: [PATCH 225/310] Properly init PeerInfo in its ctor --- src/libtomahawk/sip/PeerInfo.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index 635bd23693..a3109c822a 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -70,11 +70,12 @@ PeerInfo::getAll() PeerInfo::PeerInfo( SipPlugin* parent, const QString& id ) : QObject( parent ) , m_type( External ) + , m_id( id ) + , m_status( Offline ) , m_avatar( 0 ) , m_fancyAvatar( 0 ) , m_avatarUpdated( true ) { - m_id = id; } From 330eb81a0a9810d851bf3ff994032f1351d47164 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 13 Jan 2013 17:54:11 +0100 Subject: [PATCH 226/310] Fix updating the DiagnosticsDialog when new peers are set online --- src/DiagnosticsDialog.cpp | 2 +- src/libtomahawk/sip/PeerInfo.cpp | 6 ++++++ src/libtomahawk/sip/SipPlugin.h | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/DiagnosticsDialog.cpp b/src/DiagnosticsDialog.cpp index 3e1d42b98d..77efc0a722 100644 --- a/src/DiagnosticsDialog.cpp +++ b/src/DiagnosticsDialog.cpp @@ -109,7 +109,7 @@ DiagnosticsDialog::updateLogView() connect( account, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); connect( account, SIGNAL( error( int, QString ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); - connect( account->sipPlugin(), SIGNAL( peerOnline( Tomahawk::peerinfo_ptr ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); + connect( account->sipPlugin(), SIGNAL( peerStatusChanged( Tomahawk::peerinfo_ptr ) ), SLOT( updateLogView() ), Qt::UniqueConnection ); log.append( accountLog( account ) + "\n" ); } diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index a3109c822a..554d75a87d 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -177,6 +177,12 @@ PeerInfo::setStatus( PeerInfo::Status status ) if( status == Online ) announce(); + + // we need this to update the DiagnosticsDialog on new peers + // if we ever happen to have a central PeerInfo manager object + // we better add it there, but so far this would be the only + // usage + sipPlugin()->peerStatusChanged( weakRef().toStrongRef() ); } diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index 509ee9fbd0..0a500bf166 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -41,6 +41,8 @@ class DLLEXPORT SipPlugin : public QObject { Q_OBJECT +friend Tomahawk::PeerInfo; + public: SipPlugin(); explicit SipPlugin( Tomahawk::Accounts::Account *account, QObject* parent = 0 ); @@ -71,7 +73,7 @@ public slots: virtual void sendSipInfo( const Tomahawk::peerinfo_ptr& receiver, const SipInfo& info ) = 0; signals: - void peerOnline( const Tomahawk::peerinfo_ptr& ); + void peerStatusChanged( const Tomahawk::peerinfo_ptr& ); void dataError( bool ); #ifndef ENABLE_HEADLESS From b9ae0eec8ed4e0f8eb03dd72b184b044ee0037db Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 13 Jan 2013 19:09:37 +0100 Subject: [PATCH 227/310] Add some useful data to the debugging tooltip --- src/sourcetree/items/SourceItem.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/sourcetree/items/SourceItem.cpp b/src/sourcetree/items/SourceItem.cpp index b6771f3284..daf2f5bad7 100644 --- a/src/sourcetree/items/SourceItem.cpp +++ b/src/sourcetree/items/SourceItem.cpp @@ -35,6 +35,7 @@ #include "playlist/RecentlyPlayedModel.h" #include "playlist/PlaylistLargeItemDelegate.h" #include "sip/PeerInfo.h" +#include "sip/SipPlugin.h" #include "utils/ImageRegistry.h" #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" @@ -151,10 +152,15 @@ SourceItem::tooltip() const QString t; // This is kind of debug output for now. + t.append( "
" );
     foreach( Tomahawk::peerinfo_ptr p, m_source->peerInfos() )
     {
-        t.append( p->id() + "
" ); + QString line( p->sipPlugin()->serviceName() + p->sipPlugin()->friendlyName() + ": " + p->id() ); + + t.append( line + "\n" ); + t.append("\n"); } + t.append( "
" ); if ( !m_source->currentTrack().isNull() ) t.append( m_source->textStatus() ); From 11569abdd79f2e1cc979f6906752cfca013d91fd Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 14 Jan 2013 05:25:08 +0100 Subject: [PATCH 228/310] Fix all the style issues! --- src/accounts/xmpp/sip/XmppSip.cpp | 4 +-- src/libtomahawk/network/Servent.cpp | 47 +++++++++++++++-------------- src/libtomahawk/sip/SipInfo.cpp | 11 +++---- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index 472b255e2e..d08debfc2f 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -435,7 +435,7 @@ XmppSipPlugin::errorMessage( Jreen::Client::DisconnectReason reason ) void XmppSipPlugin::sendSipInfo( const Tomahawk::peerinfo_ptr& receiver, const SipInfo& info ) { - qDebug() << Q_FUNC_INFO << receiver << info; + tDebug( LOGVERBOSE ) << Q_FUNC_INFO << receiver << info; if ( !m_client ) return; @@ -938,7 +938,7 @@ XmppSipPlugin::handlePeerStatus( const Jreen::JID& jid, Jreen::Presence::Type pr { QString fulljid = jid.full(); - if(fulljid.contains("public.talk.google.com")) + if( fulljid.contains( "public.talk.google.com" ) ) return; // "going offline" event diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index 7fe1109592..df32148e00 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -290,11 +290,11 @@ Servent::registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ) { if( peerInfo->hasControlConnection() ) { - peerInfoDebug(peerInfo) << "already had control connection, not doin nuffin: " << peerInfo->controlConnection()->name(); + peerInfoDebug( peerInfo ) << "already had control connection, not doin nuffin: " << peerInfo->controlConnection()->name(); tLog() << "existing control connection has following peers:"; foreach(const peerinfo_ptr& otherPeerInfo, peerInfo->controlConnection()->peerInfos()) { - peerInfoDebug(otherPeerInfo); + peerInfoDebug( otherPeerInfo ); } tLog() << "end peers"; @@ -306,7 +306,7 @@ Servent::registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ) peerInfoDebug(peerInfo) << "YAY, we need to establish the connection now.. thinking"; if ( !connectedToSession( peerInfo->sipInfo().uniqname() ) ) { - Servent::instance()->connectToPeer( peerInfo ); + connectToPeer( peerInfo ); } else { @@ -328,25 +328,25 @@ Servent::registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ) else { SipInfo info; - if( Servent::instance()->visibleExternally() ) + if( visibleExternally() ) { QString peerId = peerInfo->id(); QString key = uuid(); - ControlConnection* conn = new ControlConnection( Servent::instance() ); + ControlConnection* conn = new ControlConnection( this ); const QString& nodeid = Database::instance()->impl()->dbid(); conn->setName( peerId.left( peerId.indexOf( "/" ) ) ); conn->setId( nodeid ); conn->addPeerInfo( peerInfo ); - Servent::instance()->registerOffer( key, conn ); + registerOffer( key, conn ); info.setVisible( true ); - info.setHost( Servent::instance()->externalAddress() ); - info.setPort( Servent::instance()->externalPort() ); + info.setHost( externalAddress() ); + info.setPort( externalPort() ); info.setKey( key ); info.setUniqname( nodeid ); - tDebug() << "Asking them ( " << peerInfo->id() << " ) to connect to us:" << info; + tDebug() << "Asking them (" << peerInfo->id() << ") to connect to us:" << info; } else { @@ -389,13 +389,13 @@ void Servent::handleSipInfo( const Tomahawk::peerinfo_ptr& peerInfo ) */ if ( info.isVisible() ) { - if( !Servent::instance()->visibleExternally() || - Servent::instance()->externalAddress() < info.host() || - ( Servent::instance()->externalAddress() == info.host() && Servent::instance()->externalPort() < info.port() ) ) + if( !visibleExternally() || + externalAddress() < info.host() || + ( externalAddress() == info.host() && externalPort() < info.port() ) ) { tDebug() << "Initiate connection to" << peerInfo->id() << "at" << info.host() << " peer of: " << peerInfo->sipPlugin()->account()->accountFriendlyName(); - Servent::instance()->connectToPeer( peerInfo ); + connectToPeer( peerInfo ); } else { @@ -503,13 +503,13 @@ Servent::readyRead() tLog() << "Duplicate control connection detected, dropping:" << nodeid << conntype; tDebug() << "PEERINFO: to be dropped connection has following peers"; - foreach(const peerinfo_ptr& currentPeerInfo, ccMatch->peerInfos() ) + foreach( const peerinfo_ptr& currentPeerInfo, ccMatch->peerInfos() ) { - peerInfoDebug(currentPeerInfo); + peerInfoDebug( currentPeerInfo ); } - foreach(ControlConnection* keepConnection, m_controlconnections) + foreach( ControlConnection* keepConnection, m_controlconnections ) { if( !keepConnection ) continue; @@ -518,7 +518,7 @@ Servent::readyRead() { tDebug() << "Keep connection" << keepConnection->name() << "with following peers"; foreach( const peerinfo_ptr& currentPeerInfo, keepConnection->peerInfos() ) - peerInfoDebug(currentPeerInfo); + peerInfoDebug( currentPeerInfo ); tDebug() << "Add these peers now"; foreach( const peerinfo_ptr& currentPeerInfo, ccMatch->peerInfos() ) @@ -699,7 +699,7 @@ Servent::connectToPeer( const peerinfo_ptr& peerInfo ) SipInfo sipInfo = peerInfo->sipInfo(); - peerInfoDebug(peerInfo) << "connectToPeer: search for already established connections to the same nodeid: " << m_controlconnections.count() << "connections"; + peerInfoDebug( peerInfo ) << "connectToPeer: search for already established connections to the same nodeid: " << m_controlconnections.count() << "connections"; bool isDupe = false; ControlConnection* conn = 0; @@ -714,14 +714,14 @@ Servent::connectToPeer( const peerinfo_ptr& peerInfo ) conn = c; - foreach(const peerinfo_ptr& currentPeerInfo, c->peerInfos()) + foreach( const peerinfo_ptr& currentPeerInfo, c->peerInfos() ) { - tLog() << "peerInfo:" << currentPeerInfo->debugName() << "same object: " << (peerInfo == currentPeerInfo) << (peerInfo.data() == currentPeerInfo.data()) << (peerInfo->debugName() == currentPeerInfo->debugName()); + peerInfoDebug( currentPeerInfo ) << "Same object: " << ( peerInfo == currentPeerInfo ) << ( peerInfo.data() == currentPeerInfo.data() ) << ( peerInfo->debugName() == currentPeerInfo->debugName() ); if(peerInfo == currentPeerInfo) { isDupe = true; - tLog() << "Not adding " << peerInfo->debugName() << ", because it's a dupe: peerInfoCount remains " << conn->peerInfos().count(); + peerInfoDebug( currentPeerInfo ) << "Not adding, because it's a dupe: peerInfoCount remains the same " << conn->peerInfos().count(); } } @@ -883,6 +883,7 @@ Servent::claimOffer( ControlConnection* cc, const QString &nodeid, const QString conn->setName( peer.toString() ); Tomahawk::Accounts::Account* account = Tomahawk::Accounts::AccountManager::instance()->zeroconfAccount(); + // if we get this connection the account should exist and be enabled Q_ASSERT( account ); Q_ASSERT( account->enabled() ); @@ -890,8 +891,8 @@ Servent::claimOffer( ControlConnection* cc, const QString &nodeid, const QString // this is terrible, actually there should be a way to let this be created by the zeroconf plugin // because this way we rely on the ip being used as id in two totally different parts of the code Tomahawk::peerinfo_ptr peerInfo = Tomahawk::PeerInfo::get( account->sipPlugin(), peer.toString(), Tomahawk::PeerInfo::AutoCreate ); - peerInfoDebug(peerInfo); - conn->addPeerInfo(peerInfo); + peerInfoDebug( peerInfo ); + conn->addPeerInfo( peerInfo ); return conn; } else diff --git a/src/libtomahawk/sip/SipInfo.cpp b/src/libtomahawk/sip/SipInfo.cpp index 7280882f90..6ccec9ccba 100644 --- a/src/libtomahawk/sip/SipInfo.cpp +++ b/src/libtomahawk/sip/SipInfo.cpp @@ -251,22 +251,21 @@ operator<< ( QDebug dbg, const SipInfo& info ) bool operator==( const SipInfo& one, const SipInfo& two ) { // check valid/invalid combinations first, so we don't try to access any invalid sipInfos (->assert) - if( !one.isValid() && !two.isValid() ) + if ( !one.isValid() && !two.isValid() ) { return true; } - else if( ( one.isValid() && !two.isValid() ) || ( !one.isValid() && two.isValid() ) ) + else if ( ( one.isValid() && !two.isValid() ) || ( !one.isValid() && two.isValid() ) ) { return false; } - else if( one.isValid() && two.isValid() ) + else if ( one.isValid() && two.isValid() ) { - if( one.isVisible() == two.isVisible() + if ( one.isVisible() == two.isVisible() && one.host() == two.host() && one.port() == two.port() && one.uniqname() == two.uniqname() - && one.key() == two.key() - ) + && one.key() == two.key() ) { return true; } From 37882d5bcf7fe4142aa641da1ac94111d968ea9a Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 14 Jan 2013 05:30:07 +0100 Subject: [PATCH 229/310] Add missing emit --- src/libtomahawk/sip/PeerInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index 554d75a87d..6bdafb5759 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -182,7 +182,7 @@ PeerInfo::setStatus( PeerInfo::Status status ) // if we ever happen to have a central PeerInfo manager object // we better add it there, but so far this would be the only // usage - sipPlugin()->peerStatusChanged( weakRef().toStrongRef() ); + emit sipPlugin()->peerStatusChanged( weakRef().toStrongRef() ); } From 62df8a2eddf734617fd398d27ad9e55bfbcb3992 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 14 Jan 2013 06:18:10 +0100 Subject: [PATCH 230/310] Take sources offline if no peerinfos are available anymore --- src/accounts/xmpp/sip/XmppSip.cpp | 2 ++ src/accounts/zeroconf/Zeroconf.cpp | 2 ++ src/libtomahawk/network/ControlConnection.cpp | 16 ++++++++++++++++ src/libtomahawk/network/ControlConnection.h | 1 + src/libtomahawk/sip/PeerInfo.cpp | 6 ++++++ src/libtomahawk/sip/SipPlugin.cpp | 9 +++++++++ src/libtomahawk/sip/SipPlugin.h | 2 ++ 7 files changed, 38 insertions(+) diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index d08debfc2f..68f71ad838 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -272,6 +272,8 @@ XmppSipPlugin::disconnectPlugin() emit stateChanged( m_state ); m_client->disconnectFromServer( true ); + + setAllPeersOffline(); } diff --git a/src/accounts/zeroconf/Zeroconf.cpp b/src/accounts/zeroconf/Zeroconf.cpp index 3497651278..15f8e10d20 100644 --- a/src/accounts/zeroconf/Zeroconf.cpp +++ b/src/accounts/zeroconf/Zeroconf.cpp @@ -106,6 +106,8 @@ ZeroconfPlugin::disconnectPlugin() delete m_zeroconf; m_zeroconf = 0; + + setAllPeersOffline(); } diff --git a/src/libtomahawk/network/ControlConnection.cpp b/src/libtomahawk/network/ControlConnection.cpp index 0f7294c7af..c156496e2e 100644 --- a/src/libtomahawk/network/ControlConnection.cpp +++ b/src/libtomahawk/network/ControlConnection.cpp @@ -280,6 +280,22 @@ ControlConnection::addPeerInfo( const peerinfo_ptr& peerInfo ) } +void +ControlConnection::removePeerInfo( const peerinfo_ptr& peerInfo ) +{ + peerInfoDebug( peerInfo ) << "Remove peer from control connection:" << name(); + Q_ASSERT( peerInfo->controlConnection() == this ); + Q_ASSERT( m_peerInfos.contains( peerInfo ) ); + + m_peerInfos.remove( peerInfo ); + + if ( m_peerInfos.isEmpty() ) + { + shutdown( true ); + } +} + + const QSet< peerinfo_ptr > ControlConnection::peerInfos() const { diff --git a/src/libtomahawk/network/ControlConnection.h b/src/libtomahawk/network/ControlConnection.h index 91cbf60ebc..470f92cc20 100644 --- a/src/libtomahawk/network/ControlConnection.h +++ b/src/libtomahawk/network/ControlConnection.h @@ -49,6 +49,7 @@ Q_OBJECT Tomahawk::source_ptr source() const; void addPeerInfo( const Tomahawk::peerinfo_ptr& peerInfo ); + void removePeerInfo( const Tomahawk::peerinfo_ptr& peerInfo ); const QSet< Tomahawk::peerinfo_ptr > peerInfos() const; protected: diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index 6bdafb5759..27355f69ed 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -176,7 +176,13 @@ PeerInfo::setStatus( PeerInfo::Status status ) m_status = status; if( status == Online ) + { announce(); + } + else if( status == Offline && controlConnection() ) + { + controlConnection()->removePeerInfo( weakRef().toStrongRef() ); + } // we need this to update the DiagnosticsDialog on new peers // if we ever happen to have a central PeerInfo manager object diff --git a/src/libtomahawk/sip/SipPlugin.cpp b/src/libtomahawk/sip/SipPlugin.cpp index a71b52e80e..cc74cf4567 100644 --- a/src/libtomahawk/sip/SipPlugin.cpp +++ b/src/libtomahawk/sip/SipPlugin.cpp @@ -95,3 +95,12 @@ SipPlugin::peersOnline() const return result; } + + +void SipPlugin::setAllPeersOffline() +{ + foreach( const Tomahawk::peerinfo_ptr& peerInfo, peersOnline() ) + { + peerInfo->setStatus( Tomahawk::PeerInfo::Offline ); + } +} diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index 0a500bf166..83e3156241 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -85,6 +85,8 @@ public slots: #endif protected: + void setAllPeersOffline(); + Tomahawk::Accounts::Account *m_account; }; From 31c695e04a2339aae1a5114ebbde79cee8509880 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 14 Jan 2013 06:40:53 +0100 Subject: [PATCH 231/310] untested: Try to only take sources offline if user explicitly set xmpp-account offline not if connection failed --- src/accounts/xmpp/sip/XmppSip.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index 68f71ad838..2333f5d979 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -325,6 +325,10 @@ XmppSipPlugin::onDisconnect( Jreen::Client::DisconnectReason reason ) switch( reason ) { case Jreen::Client::User: + foreach( const Jreen::JID &peer, m_peers.keys() ) + { + handlePeerStatus( peer, Jreen::Presence::Unavailable ); + } break; case Jreen::Client::AuthorizationError: @@ -356,11 +360,6 @@ XmppSipPlugin::onDisconnect( Jreen::Client::DisconnectReason reason ) removeMenuHelper(); - Q_FOREACH( const Jreen::JID &peer, m_peers.keys() ) - { - handlePeerStatus( peer, Jreen::Presence::Unavailable ); - } - if ( !m_infoPlugin.isNull() ) Tomahawk::InfoSystem::InfoSystem::instance()->removeInfoPlugin( infoPlugin() ); } From f430738206119890335d2d3e0a8cc3bf2602c76d Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 14 Jan 2013 23:18:24 +0100 Subject: [PATCH 232/310] Don't rely on C++11 extensions --- src/libtomahawk/sip/SipPlugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index 83e3156241..f7f179e2b6 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -41,7 +41,7 @@ class DLLEXPORT SipPlugin : public QObject { Q_OBJECT -friend Tomahawk::PeerInfo; +friend class Tomahawk::PeerInfo; public: SipPlugin(); From 0b0592a3983c0f1a66173b0ca0ebc74edfb50446 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Tue, 15 Jan 2013 01:16:54 +0100 Subject: [PATCH 233/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 88 +++++++++---------- lang/tomahawk_bg.ts | 88 +++++++++---------- lang/tomahawk_bn_IN.ts | 88 +++++++++---------- lang/tomahawk_ca.ts | 88 +++++++++---------- lang/tomahawk_cs.ts | 88 +++++++++---------- lang/tomahawk_da.ts | 88 +++++++++---------- lang/tomahawk_de.ts | 88 +++++++++---------- lang/tomahawk_el.ts | 88 +++++++++---------- lang/tomahawk_en.ts | 88 +++++++++---------- lang/tomahawk_es.ts | 88 +++++++++---------- lang/tomahawk_fi.ts | 88 +++++++++---------- lang/tomahawk_fr.ts | 88 +++++++++---------- lang/tomahawk_gl.ts | 88 +++++++++---------- lang/tomahawk_hi_IN.ts | 88 +++++++++---------- lang/tomahawk_hu.ts | 88 +++++++++---------- lang/tomahawk_it.ts | 88 +++++++++---------- lang/tomahawk_ja.ts | 88 +++++++++---------- lang/tomahawk_lt.ts | 88 +++++++++---------- lang/tomahawk_pl.ts | 88 +++++++++---------- lang/tomahawk_pt_BR.ts | 88 +++++++++---------- lang/tomahawk_ru.ts | 88 +++++++++---------- lang/tomahawk_sv.ts | 192 ++++++++++++++++++++--------------------- lang/tomahawk_tr.ts | 88 +++++++++---------- lang/tomahawk_zh_CN.ts | 88 +++++++++---------- lang/tomahawk_zh_TW.ts | 88 +++++++++---------- 25 files changed, 1152 insertions(+), 1152 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 137f38eea6..6ed5decdb9 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -1732,58 +1732,58 @@ connect and stream from you? SourceItem - + Collection مجموعة - - + + Latest Additions أحدث الإضافات - + Recently Played تم الاستماع لها مؤخرا - + SuperCollection سوبر كولكشن - + Latest additions to your collection آخر إضافات على مجموعتك - + Latest additions to %1's collection آخر إضافات على مجموعة %1 - + Sorry, we could not find any recent additions! نعتذر، لم نستطيع إيجاد إضافة جديدة! - + Recently Played Tracks الأغاني التي إستمعت إليها مؤخرا - + Your recently played tracks الأغاني التي إستمعت إليها مؤخرا - + %1's recently played tracks الأغاني التي سمعها مؤخرا %1 - + Sorry, we could not find any recent plays! نعتذر، لم نستطيع إيجاد أغاني مسموعة مؤخرا! @@ -3208,43 +3208,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) يجري مسح (%L1 أغنية) - + Scanning مسح - + Checking فحص - + Syncing مزامنة - + Importing استيراد - + Saving (%1%) تحفيظ(%1%) - + Online متصل - + Offline غير متصل @@ -3291,7 +3291,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -4009,112 +4009,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction تفاعل المستخدم - + Host is unknown المضيف مجهول - + Item not found البند غير موجودة - + Authorization Error خطا في الترخيص - + Remote Stream Error خطأ في التحميل (المجرى) البعيد - + Remote Connection failed فشل في الاتصال البعيد - + Internal Server Error خطأ داخلي في الخادم - + System shutdown إغلاق النظام - + Conflict تضارب - + Unknown مجهول - + Do you want to add <b>%1</b> to your friend list? هل تريد اضافة <b>%1</b> الى قائمة اصدقائك؟ - + No Compression Support لا دعم للضغط - + Enter Jabber ID أدخل تعريف جابر (Jabber ID) - + No Encryption Support لا دعم للتشفير - + No Authorization Support لا دعم للترخيص - + No Supported Feature لا ميزة معتمدة - + Add Friend أضف صديق - + Enter Xmpp ID: أدخل تعريف أكسمبب (XMPP ID): - + Add Friend... أضف صديق... - + XML Console... وحدة التحكم XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! أنا أسف... أنا مجرد وجود ألي مستخدم من قبل توماهوك (http://gettomahawk.com). في حال الحصول على هذه الرسالة، فإن الشخص اللذي تحاول الوصول إليه خارج الخدمة، فنرجو المحاولة لاحقاً! - + Authorize User أعطي الإذن للمستخدم diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index a38a627b17..35ee08073d 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -1741,59 +1741,59 @@ Tomahawk създаде доклад относно това и изпращай SourceItem - + Collection Колекция - - + + Latest Additions Последно добавени - + Recently Played Наскоро изпълнени песни - + SuperCollection Обща колекция /Сборен излед от локалните и наличните в колекциите на приятелите ти/ - + Latest additions to your collection Последно добавени към колекцията - + Latest additions to %1's collection Последно добавени в колекцията на %1 - + Sorry, we could not find any recent additions! Съжалявам, но не откривам нито една ново-добавена позиция! - + Recently Played Tracks Наскоро изпълнени песни - + Your recently played tracks Наскоро изпълнени песни от теб - + %1's recently played tracks Наскоро изпълнените песни от %1 - + Sorry, we could not find any recent plays! Съжалявам, но не откривам нито една наскоро изпълнена песен! @@ -3222,43 +3222,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) Сканиране (%L1 песни) - + Scanning Сканирам - + Checking Проверявам - + Syncing Синхронизиране - + Importing Импортиране - + Saving (%1%) Запазвам (%1%) - + Online На линия - + Offline Извън линия @@ -3305,7 +3305,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Локална мрежа @@ -4024,107 +4024,107 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Действие от потребителя - + Host is unknown Непознат адрес - + Item not found Обектът не е открит - + Authorization Error Грешка при даване на достъп - + Remote Stream Error Грешка в стриймът от отдалечената машина - + Remote Connection failed Отдалечената връзка е неуспешна - + Internal Server Error Вътрешна грешка на сървъра - + System shutdown Изключване на системата - + Conflict Конфликт - + Unknown Неизвестно - + Do you want to add <b>%1</b> to your friend list? Желаеш ли да добавиш <b>%1</b> към списъкът си с приятели? - + No Compression Support Няма поддръжка на компресия - + Enter Jabber ID Въведи Jabber адрес - + No Encryption Support Няма поддръжка на криптиране - + No Authorization Support Няма поддръжка на удостоверяване - + No Supported Feature Неподдържана функция - + Add Friend Добави приятел - + Enter Xmpp ID: Въведи Xmpp ID: - + Add Friend... Добави приятел... - + XML Console... XML Конзола... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Извинявай.. Аз съм режимът за автоматични отговори изпълзван от Tomahawk. @@ -4132,7 +4132,7 @@ Lyrics for "%1" by %2: Щом получаваш това съобщение, този с когото се опитваш да се свържеш вероятно не е на линия, така че опитай отново по-късно. - + Authorize User Оправомощяване на потребител diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 6f7ec3e6fc..187fedbcff 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection - - + + Latest Additions - + Recently Played - + SuperCollection - + Latest additions to your collection - + Latest additions to %1's collection - + Sorry, we could not find any recent additions! - + Recently Played Tracks - + Your recently played tracks - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) - + Scanning - + Checking - + Syncing - + Importing - + Saving (%1%) - + Online - + Offline @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction - + Host is unknown - + Item not found - + Authorization Error - + Remote Stream Error - + Remote Connection failed - + Internal Server Error - + System shutdown - + Conflict - + Unknown - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support - + Enter Jabber ID - + No Encryption Support - + No Authorization Support - + No Supported Feature - + Add Friend - + Enter Xmpp ID: - + Add Friend... - + XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 02bbe6c645..b95f9e8fd1 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -1730,58 +1730,58 @@ connect and stream from you? SourceItem - + Collection Col·lecció - - + + Latest Additions Darreres Novetats - + Recently Played Escoltades Recentment - + SuperCollection SuperCol·lecció - + Latest additions to your collection Darreres novetats a la vostra col·lecció - + Latest additions to %1's collection Darreres novetats a la col·lecció de %1 - + Sorry, we could not find any recent additions! - + Recently Played Tracks Cançons Escoltades Recentment - + Your recently played tracks Cançons Escoltades Recentment - + %1's recently played tracks Cançons Escoltades Recentment per %1 - + Sorry, we could not find any recent plays! @@ -3206,43 +3206,43 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::Source - - + + Scanning (%L1 tracks) Escanejant (%L1 cançons) - + Scanning Escanejant - + Checking Comprovant - + Syncing S'està sincronitzant - + Importing S'està important - + Saving (%1%) Desant (%1%) - + Online En línia - + Offline Fora de línia @@ -3289,7 +3289,7 @@ introduïu el PIN aquí: TomahawkSettings - + Local Network @@ -4005,112 +4005,112 @@ Lletres de la cancó "%1" de %2: XmppSipPlugin - + User Interaction Interacció d'usuari - + Host is unknown El nom de l'ordinador és desconegut - + Item not found No s'ha trobat l'element - + Authorization Error Error d'autorització - + Remote Stream Error Error de flux remot - + Remote Connection failed Ha fallat la connexió remota - + Internal Server Error Error del servidor intern - + System shutdown Sistema apagat - + Conflict Conflicte - + Unknown Desconegut - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support Compressió no suportada - + Enter Jabber ID - + No Encryption Support Encriptació no suportada - + No Authorization Support Autorització no suportada - + No Supported Feature Característica no suportada - + Add Friend Afegeix un Amic - + Enter Xmpp ID: Introduiu la ID XMPP: - + Add Friend... Afegeix un Amic... - + XML Console... Consola XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Sóc una presència automàtica emprada pel Reproductor Tomahawk. (http://gettomahawk.com. Si rebeu aquest missatge, la persona amb qui intenteu contactar probablement no està en línia, intenteu-ho més tard! - + Authorize User Autorització d'Usuari diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 9a68e4d042..6624d4e29a 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -1731,58 +1731,58 @@ se s vámi spojil? SourceItem - + Collection Sbírka - - + + Latest Additions Nedávné přídavky - + Recently Played Nedávno poslouchané - + SuperCollection Supersbírka - + Latest additions to your collection Nejnovější písně ve vaší sbírce - + Latest additions to %1's collection Nejnovější písně ve sbírce %1's - + Sorry, we could not find any recent additions! Promiňte, ale nepodařilo se najít žádné nedávné přídavky! - + Recently Played Tracks Nedávno poslouchané skladby - + Your recently played tracks Vaše nedávno poslouchané skladby - + %1's recently played tracks %1's nedávno poslouchaných skladeb - + Sorry, we could not find any recent plays! Promiňte, ale nepodařilo se najít žádné nedávno přehrávané skladby! @@ -3207,43 +3207,43 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::Source - - + + Scanning (%L1 tracks) Prohledává se (%L1 skladeb) - + Scanning Prohledává se - + Checking Přezkušuje se - + Syncing Seřizuje se - + Importing Zavádí se - + Saving (%1%) Ukládá se (%1%) - + Online Připojený - + Offline Nepřipojený @@ -3290,7 +3290,7 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: TomahawkSettings - + Local Network Místní síť @@ -4006,112 +4006,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Interakce uživatele - + Host is unknown Hostitel je neznámý - + Item not found Záznam nenalezen - + Authorization Error Chyba při ověřování - + Remote Stream Error Chyba spojení - + Remote Connection failed Chyba spojení - + Internal Server Error Chyba vnitřního serveru - + System shutdown Vypnutí systému - + Conflict Střet - + Unknown Neznámý - + Do you want to add <b>%1</b> to your friend list? Chcete přidat <b>%1</b> ke svým přátelům? - + No Compression Support Žádná podpora pro kompresi - + Enter Jabber ID Zadat ID pro Jabber - + No Encryption Support Žádná podpora pro šifrování - + No Authorization Support Žádná podpora pro povolování - + No Supported Feature Žádná podporovaná vlastnost - + Add Friend Přidat přítele - + Enter Xmpp ID: Identifikátor uživatele XMPP: - + Add Friend... Přidat přítele... - + XML Console... Konzole XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Promiňte-- Jsem jen automatická přítomnost používaná přehrávačem Tomahawk (http://gettomahawk.com). Pokud jste dostal tuto zprávu, osoba, již se pokoušíte zastihnout, pravděpodobně není přihlášena. Zkuste to proto, prosím, později znovu! - + Authorize User Povolit uživatele diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts index e1b23edb69..25d89d73ed 100644 --- a/lang/tomahawk_da.ts +++ b/lang/tomahawk_da.ts @@ -1730,58 +1730,58 @@ connect and stream from you? SourceItem - + Collection Samling - - + + Latest Additions Seneste Tilføjelser - + Recently Played Senest Afspillet - + SuperCollection SuperSamling - + Latest additions to your collection - + Latest additions to %1's collection - + Sorry, we could not find any recent additions! - + Recently Played Tracks - + Your recently played tracks - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3200,43 +3200,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) Scanner (%L1 numre) - + Scanning Scanner - + Checking Checker - + Syncing - + Importing - + Saving (%1%) Gemmer (%1%) - + Online - + Offline @@ -3282,7 +3282,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3987,112 +3987,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction - + Host is unknown - + Item not found - + Authorization Error - + Remote Stream Error - + Remote Connection failed - + Internal Server Error - + System shutdown - + Conflict - + Unknown - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support - + Enter Jabber ID - + No Encryption Support - + No Authorization Support - + No Supported Feature - + Add Friend - + Enter Xmpp ID: - + Add Friend... - + XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 52c858e5cb..67de992f4e 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -1731,58 +1731,58 @@ erlauben sich mit dir zu verbinden? SourceItem - + Collection Sammlung - - + + Latest Additions Kürzlich hinzugekommen - + Recently Played Kürzlich gehörte Lieder - + SuperCollection Supersammlung - + Latest additions to your collection Neueste Lieder in deiner Sammlung - + Latest additions to %1's collection Neueste Lieder in %1's Sammlung - + Sorry, we could not find any recent additions! Sorry, wir konnten keine Lieder finden die kürzlich hinzugefügt wurden! - + Recently Played Tracks Zuletzt gehörte Lieder - + Your recently played tracks Deine zuletzt gehörten Lieder - + %1's recently played tracks %1's zuletzt gehörte Lieder - + Sorry, we could not find any recent plays! Sorry, wir konnten keine kürzlich gespielten Lieder finden! @@ -3205,43 +3205,43 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::Source - - + + Scanning (%L1 tracks) Scanne (%L1 Stücke) - + Scanning Scanne - + Checking Überprüfe - + Syncing Synchronisiere - + Importing Importiere - + Saving (%1%) Speichere (%1%) - + Online Online - + Offline Offline @@ -3288,7 +3288,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TomahawkSettings - + Local Network Lokales Netzwerk @@ -4002,112 +4002,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Nutzer Interaktion - + Host is unknown Host ist unbekannt - + Item not found Eintrag nicht gefunden - + Authorization Error Authentifizierungs Fehler - + Remote Stream Error Verbindungsfehler - + Remote Connection failed Verbindungsfehler - + Internal Server Error Interner Server Fehler - + System shutdown System Shutdown - + Conflict Konflikt - + Unknown Unbekannt - + Do you want to add <b>%1</b> to your friend list? Willst du <b>%1</b> zu deinen Freunden hinzufügen? - + No Compression Support Keine Kompressions Option - + Enter Jabber ID Jabber ID eingeben - + No Encryption Support Keine Verschluesselungs Option - + No Authorization Support Keine Authorisierungs Option - + No Supported Feature Keine unterstuetzte Faehigkeit - + Add Friend Freund hinzufügen... - + Enter Xmpp ID: XMPP-Benutzer: - + Add Friend... Freund hinzufügen... - + XML Console... XML-Konsole... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User Authorisiere Nutzer diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 102b94d746..6d37125f4f 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -1730,58 +1730,58 @@ connect and stream from you? SourceItem - + Collection Συλλογή - - + + Latest Additions Τελευταίες Προσθήκες - + Recently Played Τελευταίες Αναπαραγωγές - + SuperCollection ΥπερΣυλλογή - + Latest additions to your collection Τελευταίες προσθήκες στην βιβλιοθήκη σας - + Latest additions to %1's collection Τελευταίες προσθήκες στην βιβλιοθήκη του %1 - + Sorry, we could not find any recent additions! - + Recently Played Tracks Τελευταίες Αναπαραγωγές Κομματιών - + Your recently played tracks Οι τελευταίες σας αναπαραγωγές - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3206,43 +3206,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) - + Scanning - + Checking - + Syncing - + Importing - + Saving (%1%) - + Online - + Offline @@ -3288,7 +3288,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3993,112 +3993,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction - + Host is unknown - + Item not found - + Authorization Error - + Remote Stream Error - + Remote Connection failed - + Internal Server Error - + System shutdown - + Conflict - + Unknown - + Do you want to add <b>%1</b> to your friend list? Θέλετε να προσθέσετε τον <b>%1</b> στην λίστα φίλων σας; - + No Compression Support - + Enter Jabber ID - + No Encryption Support - + No Authorization Support - + No Supported Feature - + Add Friend - + Enter Xmpp ID: - + Add Friend... - + XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 6d828c8c61..78516cf349 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -1734,58 +1734,58 @@ connect and stream from you? SourceItem - + Collection Collection - - + + Latest Additions Latest Additions - + Recently Played Recently Played - + SuperCollection SuperCollection - + Latest additions to your collection Latest additions to your collection - + Latest additions to %1's collection Latest additions to %1's collection - + Sorry, we could not find any recent additions! Sorry, we could not find any recent additions! - + Recently Played Tracks Recently Played Tracks - + Your recently played tracks Your recently played tracks - + %1's recently played tracks %1's recently played tracks - + Sorry, we could not find any recent plays! Sorry, we could not find any recent plays! @@ -3210,43 +3210,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) Scanning (%L1 tracks) - + Scanning Scanning - + Checking Checking - + Syncing Syncing - + Importing Importing - + Saving (%1%) Saving (%1%) - + Online Online - + Offline Offline @@ -3293,7 +3293,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Local Network @@ -4013,112 +4013,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction User Interaction - + Host is unknown Host is unknown - + Item not found Item not found - + Authorization Error Authorization Error - + Remote Stream Error Remote Stream Error - + Remote Connection failed Remote Connection failed - + Internal Server Error Internal Server Error - + System shutdown System shutdown - + Conflict Conflict - + Unknown Unknown - + Do you want to add <b>%1</b> to your friend list? Do you want to add <b>%1</b> to your friend list? - + No Compression Support No Compression Support - + Enter Jabber ID Enter Jabber ID - + No Encryption Support No Encryption Support - + No Authorization Support No Authorization Support - + No Supported Feature No Supported Feature - + Add Friend Add Friend - + Enter Xmpp ID: Enter Xmpp ID: - + Add Friend... Add Friend... - + XML Console... XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User Authorize User diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 155622a32f..250965efff 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -1734,58 +1734,58 @@ y estaciones basadas en sus gustos personales. SourceItem - + Collection Colección - - + + Latest Additions Añadidos recientemente - + Recently Played Reproducido recientemente - + SuperCollection Supercolección - + Latest additions to your collection Pistas añadidas recientemente - + Latest additions to %1's collection Pistas añadidas recientemente en la colección de %1 - + Sorry, we could not find any recent additions! No se encontraron pistas nuevas recientes - + Recently Played Tracks Pistas reproducidas recientemente - + Your recently played tracks Mis pistas escuchadas recientemente - + %1's recently played tracks Canciones escuchadas recientemente por %1 - + Sorry, we could not find any recent plays! No hay reproducciones recientes @@ -3210,43 +3210,43 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::Source - - + + Scanning (%L1 tracks) Escaneando (%L1 pistas) - + Scanning Escaneando - + Checking Comprobando - + Syncing Sincronizando - + Importing Importando - + Saving (%1%) Guardando (%1%) - + Online En línea - + Offline Desconectado @@ -3293,7 +3293,7 @@ introduzca su número PIN aquí: TomahawkSettings - + Local Network Red local @@ -4012,112 +4012,112 @@ Letras de "%1" por %2: XmppSipPlugin - + User Interaction Interacción del usuario - + Host is unknown Máquina desconocida - + Item not found Elemento no encontrado - + Authorization Error Error de autorización - + Remote Stream Error Error de stream remoto - + Remote Connection failed Fallo en la conexión remota - + Internal Server Error Error interno del servidor - + System shutdown Sistema apagado - + Conflict Conflicto - + Unknown Desconocido - + Do you want to add <b>%1</b> to your friend list? ¿Le gustaría añadir <b>%1</b> a su lista de amigos? - + No Compression Support Compresión no soportada - + Enter Jabber ID Introducir ID de Jabber - + No Encryption Support Sin soporte de cifrado - + No Authorization Support Sin soporte de autorización - + No Supported Feature Característica no soportada - + Add Friend Añadir amigo - + Enter Xmpp ID: Introducir ID XMPP: - + Add Friend... Añadir amigo… - + XML Console... Consola XML… - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Lo siento -- soy un robot del reproductor Tomahawk (http://gettomahawk.com). Si recibe este mensaje, la persona con quién intenta contactar probablemente no esté conectada. ¡Inténtelo más tarde! - + Authorize User Autorizar usuario diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 6653e46bb7..1ce9d73d36 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -1736,58 +1736,58 @@ käyttäjäradion käyttöönottamiseksi SourceItem - + Collection Kokoelma - - + + Latest Additions Viimeisimmät lisäykset - + Recently Played Viime aikoina kuunnellut - + SuperCollection Superkokoelma - + Latest additions to your collection Viimeisimmät lisäykset kokoelmaasi - + Latest additions to %1's collection Viimeisimmät lisäykset käyttäjän %1 kokoelmaan - + Sorry, we could not find any recent additions! Valitettavasti emme löytäneet yhtään viimeaikaisia lisäyksiä! - + Recently Played Tracks Viime aikoina kuunnellut kappaleet - + Your recently played tracks Viime aikoina kuuntelemasi kappaleet - + %1's recently played tracks Käyttäjän %1 viime aikoina kuuntelemat kappaleet - + Sorry, we could not find any recent plays! Valitettavasti emme löytäneet yhtään viimeaikaisia soittoja! @@ -3213,43 +3213,43 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::Source - - + + Scanning (%L1 tracks) Etsitään (%L1 kappaletta) - + Scanning Etsitään - + Checking Tarkistetaan - + Syncing Synkronoidaan - + Importing Tuodaan - + Saving (%1%) Tallennetaan (%1 %) - + Online Verkossa - + Offline Ei verkossa @@ -3296,7 +3296,7 @@ anna siellä näytetty PIN-koodi tähän: TomahawkSettings - + Local Network Paikallisverkko @@ -4013,112 +4013,112 @@ Sanat artistin %2 kappaleelle ”%1”: XmppSipPlugin - + User Interaction Käyttäjän toiminta - + Host is unknown Kone on tuntematon - + Item not found Kohdetta ei löydy - + Authorization Error Valtuutusvirhe - + Remote Stream Error Etävirran virhe - + Remote Connection failed Etäyhteys epäonnistui - + Internal Server Error Sisäinen palvelinvirhe - + System shutdown Järjestelmän sammutus - + Conflict Ristiriita - + Unknown Tuntematon - + Do you want to add <b>%1</b> to your friend list? Haluatko lisätä käyttäjän <b>%1</b> kaverilistallesi? - + No Compression Support Ei pakkaustukea - + Enter Jabber ID Anna Jabber-tunnus - + No Encryption Support Ei salaustukea - + No Authorization Support Ei valtuutustukea - + No Supported Feature Ei-tuettu ominaisuus - + Add Friend Lisää kaveri - + Enter Xmpp ID: Anna XMPP-tunnus: - + Add Friend... Lisää kaveri... - + XML Console... XML-konsoli... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Pahoittelen – olen pelkkä Tomahawk-soittimen (http://gettomahawk.com) automaattinen läsnäoloviesti. Jos näet tämän viestin, tavoittelemasi henkilö ei todennäköisesti ole kirjautuneena, joten yritä myöhemmin uudelleen! - + Authorize User Salli käyttäjä diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index a779da2fb3..b7c86736a7 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -1731,58 +1731,58 @@ de se connecter et streamer de vous? SourceItem - + Collection Collection - - + + Latest Additions Derniers ajouts - + Recently Played Joués récemment - + SuperCollection SuperCollection - + Latest additions to your collection Derniers ajouts à votre collection - + Latest additions to %1's collection Derniers ajouts à la collection de %1 - + Sorry, we could not find any recent additions! Désolé, on a pas pu trouver des dernier ajouts! - + Recently Played Tracks Derniers titres joués - + Your recently played tracks Les derniers titres que vous avez joués - + %1's recently played tracks Derniers titres joués par %1 - + Sorry, we could not find any recent plays! Désolé, aucune piste récemment jouée n'a pu être trouvée ! @@ -3207,43 +3207,43 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::Source - - + + Scanning (%L1 tracks) Scan en cours (%L1 titres) - + Scanning Scan en cours - + Checking Vérification - + Syncing Synchronisation - + Importing Importation - + Saving (%1%) Enregistrement (%1%) - + Online En Ligne - + Offline Hors ligne @@ -3290,7 +3290,7 @@ saisissez le numéro PIN ici : TomahawkSettings - + Local Network Réseau local @@ -4010,112 +4010,112 @@ Paroles de "%1" par %2 : XmppSipPlugin - + User Interaction Interaction utilisateur - + Host is unknown L'hôte est inconnu - + Item not found Objet non trouvé - + Authorization Error Erreur d'autorisation - + Remote Stream Error Erreur de lecture à distance - + Remote Connection failed Erreur de connexion à distance - + Internal Server Error Erreur interne du serveur - + System shutdown Arrêt du système - + Conflict Conflit - + Unknown Inconnu - + Do you want to add <b>%1</b> to your friend list? Voulez-vous ajouter <b>%1</b> à votre liste d'amis? - + No Compression Support Pas de support de la compression - + Enter Jabber ID Saisir l'ID Jabber - + No Encryption Support Pas de support du chiffrement - + No Authorization Support Pas de support de l'authorization - + No Supported Feature Fonctionnalité non supportée - + Add Friend Ajouter un ami - + Enter Xmpp ID: Entrer l'ID XMPP: - + Add Friend... Ajouter un ami... - + XML Console... Console XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Désolé -- Je suis une présence automatique utilisé par le lecteur Tomahawk (http://gettomahawk.com). Si vous lisez ce message, la personne que vous essayez de joindre n'est probablement pas connecter, donc essayez plus tard ! Merci ! - + Authorize User Autoriser l'utilisateur diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index d166a828cc..fa98722edf 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -1730,58 +1730,58 @@ connect and stream from you? SourceItem - + Collection Colección - - + + Latest Additions Últimos engadidos - + Recently Played Escoitados recentemente - + SuperCollection Supercolección - + Latest additions to your collection Os últimos engadidos á túa colección - + Latest additions to %1's collection Os últimos engadidos a colección %1 - + Sorry, we could not find any recent additions! Non se atoparon novas pistas engadidas recentemente! - + Recently Played Tracks Pistas recentemente reproducidas - + Your recently played tracks As pistas que soaron recentemente - + %1's recently played tracks As pistas de %1 que soaron recentemente - + Sorry, we could not find any recent plays! Non se escoitaron pistas recentemente! @@ -3208,43 +3208,43 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::Source - - + + Scanning (%L1 tracks) Escaneando (%L1 pistas) - + Scanning Escaneando - + Checking Comprobando - + Syncing Sincronizando - + Importing Importando - + Saving (%1%) Gardando (%1%) - + Online Conectado - + Offline Desconectado @@ -3290,7 +3290,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Rede local @@ -4005,112 +4005,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Interacción de usuarios - + Host is unknown Descoñécese o servidor - + Item not found Elemento non encontrado - + Authorization Error Erro de autorización - + Remote Stream Error - + Remote Connection failed Fallou a conexión remota - + Internal Server Error Erro interno do servidor. - + System shutdown Apagar o sistema - + Conflict Conflito - + Unknown Descoñecido - + Do you want to add <b>%1</b> to your friend list? Queres engadir |b>%1</b> a túa lista de amizades? - + No Compression Support Non se soporta a compresión - + Enter Jabber ID Introducir a ID de Jabber - + No Encryption Support Non se soporta o encriptado - + No Authorization Support Non hai soporte de autorización - + No Supported Feature Característica non soportada - + Add Friend Engadir a un amigo - + Enter Xmpp ID: Introduce a ID de XMPP: - + Add Friend... Engadir amigo... - + XML Console... Consola XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Síntocho -- Son unha mensaxe automática empregada por Tomahawk Player (http://gettomahawk.com). Se ves esta mensaxe é porque a quen te dirixes case seguro non está conectado. Inténtao máis tarde! - + Authorize User Autorizar o usuario diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 7d3efdeb96..0e9137d749 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection - - + + Latest Additions - + Recently Played - + SuperCollection - + Latest additions to your collection - + Latest additions to %1's collection - + Sorry, we could not find any recent additions! - + Recently Played Tracks - + Your recently played tracks - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) - + Scanning - + Checking - + Syncing - + Importing - + Saving (%1%) - + Online - + Offline @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction - + Host is unknown - + Item not found - + Authorization Error - + Remote Stream Error - + Remote Connection failed - + Internal Server Error - + System shutdown - + Conflict - + Unknown - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support - + Enter Jabber ID - + No Encryption Support - + No Authorization Support - + No Supported Feature - + Add Friend - + Enter Xmpp ID: - + Add Friend... - + XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index a4a4e97535..2f303371ae 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection Kollekció - - + + Latest Additions - + Recently Played Mostanában játszott - + SuperCollection Szuper kollekció - + Latest additions to your collection - + Latest additions to %1's collection - + Sorry, we could not find any recent additions! - + Recently Played Tracks Monstanában játszott zeneszámok - + Your recently played tracks - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) - + Scanning Szkennelés - + Checking Ellenőrzés - + Syncing Szinkronizálás - + Importing Importálás - + Saving (%1%) Mentés (%1%) - + Online Elérhető - + Offline Nem elérhető @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Felhasználói interakció - + Host is unknown Ismeretlen hoszt - + Item not found - + Authorization Error Azonosítási hiba - + Remote Stream Error Távoli stream hiba - + Remote Connection failed Távoli kapcsolódási hiba - + Internal Server Error Belső szerver hiba - + System shutdown Rendszer leállítás - + Conflict - + Unknown Ismeretlen - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support - + Enter Jabber ID - + No Encryption Support - + No Authorization Support - + No Supported Feature - + Add Friend - + Enter Xmpp ID: - + Add Friend... - + XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index 0d96c72656..e670d96d23 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection Collezione - - + + Latest Additions Ultime aggiunte - + Recently Played Ascoltate di recente - + SuperCollection Supercollezione - + Latest additions to your collection Ultime aggiunte alla tua collezione - + Latest additions to %1's collection Ultime aggiunte alla collezione di %1 - + Sorry, we could not find any recent additions! Spiacente, non abbiamo trovato nessuna aggiunta recente! - + Recently Played Tracks Tracce ascoltate di recente - + Your recently played tracks Tracce da te ascoltate di recente - + %1's recently played tracks Tracce ascoltate di recente da %1 - + Sorry, we could not find any recent plays! Spiacente, non è stato possibile trovare ascolti recenti! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) Scansionando (%L1 tracce) - + Scanning Scansionando - + Checking Controllando - + Syncing Sto sincronizzando - + Importing Sto importando - + Saving (%1%) Salvando (%1%) - + Online Connesso - + Offline Disconnesso @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Network locale @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Interazione con l'utente - + Host is unknown Host sconosciuto - + Item not found Oggetto non trovato - + Authorization Error Errore di autenticazione - + Remote Stream Error Errore dello streaming remoto - + Remote Connection failed Connessione remota fallita - + Internal Server Error Errore interno del server - + System shutdown Spegni il sistema operativo - + Conflict Conflitto - + Unknown Sconosciuto - + Do you want to add <b>%1</b> to your friend list? Vuoi aggiungere <b>%1</b> alla lista dei tuoi amici? - + No Compression Support Nessun supporto per la compressione - + Enter Jabber ID Inserisci ID Jabber - + No Encryption Support Nessun supporto per la criptazione - + No Authorization Support Nessun supporto per l'autenticazione - + No Supported Feature Aspetto non supportato - + Add Friend Aggiungi un amico - + Enter Xmpp ID: Inserisci l'ID Xmpp: - + Add Friend... Aggiungi un amico... - + XML Console... Console XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Mi spiace -- Sono solo un robot utilizzato dal programma Tomahawk (http://gettomahawk.com). Se vedi questo messaggio, la persona che cerchi probabilmente non è connessa. Prova più tardi! - + Authorize User Autorizza l'utente diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 5bfc927e97..6949e98b43 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -1734,58 +1734,58 @@ connect and stream from you? SourceItem - + Collection コレクション - - + + Latest Additions 最新追加した項目 - + Recently Played 最近聴いたトラック - + SuperCollection スーパーコレクション - + Latest additions to your collection コレクションの最新追加した項目 - + Latest additions to %1's collection %1のコレクションの最新追加した項目 - + Sorry, we could not find any recent additions! 最近追加した項目が見つかりませんでした。 - + Recently Played Tracks 最近再生したトラック - + Your recently played tracks あなたの最近再生したトラック - + %1's recently played tracks %1の最近再生したトラック - + Sorry, we could not find any recent plays! 最近の再生した項目が見つかりませんでした。 @@ -3210,43 +3210,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) スキャン中(%1L1トラック) - + Scanning 走査中 - + Checking 検査中 - + Syncing 同期中 - + Importing インポート中 - + Saving (%1%) 保存中(%1%) - + Online オンライン - + Offline オフライン @@ -3293,7 +3293,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network ローカルネットワーク @@ -4013,112 +4013,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction ユーザインタラクション - + Host is unknown 不明なホスト - + Item not found 項目が見つかりません - + Authorization Error 認証エラー - + Remote Stream Error 配信エラー - + Remote Connection failed 接続に失敗しました - + Internal Server Error サーバ内部エラー - + System shutdown システム終了 - + Conflict コンフリクト - + Unknown 不明 - + Do you want to add <b>%1</b> to your friend list? <b>%1</b>を友達のリストに追加しますか? - + No Compression Support 圧縮に対応していません - + Enter Jabber ID Jabber IDを入力 - + No Encryption Support 暗号化に対応していません - + No Authorization Support Authorizationに対応していません - + No Supported Feature 未対応昨機能 - + Add Friend 友達を追加 - + Enter Xmpp ID: XMPP IDを入力: - + Add Friend... 友達を追加... - + XML Console... XMLコンソール... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! これはTomahawk Player (http://gettomahawk.com)の自動プレセンスです。このメッセージが出ている場合は、おそらく連絡したい人はログインしていないので、後でもう一度試して見て下さい。 - + Authorize User ユーザーを認証 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 74f4739511..ecad3ab957 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection Kolekcija - - + + Latest Additions Neseniai pridėta - + Recently Played Neseniai grota - + SuperCollection Super Kolekcija - + Latest additions to your collection Neseniai pridėta prie Jūsų kolekcijos - + Latest additions to %1's collection Neseniai pridėta prie %1 kolekcijos - + Sorry, we could not find any recent additions! Atsiprašome, neradome nieko, kas pridėta neseniai! - + Recently Played Tracks Neseniai groti takeliai - + Your recently played tracks Jūsų neseniai groti takeliai - + %1's recently played tracks %1 neseniai groti takeliai - + Sorry, we could not find any recent plays! Atsiprašome, neradome jokių neseniai grotų takelių! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) Peržvelgiama (%L1 takeliai) - + Scanning Peržvelgiama - + Checking Tikrinama - + Syncing Sinchronizuojama - + Importing Įkeliama - + Saving (%1%) Išsaugoma (%1%) - + Online Prisijungęs - + Offline Atsijungęs @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Vartotojo sąveika - + Host is unknown Serveris nežinomas - + Item not found Elementas nerastas - + Authorization Error Tapatybės patvirtinimo klaida - + Remote Stream Error Nuotolinio srauto klaida - + Remote Connection failed Nuotolinis prisijungimas nepavyko - + Internal Server Error Vidinė serverio klaida - + System shutdown - + Conflict Konfliktas - + Unknown - + Do you want to add <b>%1</b> to your friend list? Ar norite pridėti <b>%1</b> prie savo draugų sąrašo? - + No Compression Support Nėra glaudinimo palaikymo - + Enter Jabber ID - + No Encryption Support Nėra užšifravimo palaikymo - + No Authorization Support - + No Supported Feature - + Add Friend Pridėti draugą - + Enter Xmpp ID: Įveskite Xmpp ID: - + Add Friend... Pridėti draugą... - + XML Console... XML pultas... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index f366dab300..185f578081 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -1731,58 +1731,58 @@ połączyć się i strumieniować od ciebie? SourceItem - + Collection Kolekcja - - + + Latest Additions Ostatnio Dodane - + Recently Played Ostatnio Odtworzone - + SuperCollection Superkolekcja - + Latest additions to your collection Ostatnio dodane do twojej kolekcji - + Latest additions to %1's collection Ostatnio dodane do kolekcji %1 - + Sorry, we could not find any recent additions! - + Recently Played Tracks Ostatnio odtwarzane utwory - + Your recently played tracks Twoje ostatnio odtwarzane utwory - + %1's recently played tracks Utwory ostatnio odtwarzane przez %1 - + Sorry, we could not find any recent plays! @@ -3207,43 +3207,43 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::Source - - + + Scanning (%L1 tracks) Skanowanie (%L1 utworów) - + Scanning Skanowanie - + Checking Sprawdzanie - + Syncing - + Importing - + Saving (%1%) Zapisywanie (%1%) - + Online - + Offline @@ -3290,7 +3290,7 @@ wprowadź pokazany numer PIN tutaj: TomahawkSettings - + Local Network @@ -4006,112 +4006,112 @@ Tekst dla "%1" wykonawcy %2: XmppSipPlugin - + User Interaction - + Host is unknown Nieznany Host - + Item not found - + Authorization Error Błąd uwierzytelnienia - + Remote Stream Error - + Remote Connection failed Połączenie sieciowe się nie powiodło - + Internal Server Error Wewnętrzny błąd serwera - + System shutdown Wyłączenie systemu - + Conflict Konflikt - + Unknown Nieznany - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support Brak obsługi kompresji - + Enter Jabber ID - + No Encryption Support Brak obsługi szyfrowania - + No Authorization Support Brak obsługi autoryzacji - + No Supported Feature Brak obsługi danej funkcji - + Add Friend Dodaj Znajomego - + Enter Xmpp ID: Podaj ID XMPP: - + Add Friend... Dodaj Znajomego... - + XML Console... Konsola XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Przepraszam -- Jestem automatyczną sekretarką Tomahawk Player (http://gettomahawk.com). Jeżeli czytasz tą wiadomość, osoba z którą próbujesz się skontaktować prawdopodobnie nie jest zalogowana, proszę spróbuj ponownie później! - + Authorize User Autoryzuj Użytkownika diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 43e78a7e46..c18b29998b 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -1731,58 +1731,58 @@ se conecte e faça o stream de você? SourceItem - + Collection Coleção - - + + Latest Additions Últimas Adições - + Recently Played Ouvidas Recentemente - + SuperCollection SuperColeção - + Latest additions to your collection Últimas adições à sua coleção - + Latest additions to %1's collection Últimas adições à coleção de %1 - + Sorry, we could not find any recent additions! Desculpe, não foi possível encontrar adições recentes! - + Recently Played Tracks Faixas Reproduzidas Recentemente - + Your recently played tracks Suas faixas reproduzidas recentemente - + %1's recently played tracks Faixas reproduzidas recentemente por %1 - + Sorry, we could not find any recent plays! Desculpe, não foi possível encontrar playlists recentes! @@ -3207,43 +3207,43 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::Source - - + + Scanning (%L1 tracks) Escaneando (%L1 faixas) - + Scanning Escaneando - + Checking Verificando - + Syncing Sincronizando - + Importing Importando - + Saving (%1%) Salvando (%1%) - + Online Online - + Offline Offline @@ -3290,7 +3290,7 @@ colocar o número PIN mostrado aqui: TomahawkSettings - + Local Network Rede local @@ -4007,112 +4007,112 @@ Letras de "%1" por %2: XmppSipPlugin - + User Interaction Interação com usuário - + Host is unknown Servidor desconhecido - + Item not found Item não encontrado - + Authorization Error Erro de Autorização - + Remote Stream Error Erro do Stream Remoto - + Remote Connection failed Conexão Remota falhou - + Internal Server Error Erro Interno do Servidor - + System shutdown Desligamento do sistema - + Conflict Conflito - + Unknown Desconhecido - + Do you want to add <b>%1</b> to your friend list? Gostaria de adicionar <b>%1</b> à sua lista de amigos? - + No Compression Support Não há suporte para Compressão - + Enter Jabber ID Informar o Jabber ID - + No Encryption Support Não há suporte para Criptografia - + No Authorization Support Não há suporte para Autorização - + No Supported Feature Recurso não suportado - + Add Friend Adicionar Amigo - + Enter Xmpp ID: Entre o ID do Xmpp - + Add Friend... Adicionar Amigo... - + XML Console... Console XML... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Desculpe -- Sou apenas uma presença automáica usada pelo Tomahawk (http://gettomahawk.com). Se você esta recebendo esta mensagem, a pessoa que esta tentando alcançar provavelmente não esta logada, então tente mais tarde! - + Authorize User Autorizar Usuário diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 37ff3c257e..78f1f8a39c 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -1737,58 +1737,58 @@ connect and stream from you? SourceItem - + Collection Коллекция - - + + Latest Additions Последние Добавленные - + Recently Played Последние Воспроизводимые - + SuperCollection Общая Коллекция - + Latest additions to your collection Новые Поступления в Коллекцию - + Latest additions to %1's collection Новые поступления в коллекции %1 - + Sorry, we could not find any recent additions! К сожалению, мы не смогли найти никаких последних добавлений! - + Recently Played Tracks Недавно Воспроизводимые - + Your recently played tracks Ваши Недавно Воспроизводимые - + %1's recently played tracks %1 последние проиграные треки - + Sorry, we could not find any recent plays! К сожалению, мы не смогли найти никаких воспроизвидений треков! @@ -3211,43 +3211,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) Сканирование (%L1 песни) - + Scanning Сканирую - + Checking Проверяю - + Syncing Синхронизация - + Importing Импортирование - + Saving (%1%) Сохраняю (%1%) - + Online В сети - + Offline Не в сети @@ -3293,7 +3293,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network Домашняя сеть @@ -4011,112 +4011,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Взаимодействие с пользователем - + Host is unknown Неизвестный хост - + Item not found Песня не найдена - + Authorization Error Ошибка авторизации - + Remote Stream Error Удаленный поток ошибок - + Remote Connection failed Ошибка подключения - + Internal Server Error Внутренняя ошибка сервера - + System shutdown Выключение системы - + Conflict Конфликт - + Unknown Неизвестный - + Do you want to add <b>%1</b> to your friend list? Вы хотите добавить <b>%1</b> в списке ваших друзей? - + No Compression Support Нет поддержки сжатия - + Enter Jabber ID Ввести Jabber ID - + No Encryption Support Нет поддержки шифрования - + No Authorization Support Нет поддержки авторизации - + No Supported Feature Не поддерживаемые функции - + Add Friend Добавить друга - + Enter Xmpp ID: Введите XMPP ID: - + Add Friend... Добавить друга... - + XML Console... XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! Простите - я просто автоматическое присутствие Tomahawk Player (http://gettomahawk.com). Если Вы получили это сообщение, человека, которого вы пытаетесь достичь, вероятно, не подписан, поэтому, пожалуйста, повторите попытку позже! - + Authorize User Авторизация пользователя diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 265fbf216d..6792593c61 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -77,7 +77,7 @@ ansluta och strömma från dig? Invite - + Bjud in @@ -85,7 +85,7 @@ ansluta och strömma från dig? Configure Accounts - + Konfigurera konton @@ -170,7 +170,7 @@ ansluta och strömma från dig? Fully &Rescan Collection - + &Skanna om hela kollektionen @@ -200,52 +200,52 @@ ansluta och strömma från dig? Diagnostics... - + Diagnostik... About &Tomahawk... - + Om &Tomahawk... &Legal Information... - + &juridisk information &View Logfile - + &Öppna logfil Check For Updates... - + Leta efter uppdateringar... &Controls - + &Kontroller &Settings - + &Inställningar &Help - + &Hjälp &Window - + &Fönster Main Menu - + Huvudmeny @@ -338,12 +338,12 @@ ansluta och strömma från dig? Time Elapsed - + Förfluten tid Time Remaining - + Tid kvar @@ -353,12 +353,12 @@ ansluta och strömma från dig? Share - + Dela Love - + Älska @@ -449,7 +449,7 @@ ansluta och strömma från dig? <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk crashed. Please tell us about it! Tomahawk has created an error report for you that can help improve the stability in the future. You can now send this report directly to the Tomahawk developers.</p></body></html> - + <html><head/><body><p><span style=" font-weight:600;">Sorry!</span> Tomahawk kraschade Låt oss veta vad som hänt! Tomahawk har skapat en felrapport åt dig som kan hjälpa till att förbättra stabiliteten i framtiden. Du kan skicka den direkt till Tomahawks utvecklare.</p></body></html> @@ -1017,37 +1017,37 @@ ansluta och strömma från dig? Perfect match - + Perfekt matchning Very good match - + Mycket bra matchning Good match - + Bra matchning Vague match - + Svag matchning Bad match - + Dålig matchning Very bad match - + Väldigt dålig matchning Not available - + Inte tillgänglig @@ -1431,12 +1431,12 @@ ansluta och strömma från dig? Install from file - + Installera från fil Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status. - + Konfigurera alla konton och services som Tomahawk använder för att söka och hitta musik, hitta dina vänner och uppdaterar din status. @@ -1573,7 +1573,7 @@ ansluta och strömma från dig? Upload collection list to The Echo Nest to enable user radio - + Ladda upp kollektionslistan till Echo Nest för att aktivera användar-radio @@ -1591,12 +1591,12 @@ ansluta och strömma från dig? On - + Off - + Av @@ -1731,58 +1731,58 @@ ansluta och strömma från dig? SourceItem - + Collection Samling - - + + Latest Additions Senast tillagda - + Recently Played Senast spelade spår - + SuperCollection SuperCollection - + Latest additions to your collection Senaste tillägget till ditt kollektion. - + Latest additions to %1's collection Senaste tillägget till %1's kollektion. - + Sorry, we could not find any recent additions! - + Tyvärr! Det gick inte hitta några nya tillägg! - + Recently Played Tracks Senast spelade spår - + Your recently played tracks Dina senast spelade spår - + %1's recently played tracks %1's senast spelade spår - + Sorry, we could not find any recent plays! Tyvärr! Det gick inte hitta några nyligen spelade spår @@ -1992,7 +1992,7 @@ ansluta och strömma från dig? Delete associated Spotify playlist? - + Ta bort alla associerade spotify-spellistor @@ -2069,7 +2069,7 @@ ansluta och strömma från dig? Google Address: - + Google-adress: @@ -2095,7 +2095,7 @@ ansluta och strömma från dig? Enter Google Address - + Ange Google-adress @@ -2197,7 +2197,7 @@ ansluta och strömma från dig? Subscribe to playlist changes - + Prenummerera på spellist-ändringar @@ -2207,7 +2207,7 @@ ansluta och strömma från dig? Stop subscribing to changes - + Sluta prenummerera på ändringar @@ -2840,22 +2840,22 @@ Försök att ändra i filtrerna för att få en ny låtlista is not - + är inte Studio - + Studio Live - + Live Christmas - + Jul @@ -2977,17 +2977,17 @@ Försök att ändra i filtrerna för att få en ny låtlista in a %1 style - + med en %1-stil where song type is %1 - + där låttypen är %1 where song type is not %1 - + där låttypen inte är %1 @@ -3207,43 +3207,43 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::Source - - + + Scanning (%L1 tracks) Söker igenom (%L1 spår) - + Scanning Skannar - + Checking Kontrollerar - + Syncing Synkroniserar - + Importing Importerar - + Saving (%1%) Sparar (%1%) - + Online Online - + Offline Offline @@ -3290,7 +3290,7 @@ anger du PIN-koden här: TomahawkSettings - + Local Network Lokalt nätverk @@ -3375,13 +3375,13 @@ anger du PIN-koden här: Hide Menu Bar - + Göm Menyrad Show Menu Bar - + Visa Menyrad @@ -3391,7 +3391,7 @@ anger du PIN-koden här: &Main Menu - + &Huvudmeny @@ -3456,7 +3456,7 @@ anger du PIN-koden här: &Play - + &Spela @@ -3621,7 +3621,7 @@ anger du PIN-koden här: The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account. - + Twitter-pluginnet låter dig utforska och spela musik från dina Twitter-vänner som använder Tomahawk, samt posta meddelanden till ditt konto @@ -3684,7 +3684,7 @@ You can re-send a sync message at any time simply by sending another tweet using Enter Twitter username - + Ange användarnamn till Twitter @@ -3697,12 +3697,12 @@ You can re-send a sync message at any time simply by sending another tweet using After you have scanned your music collection you will find your tracks right here. - + Efter att du skannat din musik-kollektion kommer du hitta alla dina spår här. This collection is empty. - + Denna kollektionen är tom. @@ -4002,112 +4002,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction Användarinteraktion - + Host is unknown Värden är okänd - + Item not found Artikeln kunde inte hittas - + Authorization Error Auktorisationsfel - + Remote Stream Error Ström-fel - + Remote Connection failed Fjärranslutningen misslyckades - + Internal Server Error Internt serverfel - + System shutdown systemavstängning - + Conflict Konflikt - + Unknown Okänd - + Do you want to add <b>%1</b> to your friend list? Vill du lägga till <b>%1</b> till din vänlista? - + No Compression Support Inget kompression-stöd - + Enter Jabber ID - + Ange Jabber-ID - + No Encryption Support Inget krypteringsstöd - + No Authorization Support Inget auktoriseringsstöd - + No Supported Feature - + Add Friend Lägg till vän - + Enter Xmpp ID: Ange XMPP-id: - + Add Friend... Lägg till vän... - + XML Console... XML-konsol... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User Auktorisera användare diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 94095d18ef..253151e378 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection - - + + Latest Additions - + Recently Played - + SuperCollection - + Latest additions to your collection - + Latest additions to %1's collection - + Sorry, we could not find any recent additions! - + Recently Played Tracks - + Your recently played tracks - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) - + Scanning - + Checking - + Syncing - + Importing - + Saving (%1%) - + Online - + Offline @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction - + Host is unknown - + Item not found - + Authorization Error - + Remote Stream Error - + Remote Connection failed - + Internal Server Error - + System shutdown - + Conflict - + Unknown - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support - + Enter Jabber ID - + No Encryption Support - + No Authorization Support - + No Supported Feature - + Add Friend - + Enter Xmpp ID: - + Add Friend... - + XML Console... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 163283e35c..e695c0839f 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -1732,58 +1732,58 @@ connect and stream from you? SourceItem - + Collection 收藏 - - + + Latest Additions 最近添加 - + Recently Played 最近播放 - + SuperCollection 超级收藏 - + Latest additions to your collection 最近加入收藏的歌曲 - + Latest additions to %1's collection 最新加入 %1 收藏的项目 - + Sorry, we could not find any recent additions! 抱歉,未找到任何最近添加的音乐! - + Recently Played Tracks 最近播放歌曲 - + Your recently played tracks 你最近播放的歌曲 - + %1's recently played tracks %1最近播放的歌曲 - + Sorry, we could not find any recent plays! 抱歉,未找到任何最近播放的音乐! @@ -3208,43 +3208,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) 扫描中 (%L1 首歌曲) - + Scanning 扫描中 - + Checking 检查 - + Syncing 同步中 - + Importing 导入中 - + Saving (%1%) 保存中 (%1%) - + Online 在线 - + Offline 离线 @@ -3291,7 +3291,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network 本地网络 @@ -4003,112 +4003,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction 用户交互 - + Host is unknown 服务器未知 - + Item not found 项目未找到 - + Authorization Error 认证错误 - + Remote Stream Error 远端数据流错误 - + Remote Connection failed 远程连接失败 - + Internal Server Error 内部服务器错误 - + System shutdown 系统挂起 - + Conflict 冲突 - + Unknown 未知 - + Do you want to add <b>%1</b> to your friend list? 你希望把 <b>%1</b> 添加到你的朋友列表吗? - + No Compression Support 无压缩支持 - + Enter Jabber ID 输入 Jabber ID - + No Encryption Support 无加密支持 - + No Authorization Support 无认证支持 - + No Supported Feature 无支持的特性 - + Add Friend 添加朋友 - + Enter Xmpp ID: 输入 Xmpp ID: - + Add Friend... 添加朋友 - + XML Console... XML 终端... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! 对不起 —— 我只是一个由 Tomahawk 播放器(http://gettomahawk.com)自动生成的文字。如果你看到这条信息,说明你尝试连接的用户并不可用。请稍后再试! - + Authorize User 认证用户 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 71c821850f..d953269459 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -1729,58 +1729,58 @@ connect and stream from you? SourceItem - + Collection 收藏 - - + + Latest Additions 最新加入 - + Recently Played 最近播放的 - + SuperCollection 超級收藏 - + Latest additions to your collection - + Latest additions to %1's collection - + Sorry, we could not find any recent additions! - + Recently Played Tracks - + Your recently played tracks - + %1's recently played tracks - + Sorry, we could not find any recent plays! @@ -3198,43 +3198,43 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::Source - - + + Scanning (%L1 tracks) - + Scanning - + Checking - + Syncing - + Importing - + Saving (%1%) - + Online - + Offline @@ -3280,7 +3280,7 @@ enter the displayed PIN number here: TomahawkSettings - + Local Network @@ -3985,112 +3985,112 @@ Lyrics for "%1" by %2: XmppSipPlugin - + User Interaction 使用者互動 - + Host is unknown 主機是未知 - + Item not found - + Authorization Error 授權錯誤 - + Remote Stream Error 遠端串流錯誤 - + Remote Connection failed 遠端連線失敗 - + Internal Server Error 內部服務器錯誤 - + System shutdown 系統關閉 - + Conflict 衝突 - + Unknown 未知 - + Do you want to add <b>%1</b> to your friend list? - + No Compression Support 沒有壓縮支持 - + Enter Jabber ID - + No Encryption Support 沒有加密支持 - + No Authorization Support 沒有授權支持 - + No Supported Feature 沒有支持的功能 - + Add Friend 加為好友 - + Enter Xmpp ID: 輸入XMPP識別碼: - + Add Friend... 加為好友... - + XML Console... XML的控制台... - + I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Authorize User 授權用戶 From e9d99f05c2e3e391a7f89e7fd3e5db37ff78a9a7 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 02:42:40 +0100 Subject: [PATCH 234/310] Update Toolchain-mingw32-openSUSE.cmake --- admin/win/Toolchain-mingw32-openSUSE.cmake | 27 +++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/admin/win/Toolchain-mingw32-openSUSE.cmake b/admin/win/Toolchain-mingw32-openSUSE.cmake index 77f933ae4c..1f58e2188c 100644 --- a/admin/win/Toolchain-mingw32-openSUSE.cmake +++ b/admin/win/Toolchain-mingw32-openSUSE.cmake @@ -5,11 +5,9 @@ SET(CMAKE_SYSTEM_NAME Windows) # specify the cross compiler -SET(CMAKE_C_COMPILER ccache ${MINGW_PREFIX}-gcc) -SET(CMAKE_C_FLAGS "-fno-keep-inline-dllexport") -SET(CMAKE_CXX_COMPILER ccache ${MINGW_PREFIX}-g++) -SET(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS}) -SET(CMAKE_RC_COMPILER /usr/bin/${MINGW_PREFIX}-windres) +SET(CMAKE_C_COMPILER ${MINGW_PREFIX}-gcc) +SET(CMAKE_CXX_COMPILER ${MINGW_PREFIX}-g++) +SET(CMAKE_RC_COMPILER ${MINGW_PREFIX}-windres) # where is the target environment containing libraries SET(CMAKE_FIND_ROOT_PATH /usr/${MINGW_PREFIX}/sys-root/mingw) @@ -18,6 +16,19 @@ SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -# configure qt variables -SET(QT_LIBRARY_DIR /usr/${MINGW_PREFIX}/bin) -SET(QT_PLUGINS_DIR ${CMAKE_FIND_ROOT_PATH}/lib/qt4/plugins/) +## configure qt variables +# generic +SET(QMAKESPEC win32-g++-cross) + +# dirs +SET(QT_LIBRARY_DIR /usr/${MINGW_PREFIX}/bin) +SET(QT_PLUGINS_DIR ${CMAKE_FIND_ROOT_PATH}/lib/qt4/plugins) +SET(QT_MKSPECS_DIR ${CMAKE_FIND_ROOT_PATH}/share/qt4/mkspecs) +SET(QT_QT_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/include) + +# qt tools +SET(QT_QMAKE_EXECUTABLE ${MINGW_PREFIX}-qmake ) +SET(QT_MOC_EXECUTABLE ${MINGW_PREFIX}-moc) +SET(QT_RCC_EXECUTABLE ${MINGW_PREFIX}-rcc) +SET(QT_UIC_EXECUTABLE ${MINGW_PREFIX}-uic) +SET(QT_LRELEASE_EXECUTABLE ${MINGW_PREFIX}-lrelease) From d388b3608e3f7a6e939adc0ade2f1cdbef908b35 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Tue, 15 Jan 2013 11:51:09 -0500 Subject: [PATCH 235/310] One workaround attempt at fixing charts crash --- src/libtomahawk/playlist/GridView.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/GridView.cpp b/src/libtomahawk/playlist/GridView.cpp index da3810be6f..984c5dabdc 100644 --- a/src/libtomahawk/playlist/GridView.cpp +++ b/src/libtomahawk/playlist/GridView.cpp @@ -106,8 +106,8 @@ GridView::setProxyModel( PlayableProxyModel* model ) connect( m_proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onFilterChanged( QString ) ) ); connect( m_proxyModel, SIGNAL( rowsInserted( QModelIndex, int, int ) ), SLOT( verifySize() ) ); connect( m_proxyModel, SIGNAL( rowsRemoved( QModelIndex, int, int ) ), SLOT( verifySize() ) ); - connect( proxyModel(), SIGNAL( modelReset() ), SLOT( layoutItems() ) ); - + connect( proxyModel(), SIGNAL( modelReset() ), SLOT( layoutItems() ), Qt::QueuedConnection ); + if ( m_delegate ) delete m_delegate; From 38211e166fe9cb523f810149022caa336aa2959b Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 25 Sep 2012 19:28:08 -0400 Subject: [PATCH 236/310] Attempt to fix a potential scanner deadlock --- src/libtomahawk/filemetadata/ScanManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/filemetadata/ScanManager.cpp b/src/libtomahawk/filemetadata/ScanManager.cpp index 4feeaf55f9..32a60e6fc9 100644 --- a/src/libtomahawk/filemetadata/ScanManager.cpp +++ b/src/libtomahawk/filemetadata/ScanManager.cpp @@ -268,12 +268,14 @@ void ScanManager::scannerFinished() { tLog( LOGVERBOSE ) << Q_FUNC_INFO; - if ( !m_scanner.isNull() ) + if ( !m_scanner.isNull() || m_musicScannerThreadController ) { m_musicScannerThreadController->quit(); m_musicScannerThreadController->wait( 60000 ); - delete m_scanner.data(); + if ( !m_scanner.isNull() ) + delete m_scanner.data(); + delete m_musicScannerThreadController; m_musicScannerThreadController = 0; } From dd1418f1a374f6f2dbb4e2d2877a3eedcabeb772 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 11 Nov 2012 00:58:53 +0100 Subject: [PATCH 237/310] Make factory name show up in accounts list --- src/libtomahawk/accounts/AccountModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/accounts/AccountModel.cpp b/src/libtomahawk/accounts/AccountModel.cpp index 01b2687f67..6e9d01ceaf 100644 --- a/src/libtomahawk/accounts/AccountModel.cpp +++ b/src/libtomahawk/accounts/AccountModel.cpp @@ -332,7 +332,7 @@ AccountModel::data( const QModelIndex& index, int role ) const switch ( role ) { case Qt::DisplayRole: - return acct->accountFriendlyName(); + return !acct->accountFriendlyName().isEmpty() ? acct->accountFriendlyName() : node->factory->prettyName(); case Qt::DecorationRole: return acct->icon(); case DescriptionRole: From 2d8abe99f7961091854c382cf3b6b742bd9ceab1 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Sun, 11 Nov 2012 00:04:13 +0100 Subject: [PATCH 238/310] Add SHARED_LIB option to add_tomahawk_plugin cmake macro Usually plugins are built as modules in cmake, but for certain plugins we need the possibility to link against them which is only possible with shared libs --- CMakeModules/AddTomahawkPlugin.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeModules/AddTomahawkPlugin.cmake b/CMakeModules/AddTomahawkPlugin.cmake index 3b7864f61e..5afcada9a9 100644 --- a/CMakeModules/AddTomahawkPlugin.cmake +++ b/CMakeModules/AddTomahawkPlugin.cmake @@ -41,7 +41,7 @@ ENDMACRO(CDR) macro(add_tomahawk_plugin) parse_arguments(PLUGIN "SOURCES;UI;LINK_LIBRARIES;TYPE;EXPORT_MACRO;COMPILE_DEFINITIONS" - "NO_INSTALL" + "NO_INSTALL;SHARED_LIB" ${ARGN} ) car(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS}) @@ -70,7 +70,11 @@ macro(add_tomahawk_plugin) endif() # add target - add_library(${target} MODULE ${PLUGIN_SOURCES}) + if(NOT ${PLUGIN_SHARED_LIB}) + add_library(${target} MODULE ${PLUGIN_SOURCES}) + else() + add_library(${target} SHARED ${PLUGIN_SOURCES}) + endif() # add qt modules qt5_use_modules(${target} Core Network Widgets Sql Xml DBus) From 9b4cde3ab507af1dc00063a4feaa745adbde4a5a Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 25 Sep 2012 19:47:26 -0400 Subject: [PATCH 239/310] Fix an issue where the slider could get stuck --- src/AudioControls.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index d1333f687f..e99f454320 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -381,6 +381,8 @@ AudioControls::onPlaybackResumed() { tDebug( LOGEXTRA ) << Q_FUNC_INFO; ui->stackedLayout->setCurrentWidget( ui->pauseButton ); + m_seeked = true; + onPlaybackTimer( m_lastSliderCheck ); } From 7ebd08c791c5e894a441d93b98ced998a87027b8 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Sat, 20 Oct 2012 19:13:37 -0400 Subject: [PATCH 240/310] Add debug --- src/AudioControls.cpp | 15 +++++++-------- src/libtomahawk/audio/AudioEngine.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index e99f454320..4fd69519dc 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -435,7 +435,7 @@ AudioControls::onPlaybackStopped() void AudioControls::onPlaybackTimer( qint64 msElapsed ) { - //tDebug() << Q_FUNC_INFO; + tDebug() << Q_FUNC_INFO; m_phononTickCheckTimer.stop(); @@ -459,15 +459,14 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) return; int currentTime = m_sliderTimeLine.currentTime(); - //tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << m_sliderTimeLine.currentTime(); + tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << currentTime << "and audio engine state is" << (int)AudioEngine::instance()->state(); // First condition checks for the common case where // 1) the track has been started // 2) we haven't seeked, // 3) the timeline is pretty close to the actual time elapsed, within ALLOWED_MAX_DIVERSIONmsec, so no adustment needed, and // 4) The audio engine is actually currently running - if ( msElapsed > 0 - && !m_seeked + if ( !m_seeked && qAbs( msElapsed - currentTime ) <= ALLOWED_MAX_DIVERSION && AudioEngine::instance()->state() == AudioEngine::Playing ) { @@ -478,14 +477,14 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) } else { - //tDebug() << Q_FUNC_INFO << "Fallthrough"; + tDebug() << Q_FUNC_INFO << "Fallthrough"; // If we're in here we're offset, so we need to do some munging around ui->seekSlider->blockSignals( true ); // First handle seeks if ( m_seeked ) { - //tDebug() << Q_FUNC_INFO << "Seeked"; + tDebug() << Q_FUNC_INFO << "Seeked"; m_sliderTimeLine.setPaused( true ); m_sliderTimeLine.setCurrentTime( msElapsed ); m_seeked = false; @@ -496,7 +495,7 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) // However, a Phonon bug means that after a seek we'll actually have AudioEngine's state be Playing, when it ain't, so have to detect that else if ( AudioEngine::instance()->state() == AudioEngine::Playing ) { - //tDebug() << Q_FUNC_INFO << "AudioEngine playing"; + tDebug() << Q_FUNC_INFO << "AudioEngine playing"; m_sliderTimeLine.setPaused( true ); m_sliderTimeLine.setCurrentTime( msElapsed ); if ( msElapsed != m_lastSliderCheck ) @@ -505,7 +504,7 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) // Finally, the case where the audioengine isn't playing; if the timeline is still running, pause it and catch up else if ( AudioEngine::instance()->state() != AudioEngine::Playing ) { - //tDebug() << Q_FUNC_INFO << "AudioEngine not playing"; + tDebug() << Q_FUNC_INFO << "AudioEngine not playing"; if ( msElapsed != currentTime || m_sliderTimeLine.state() == QTimeLine::Running) { m_sliderTimeLine.setPaused( true ); diff --git a/src/libtomahawk/audio/AudioEngine.h b/src/libtomahawk/audio/AudioEngine.h index 2727608dc0..348d0c8aa5 100644 --- a/src/libtomahawk/audio/AudioEngine.h +++ b/src/libtomahawk/audio/AudioEngine.h @@ -42,7 +42,7 @@ Q_OBJECT public: enum AudioErrorCode { StreamReadError, AudioDeviceError, DecodeError, UnknownError, NoError }; - enum AudioState { Stopped, Playing, Paused, Error, Loading }; + enum AudioState { Stopped = 0, Playing = 1, Paused = 2, Error = 3, Loading = 4 }; static AudioEngine* instance(); From e4c0bd7f30c3a11629d50801c33b5d8034830c4a Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Sun, 6 Jan 2013 21:04:40 -0500 Subject: [PATCH 241/310] Remove extraneous debugging --- src/AudioControls.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index 4fd69519dc..ebc2e96e7b 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -435,7 +435,7 @@ AudioControls::onPlaybackStopped() void AudioControls::onPlaybackTimer( qint64 msElapsed ) { - tDebug() << Q_FUNC_INFO; + //tDebug() << Q_FUNC_INFO; m_phononTickCheckTimer.stop(); @@ -459,7 +459,7 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) return; int currentTime = m_sliderTimeLine.currentTime(); - tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << currentTime << "and audio engine state is" << (int)AudioEngine::instance()->state(); + //tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << currentTime << "and audio engine state is" << (int)AudioEngine::instance()->state(); // First condition checks for the common case where // 1) the track has been started @@ -477,14 +477,14 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) } else { - tDebug() << Q_FUNC_INFO << "Fallthrough"; + //tDebug() << Q_FUNC_INFO << "Fallthrough"; // If we're in here we're offset, so we need to do some munging around ui->seekSlider->blockSignals( true ); // First handle seeks if ( m_seeked ) { - tDebug() << Q_FUNC_INFO << "Seeked"; + //tDebug() << Q_FUNC_INFO << "Seeked"; m_sliderTimeLine.setPaused( true ); m_sliderTimeLine.setCurrentTime( msElapsed ); m_seeked = false; @@ -495,7 +495,7 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) // However, a Phonon bug means that after a seek we'll actually have AudioEngine's state be Playing, when it ain't, so have to detect that else if ( AudioEngine::instance()->state() == AudioEngine::Playing ) { - tDebug() << Q_FUNC_INFO << "AudioEngine playing"; + //tDebug() << Q_FUNC_INFO << "AudioEngine playing"; m_sliderTimeLine.setPaused( true ); m_sliderTimeLine.setCurrentTime( msElapsed ); if ( msElapsed != m_lastSliderCheck ) @@ -504,7 +504,7 @@ AudioControls::onPlaybackTimer( qint64 msElapsed ) // Finally, the case where the audioengine isn't playing; if the timeline is still running, pause it and catch up else if ( AudioEngine::instance()->state() != AudioEngine::Playing ) { - tDebug() << Q_FUNC_INFO << "AudioEngine not playing"; + //tDebug() << Q_FUNC_INFO << "AudioEngine not playing"; if ( msElapsed != currentTime || m_sliderTimeLine.state() == QTimeLine::Running) { m_sliderTimeLine.setPaused( true ); From d8a7669df8da73f329cc3e2279ba84bc033a9620 Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Tue, 26 Jun 2012 11:21:41 -0300 Subject: [PATCH 242/310] * Moved isLocalResult and isHttpResult to TomahawkUtils. --- src/libtomahawk/audio/AudioEngine.cpp | 22 +++++----------------- src/libtomahawk/audio/AudioEngine.h | 3 --- src/libtomahawk/utils/TomahawkUtils.cpp | 14 ++++++++++++++ src/libtomahawk/utils/TomahawkUtils.h | 3 +++ 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index e1985bf776..38e9f746b8 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -440,7 +440,8 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) { setCurrentTrack( result ); - if ( !isHttpResult( m_currentTrack->url() ) && !isLocalResult( m_currentTrack->url() ) ) + if ( !TomahawkUtils::isHttpResult( m_currentTrack->url() ) && + !TomahawkUtils::isLocalResult( m_currentTrack->url() ) ) { io = Servent::instance()->getIODeviceForUrl( m_currentTrack ); @@ -458,7 +459,8 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) m_state = Loading; emit loading( m_currentTrack ); - if ( !isHttpResult( m_currentTrack->url() ) && !isLocalResult( m_currentTrack->url() ) ) + if ( !TomahawkUtils::isHttpResult( m_currentTrack->url() ) && + !TomahawkUtils::isLocalResult( m_currentTrack->url() ) ) { if ( QNetworkReply* qnr_io = qobject_cast< QNetworkReply* >( io.data() ) ) m_mediaObject->setCurrentSource( new QNR_IODeviceStream( qnr_io, this ) ); @@ -468,7 +470,7 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result ) } else { - if ( !isLocalResult( m_currentTrack->url() ) ) + if ( !TomahawkUtils::isLocalResult( m_currentTrack->url() ) ) { QUrl furl = m_currentTrack->url(); if ( m_currentTrack->url().contains( "?" ) ) @@ -977,20 +979,6 @@ AudioEngine::setCurrentTrack( const Tomahawk::result_ptr& result ) } -bool -AudioEngine::isHttpResult( const QString& url ) const -{ - return url.startsWith( "http://" ) || url.startsWith( "https://" ); -} - - -bool -AudioEngine::isLocalResult( const QString& url ) const -{ - return url.startsWith( "file://" ); -} - - void AudioEngine::checkStateQueue() { diff --git a/src/libtomahawk/audio/AudioEngine.h b/src/libtomahawk/audio/AudioEngine.h index 348d0c8aa5..da2e9c43ff 100644 --- a/src/libtomahawk/audio/AudioEngine.h +++ b/src/libtomahawk/audio/AudioEngine.h @@ -152,9 +152,6 @@ private slots: void setState( AudioState state ); - bool isHttpResult( const QString& ) const; - bool isLocalResult( const QString& ) const; - QSharedPointer m_input; Tomahawk::query_ptr m_stopAfterTrack; diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index a2fcb5aed5..433b1f6b6e 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -772,6 +772,20 @@ md5( const QByteArray& data ) } +bool +isHttpResult( const QString& url ) +{ + return url.startsWith( "http://" ) || url.startsWith( "https://" ); +} + + +bool +isLocalResult( const QString& url ) +{ + return url.startsWith( "file://" ); +} + + void crash() { diff --git a/src/libtomahawk/utils/TomahawkUtils.h b/src/libtomahawk/utils/TomahawkUtils.h index da0f02f322..a245952ef1 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -189,6 +189,9 @@ namespace TomahawkUtils DLLEXPORT QString md5( const QByteArray& data ); DLLEXPORT bool removeDirectory( const QString& dir ); + DLLEXPORT bool isHttpResult( const QString& url ); + DLLEXPORT bool isLocalResult( const QString& url ); + DLLEXPORT bool verifyFile( const QString& filePath, const QString& signature ); DLLEXPORT QString extractScriptPayload( const QString& filename, const QString& resolverId ); DLLEXPORT bool unzipFileInFolder( const QString& zipFileName, const QDir& folder ); From 0278f82c2a0a006b61fc6766a8f6340184009fff Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Sun, 1 Jul 2012 17:57:54 -0300 Subject: [PATCH 243/310] * JobStatusView::instance()->model()->addJob() calls will be ignored when ENABLE_HEADLESS is setted. --- src/TomahawkWindow.cpp | 12 +++++----- src/libtomahawk/DropJob.cpp | 7 ++++++ .../accounts/spotify/SpotifyAccount.cpp | 2 ++ src/libtomahawk/jobview/JobStatusView.cpp | 22 +++++++++++++++++-- src/libtomahawk/jobview/LatchedStatusItem.cpp | 6 +++++ .../jobview/PipelineStatusItem.cpp | 10 ++++++++- .../jobview/TransferStatusItem.cpp | 12 ++++++++++ src/libtomahawk/utils/GroovesharkParser.cpp | 7 ++++++ src/libtomahawk/utils/ItunesParser.cpp | 4 ++++ src/libtomahawk/utils/RdioParser.cpp | 5 +++++ src/libtomahawk/utils/ShortenedLinkParser.cpp | 4 ++++ src/libtomahawk/utils/SpotifyParser.cpp | 4 ++++ 12 files changed, 87 insertions(+), 8 deletions(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 275da763a4..231b303fc4 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -959,13 +959,15 @@ TomahawkWindow::onXSPFError( XSPFLoader::XSPFErrorCode error ) void TomahawkWindow::onAudioEngineError( AudioEngine::AudioErrorCode /* error */ ) { +#ifndef ENABLE_HEADLESS QString msg; -#ifdef Q_WS_X11 - msg = tr( "Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed." ); -#else - msg = tr( "Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped." ); -#endif + #ifdef Q_WS_X11 + msg = tr( "Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed." ); + #else + msg = tr( "Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped." ); + #endif JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( msg, 15 ) ); +#endif if ( m_audioRetryCounter < 3 ) AudioEngine::instance()->play(); diff --git a/src/libtomahawk/DropJob.cpp b/src/libtomahawk/DropJob.cpp index bb9a0c9a11..a1ccbfc9cc 100644 --- a/src/libtomahawk/DropJob.cpp +++ b/src/libtomahawk/DropJob.cpp @@ -754,11 +754,14 @@ DropJob::onTracksAdded( const QList& tracksList ) { tDebug() << Q_FUNC_INFO << tracksList.count(); +#ifndef ENABLE_HEADLESS /* if ( results.isEmpty() ) { + const QString which = album.isEmpty() ? "artist" : "album"; JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( tr( "No tracks found for given %1" ).arg( which ), 5 ) ); }*/ +#endif if ( !m_dropJob.isEmpty() ) { @@ -861,8 +864,10 @@ DropJob::getArtist( const QString &artist, Tomahawk::ModelMode mode ) connect( artistPtr.data(), SIGNAL( tracksAdded( QList, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ), SLOT( onTracksAdded( QList ) ) ); +#ifndef ENABLE_HEADLESS m_dropJob << new DropJobNotifier( QPixmap( RESPATH "images/album-icon.png" ), Album ); JobStatusView::instance()->model()->addJob( m_dropJob.last() ); +#endif m_queryCount++; } @@ -891,8 +896,10 @@ DropJob::getAlbum( const QString& artist, const QString& album ) connect( albumPtr.data(), SIGNAL( tracksAdded( QList, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ), SLOT( onTracksAdded( QList ) ) ); +#ifndef ENABLE_HEADLESS m_dropJob << new DropJobNotifier( QPixmap( RESPATH "images/album-icon.png" ), Album ); JobStatusView::instance()->model()->addJob( m_dropJob.last() ); +#endif m_queryCount++; } diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index 08c5308825..5bf8bae4b3 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -1003,8 +1003,10 @@ SpotifyAccount::resolverMessage( const QString &msgType, const QVariantMap &msg if ( msg.value( "isDebugMsg" ).toBool() ) tDebug( LOGVERBOSE ) << "SpotifyResolverError: " << error; +#ifndef ENABLE_HEADLESS else JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( QString( "Spotify: %1" ).arg( error ) ) ); +#endif } else if ( msgType == "userChanged" ) { diff --git a/src/libtomahawk/jobview/JobStatusView.cpp b/src/libtomahawk/jobview/JobStatusView.cpp index 1469df79c6..58fe880238 100644 --- a/src/libtomahawk/jobview/JobStatusView.cpp +++ b/src/libtomahawk/jobview/JobStatusView.cpp @@ -24,11 +24,14 @@ #include "JobStatusModel.h" #include "JobStatusItem.h" #include "JobStatusDelegate.h" +#include "utils/Logger.h" +#include "Source.h" + +#ifndef ENABLE_HEADLESS #include "PipelineStatusItem.h" #include "TransferStatusItem.h" #include "LatchedStatusItem.h" -#include "utils/Logger.h" -#include "Source.h" +#endif #include #include @@ -62,9 +65,24 @@ JobStatusView::JobStatusView( AnimatedSplitter* parent ) m_view->setAttribute( Qt::WA_MacShowFocusRect, 0 ); m_view->setUniformItemSizes( false ); +#ifndef ENABLE_HEADLESS + +#ifndef Q_WS_WIN + QFont f = font(); + f.setPointSize( f.pointSize() - 1 ); + setFont( f ); +#endif + +#ifdef Q_WS_MAC + QFont f = font(); + f.setPointSize( f.pointSize() - 2 ); + setFont( f ); +#endif + new PipelineStatusManager( this ); new TransferStatusManager( this ); new LatchedStatusManager( this ); +#endif setMouseTracking( true ); m_view->setMouseTracking( true ); diff --git a/src/libtomahawk/jobview/LatchedStatusItem.cpp b/src/libtomahawk/jobview/LatchedStatusItem.cpp index 3759cd730d..39700f617c 100644 --- a/src/libtomahawk/jobview/LatchedStatusItem.cpp +++ b/src/libtomahawk/jobview/LatchedStatusItem.cpp @@ -24,6 +24,10 @@ #include "JobStatusModel.h" #include "utils/TomahawkUtilsGui.h" +#ifndef ENABLE_HEADLESS +#include "JobStatusModel.h" +#include "JobStatusView.h" +#endif LatchedStatusItem::LatchedStatusItem( const Tomahawk::source_ptr& from, const Tomahawk::source_ptr& to, LatchedStatusManager* parent ) : JobStatusItem() @@ -76,9 +80,11 @@ LatchedStatusManager::latchedOn( const Tomahawk::source_ptr& from, const Tomahaw if ( to->isLocal() ) { +#ifndef ENABLE_HEADLESS LatchedStatusItem* item = new LatchedStatusItem( from, to, this ); m_jobs[ from->userName() ] = item; JobStatusView::instance()->model()->addJob( item ); +#endif connect( from.data(), SIGNAL( offline() ), this, SLOT( sourceOffline() ), Qt::UniqueConnection ); } diff --git a/src/libtomahawk/jobview/PipelineStatusItem.cpp b/src/libtomahawk/jobview/PipelineStatusItem.cpp index 874e7d3186..b5b815c2f7 100644 --- a/src/libtomahawk/jobview/PipelineStatusItem.cpp +++ b/src/libtomahawk/jobview/PipelineStatusItem.cpp @@ -22,9 +22,13 @@ #include "utils/TomahawkUtilsGui.h" #include "Pipeline.h" +#include "TomahawkApp.h" +#include "Source.h" + +#ifndef ENABLE_HEADLESS #include "JobStatusModel.h" #include "JobStatusView.h" -#include "Source.h" +#endif PipelineStatusItem::PipelineStatusItem( const Tomahawk::query_ptr& q ) @@ -98,10 +102,14 @@ PipelineStatusManager::PipelineStatusManager( QObject* parent ) void PipelineStatusManager::resolving( const Tomahawk::query_ptr& p ) { + Q_UNUSED( p ); + +#ifndef ENABLE_HEADLESS if ( m_curItem.isNull() ) { // No current query item and we're resolving something, so show it m_curItem = QPointer< PipelineStatusItem >( new PipelineStatusItem( p ) ); JobStatusView::instance()->model()->addJob( m_curItem.data() ); } +#endif } diff --git a/src/libtomahawk/jobview/TransferStatusItem.cpp b/src/libtomahawk/jobview/TransferStatusItem.cpp index 0bb9f5ef82..0db53ad2bc 100644 --- a/src/libtomahawk/jobview/TransferStatusItem.cpp +++ b/src/libtomahawk/jobview/TransferStatusItem.cpp @@ -18,8 +18,12 @@ #include "TransferStatusItem.h" + #include "JobStatusView.h" #include "JobStatusModel.h" +#include "network/StreamConnection.h" +#include "network/Servent.h" +#include "utils/TomahawkUtils.h" #include "Result.h" #include "Source.h" #include "Artist.h" @@ -28,6 +32,11 @@ #include "utils/TomahawkUtilsGui.h" +#ifndef ENABLE_HEADLESS +#include "JobStatusModel.h" +#include "JobStatusView.h" +#endif + TransferStatusItem::TransferStatusItem( TransferStatusManager* p, StreamConnection* sc ) : m_parent( p ) , m_stream( QPointer< StreamConnection >( sc ) ) @@ -104,10 +113,13 @@ TransferStatusManager::TransferStatusManager( QObject* parent ) connect( Servent::instance(), SIGNAL( streamStarted( StreamConnection* ) ), SLOT( streamRegistered( StreamConnection* ) ) ); } + void TransferStatusManager::streamRegistered( StreamConnection* sc ) { +#ifndef ENABLE_HEADLESS JobStatusView::instance()->model()->addJob( new TransferStatusItem( this, sc ) ); +#endif } diff --git a/src/libtomahawk/utils/GroovesharkParser.cpp b/src/libtomahawk/utils/GroovesharkParser.cpp index 258903e5d4..65a5f19b1a 100644 --- a/src/libtomahawk/utils/GroovesharkParser.cpp +++ b/src/libtomahawk/utils/GroovesharkParser.cpp @@ -136,8 +136,10 @@ GroovesharkParser::lookupGroovesharkPlaylist( const QString& linkRaw ) NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->post( QNetworkRequest( url ), data ) ); connect( reply, SIGNAL( finished() ), SLOT( groovesharkLookupFinished() ) ); +#ifndef ENABLE_HEADLESS m_browseJob = new DropJobNotifier( pixmap(), "Grooveshark", type, reply ); JobStatusView::instance()->model()->addJob( m_browseJob ); +#endif m_queries.insert( reply ); } @@ -151,8 +153,10 @@ GroovesharkParser::lookupGroovesharkTrack( const QString& track ) NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( QUrl( track ) ) ) ); connect( reply, SIGNAL( finished() ), SLOT( trackPageFetchFinished() ) ); +#ifndef ENABLE_HEADLESS m_browseJob = new DropJobNotifier( pixmap(), "Grooveshark", DropJob::Track, reply ); JobStatusView::instance()->model()->addJob( m_browseJob ); +#endif m_queries << reply; } @@ -235,7 +239,10 @@ GroovesharkParser::groovesharkLookupFinished() } else { +#ifndef ENABLE_HEADLESS JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( tr( "Error fetching Grooveshark information from the network!" ) ) ); +#endif + tLog() << "Error in network request to grooveshark for track decoding:" << r->reply()->errorString(); } diff --git a/src/libtomahawk/utils/ItunesParser.cpp b/src/libtomahawk/utils/ItunesParser.cpp index c66c815d0d..d08d0f9e23 100644 --- a/src/libtomahawk/utils/ItunesParser.cpp +++ b/src/libtomahawk/utils/ItunesParser.cpp @@ -109,8 +109,10 @@ ItunesParser::lookupItunesUri( const QString& link ) NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( url ) ) ); connect( reply, SIGNAL( finished() ), SLOT( itunesResponseLookupFinished() ) ); +#ifndef ENABLE_HEADLESS DropJobNotifier* j = new DropJobNotifier( pixmap(), QString( "Itunes" ), type, reply ); JobStatusView::instance()->model()->addJob( j ); +#endif m_queries.insert( reply ); } @@ -171,7 +173,9 @@ ItunesParser::itunesResponseLookupFinished() } else { +#ifndef ENABLE_HEADLESS JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( tr( "Error fetching iTunes information from the network!" ) ) ); +#endif tLog() << "Error in network request to Itunes for track decoding:" << r->reply()->errorString(); } diff --git a/src/libtomahawk/utils/RdioParser.cpp b/src/libtomahawk/utils/RdioParser.cpp index 3ef5899e69..004ab0da7e 100644 --- a/src/libtomahawk/utils/RdioParser.cpp +++ b/src/libtomahawk/utils/RdioParser.cpp @@ -133,8 +133,10 @@ RdioParser::fetchObjectsFromUrl( const QString& url, DropJob::DropType type ) NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->post( request, data ) ); connect( reply, SIGNAL( finished() ), SLOT( rdioReturned() ) ); +#ifndef ENABLE_HEADLESS m_browseJob = new DropJobNotifier( pixmap(), QString( "Rdio" ), type, reply ); JobStatusView::instance()->model()->addJob( m_browseJob ); +#endif m_reqQueries.insert( reply ); } @@ -198,7 +200,10 @@ RdioParser::rdioReturned() } else { +#ifndef ENABLE_HEADLESS JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( tr( "Error fetching Rdio information from the network!" ) ) ); +#endif + tLog() << "Error in network request to Rdio for track decoding:" << r->reply()->errorString(); } diff --git a/src/libtomahawk/utils/ShortenedLinkParser.cpp b/src/libtomahawk/utils/ShortenedLinkParser.cpp index 47b8515111..73433487ca 100644 --- a/src/libtomahawk/utils/ShortenedLinkParser.cpp +++ b/src/libtomahawk/utils/ShortenedLinkParser.cpp @@ -83,8 +83,10 @@ ShortenedLinkParser::lookupUrl( const QString& url ) m_queries.insert( reply ); +#ifndef ENABLE_HEADLESS m_expandJob = new DropJobNotifier( pixmap(), "shortened", DropJob::Track, reply ); JobStatusView::instance()->model()->addJob( m_expandJob ); +#endif } @@ -94,8 +96,10 @@ ShortenedLinkParser::lookupFinished() NetworkReply* r = qobject_cast< NetworkReply* >( sender() ); Q_ASSERT( r ); +#ifndef ENABLE_HEADLESS if ( r->reply()->error() != QNetworkReply::NoError ) JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( tr( "Network error parsing shortened link!" ) ) ); +#endif tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Got an un-shortened url:" << r->reply()->url().toString(); m_links << r->reply()->url().toString(); diff --git a/src/libtomahawk/utils/SpotifyParser.cpp b/src/libtomahawk/utils/SpotifyParser.cpp index e3bc78a2ff..ab8a854293 100644 --- a/src/libtomahawk/utils/SpotifyParser.cpp +++ b/src/libtomahawk/utils/SpotifyParser.cpp @@ -165,8 +165,10 @@ SpotifyParser::lookupSpotifyBrowse( const QString& link ) NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( url ) ) ); connect( reply, SIGNAL( finished() ), SLOT( spotifyBrowseFinished() ) ); +#ifndef ENABLE_HEADLESS m_browseJob = new DropJobNotifier( pixmap(), "Spotify", type, reply ); JobStatusView::instance()->model()->addJob( m_browseJob ); +#endif m_queries.insert( reply ); } @@ -192,8 +194,10 @@ SpotifyParser::lookupTrack( const QString& link ) NetworkReply* reply = new NetworkReply( TomahawkUtils::nam()->get( QNetworkRequest( url ) ) ); connect( reply, SIGNAL( finished() ), SLOT( spotifyTrackLookupFinished() ) ); +#ifndef ENABLE_HEADLESS DropJobNotifier* j = new DropJobNotifier( pixmap(), QString( "Spotify" ), DropJob::Track, reply ); JobStatusView::instance()->model()->addJob( j ); +#endif m_queries.insert( reply ); } From 420720ae52725b96cfcce1b9a7a45d3d2bda1f5a Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Mon, 9 Jul 2012 16:49:34 -0300 Subject: [PATCH 244/310] * Don't compile lastfm parts if liblastfm wasn't found. --- src/TomahawkApp.cpp | 2 ++ src/libtomahawk/CMakeLists.txt | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp index bae934be8f..28970aa19e 100644 --- a/src/TomahawkApp.cpp +++ b/src/TomahawkApp.cpp @@ -640,8 +640,10 @@ TomahawkApp::spotifyApiCheckFinished() void TomahawkApp::accountManagerReady() { +#ifdef LIBLASTFM_FOUND Tomahawk::Accounts::LastFmAccountFactory* lastfmFactory = new Tomahawk::Accounts::LastFmAccountFactory(); m_accountManager.data()->addAccountFactory( lastfmFactory ); +#endif Tomahawk::Accounts::SpotifyAccountFactory* spotifyFactory = new Tomahawk::Accounts::SpotifyAccountFactory; m_accountManager.data()->addAccountFactory( spotifyFactory ); diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 8250770722..2d03013edc 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -207,10 +207,6 @@ list(APPEND libSources accounts/spotify/SpotifyPlaylistUpdater.cpp accounts/spotify/SpotifyInfoPlugin.cpp - accounts/lastfm/LastFmAccount.cpp - accounts/lastfm/LastFmConfig.cpp - accounts/lastfm/LastFmInfoPlugin.cpp - sip/SipPlugin.cpp sip/SipInfo.cpp sip/PeerInfo.cpp @@ -321,6 +317,14 @@ list(APPEND libSources thirdparty/kdsingleapplicationguard/kdlockedsharedmemorypointer.cpp ) +IF(LIBLASTFM_FOUND) + set( libSources ${libSources} + accounts/lastfm/LastFmAccount.cpp + accounts/lastfm/LastFmConfig.cpp + accounts/lastfm/LastFmInfoPlugin.cpp + ) +ENDIF(LIBLASTFM_FOUND) + set( libUI ${libUI} widgets/PlaylistTypeSelectorDialog.ui widgets/NewPlaylistWidget.ui From b5f5079dcaeebd808738de5d7b442fe8db0494ae Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Thu, 12 Jul 2012 15:46:02 -0300 Subject: [PATCH 245/310] * Added a getter to AccountManager::m_connected. --- src/libtomahawk/accounts/AccountManager.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libtomahawk/accounts/AccountManager.h b/src/libtomahawk/accounts/AccountManager.h index 5269716874..ef898aeef4 100644 --- a/src/libtomahawk/accounts/AccountManager.h +++ b/src/libtomahawk/accounts/AccountManager.h @@ -82,6 +82,8 @@ class DLLEXPORT AccountManager : public QObject Account* zeroconfAccount() const; + bool isConnected() { return m_connected; } + public slots: void connectAll(); void disconnectAll(); From 1098ede0e8bb0003b45e55c96b83c8058a9ad25e Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Mon, 23 Jul 2012 23:28:28 -0300 Subject: [PATCH 246/310] * Made TomahawkSqlQuery visible in the outside --- src/libtomahawk/database/TomahawkSqlQuery.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/database/TomahawkSqlQuery.h b/src/libtomahawk/database/TomahawkSqlQuery.h index 02f69cb0fc..e7cc996777 100644 --- a/src/libtomahawk/database/TomahawkSqlQuery.h +++ b/src/libtomahawk/database/TomahawkSqlQuery.h @@ -26,7 +26,9 @@ //#define TOMAHAWK_QUERY_ANALYZE 1 -class TomahawkSqlQuery : public QSqlQuery +#include "DllMacro.h" + +class DLLEXPORT TomahawkSqlQuery : public QSqlQuery { public: From 4949e787a317c269e9a3863a8b2f65adaf08aa99 Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Mon, 23 Jul 2012 23:36:38 -0300 Subject: [PATCH 247/310] * Forwarded FuzzyIndex class declaration --- src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp | 1 + src/libtomahawk/database/DatabaseImpl.cpp | 1 + src/libtomahawk/database/DatabaseImpl.h | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp index 5130d7c04f..40e14c781c 100644 --- a/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp +++ b/src/libtomahawk/database/DatabaseCommand_UpdateSearchIndex.cpp @@ -22,6 +22,7 @@ #include #include "DatabaseImpl.h" +#include "FuzzyIndex.h" #include "Source.h" #include "TomahawkSqlQuery.h" #include "jobview/IndexingJobItem.h" diff --git a/src/libtomahawk/database/DatabaseImpl.cpp b/src/libtomahawk/database/DatabaseImpl.cpp index ed9dc8a6e0..f3ddd95dc4 100644 --- a/src/libtomahawk/database/DatabaseImpl.cpp +++ b/src/libtomahawk/database/DatabaseImpl.cpp @@ -27,6 +27,7 @@ #include #include "database/Database.h" +#include "FuzzyIndex.h" #include "SourceList.h" #include "Result.h" #include "Artist.h" diff --git a/src/libtomahawk/database/DatabaseImpl.h b/src/libtomahawk/database/DatabaseImpl.h index c5fa87688c..f423038f7d 100644 --- a/src/libtomahawk/database/DatabaseImpl.h +++ b/src/libtomahawk/database/DatabaseImpl.h @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -32,10 +33,10 @@ #include #include "TomahawkSqlQuery.h" -#include "FuzzyIndex.h" #include "Typedefs.h" class Database; +class FuzzyIndex; class DatabaseImpl : public QObject { From 811c0e618d42f87acdd7d5aba7928374759c4a48 Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Mon, 23 Jul 2012 23:39:25 -0300 Subject: [PATCH 248/310] * Made DatabaseCommand_CreateDynamicPlaylist and DatabaseCommand_CreatePlaylist independent of ViewManager --- .../DatabaseCommand_CreateDynamicPlaylist.cpp | 15 +++++++-------- .../database/DatabaseCommand_CreatePlaylist.cpp | 11 ++++------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp b/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp index ad8d8e3744..b64c45b5f0 100644 --- a/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp +++ b/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp @@ -114,14 +114,13 @@ DatabaseCommand_CreateDynamicPlaylist::postCommitHook() qDebug() << Q_FUNC_INFO << "..reporting.."; if( m_playlist.isNull() ) { source_ptr src = source(); -#ifndef ENABLE_HEADLESS - QMetaObject::invokeMethod( ViewManager::instance(), - "createDynamicPlaylist", - Qt::BlockingQueuedConnection, - QGenericArgument( "Tomahawk::source_ptr", (const void*)&src ), - Q_ARG( QVariant, m_v ) ); -#endif - } else { + + Tomahawk::dynplaylist_ptr p = Tomahawk::dynplaylist_ptr( new Tomahawk::DynamicPlaylist( src, m_v.toMap().value( "type", QString() ).toString() ) ); + QJson::QObjectHelper::qvariant2qobject( m_v.toMap(), p.data() ); + p->reportCreated( p ); + } + else + { m_playlist->reportCreated( m_playlist ); } if( source()->isLocal() ) diff --git a/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp b/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp index 31fb7e2853..f2e2ce771d 100644 --- a/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp +++ b/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp @@ -82,13 +82,10 @@ DatabaseCommand_CreatePlaylist::postCommitHook() if ( m_playlist.isNull() ) { source_ptr src = source(); -#ifndef ENABLE_HEADLESS - QMetaObject::invokeMethod( ViewManager::instance(), - "createPlaylist", - Qt::BlockingQueuedConnection, - QGenericArgument( "Tomahawk::source_ptr", (const void*)&src ), - Q_ARG( QVariant, m_v ) ); -#endif + + Tomahawk::playlist_ptr p = Tomahawk::playlist_ptr( new Tomahawk::Playlist( src ) ); + QJson::QObjectHelper::qvariant2qobject( m_v.toMap(), p.data() ); + p->reportCreated( p ); } else { From 79e4647c1ca4d79eeda9221c989da56e26f122a0 Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Mon, 23 Jul 2012 23:39:56 -0300 Subject: [PATCH 249/310] * Made DatabaseImpl visible in the outside --- src/libtomahawk/database/DatabaseImpl.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/database/DatabaseImpl.h b/src/libtomahawk/database/DatabaseImpl.h index f423038f7d..33d508f4a2 100644 --- a/src/libtomahawk/database/DatabaseImpl.h +++ b/src/libtomahawk/database/DatabaseImpl.h @@ -32,13 +32,14 @@ #include #include +#include "DllMacro.h" #include "TomahawkSqlQuery.h" #include "Typedefs.h" class Database; class FuzzyIndex; -class DatabaseImpl : public QObject +class DLLEXPORT DatabaseImpl : public QObject { Q_OBJECT From 7968e2ee714d69bf17baec9bc79c12229b15966a Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Wed, 12 Sep 2012 00:59:47 -0300 Subject: [PATCH 250/310] * Moved HeadlessCheck.h to libtomahawk directory --- src/{ => libtomahawk}/HeadlessCheck.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{ => libtomahawk}/HeadlessCheck.h (100%) diff --git a/src/HeadlessCheck.h b/src/libtomahawk/HeadlessCheck.h similarity index 100% rename from src/HeadlessCheck.h rename to src/libtomahawk/HeadlessCheck.h From 34244ebbd09bdf847e5c43efe81e2e770e631d0f Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Wed, 12 Sep 2012 09:02:47 -0300 Subject: [PATCH 251/310] * Moved all includes to utils/Logger.h from header files to their respectives source files. --- src/accounts/twitter/TwitterAccount.cpp | 1 + src/libtomahawk/EchonestCatalogSynchronizer.cpp | 3 +++ src/libtomahawk/accounts/AccountManager.cpp | 1 + src/libtomahawk/accounts/AccountModel.cpp | 1 + src/libtomahawk/accounts/ResolverAccount.cpp | 1 + src/libtomahawk/accounts/spotify/SpotifyAccount.cpp | 1 + src/libtomahawk/database/DatabaseCommand_DeleteFiles.h | 1 - src/libtomahawk/filemetadata/MetadataEditor.cpp | 2 +- src/libtomahawk/sip/SipInfo.cpp | 2 ++ src/libtomahawk/sip/SipInfo.h | 2 -- 10 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/accounts/twitter/TwitterAccount.cpp b/src/accounts/twitter/TwitterAccount.cpp index 842448539b..6a40745502 100644 --- a/src/accounts/twitter/TwitterAccount.cpp +++ b/src/accounts/twitter/TwitterAccount.cpp @@ -22,6 +22,7 @@ #include "TwitterConfigWidget.h" #include "accounts/twitter/TomahawkOAuthTwitter.h" #include "libtomahawk/infosystem/InfoSystem.h" +#include "utils/Logger.h" #include "sip/SipPlugin.h" #include diff --git a/src/libtomahawk/EchonestCatalogSynchronizer.cpp b/src/libtomahawk/EchonestCatalogSynchronizer.cpp index 45f4c7657d..d72650f131 100644 --- a/src/libtomahawk/EchonestCatalogSynchronizer.cpp +++ b/src/libtomahawk/EchonestCatalogSynchronizer.cpp @@ -32,6 +32,9 @@ #include "Query.h" #include "utils/Logger.h" +#include +#include + using namespace Tomahawk; EchonestCatalogSynchronizer* EchonestCatalogSynchronizer::s_instance = 0; diff --git a/src/libtomahawk/accounts/AccountManager.cpp b/src/libtomahawk/accounts/AccountManager.cpp index ce2b0e13db..8baf9d892e 100644 --- a/src/libtomahawk/accounts/AccountManager.cpp +++ b/src/libtomahawk/accounts/AccountManager.cpp @@ -22,6 +22,7 @@ #include "SourceList.h" #include "TomahawkSettings.h" #include "ResolverAccount.h" +#include "utils/Logger.h" #include #include diff --git a/src/libtomahawk/accounts/AccountModel.cpp b/src/libtomahawk/accounts/AccountModel.cpp index 6e9d01ceaf..c32582eb00 100644 --- a/src/libtomahawk/accounts/AccountModel.cpp +++ b/src/libtomahawk/accounts/AccountModel.cpp @@ -24,6 +24,7 @@ #include "AtticaManager.h" #include "ResolverAccount.h" #include "TomahawkSettings.h" +#include "utils/Logger.h" #ifndef ENABLE_HEADLESS #include diff --git a/src/libtomahawk/accounts/ResolverAccount.cpp b/src/libtomahawk/accounts/ResolverAccount.cpp index be163609a1..a4fdca5432 100644 --- a/src/libtomahawk/accounts/ResolverAccount.cpp +++ b/src/libtomahawk/accounts/ResolverAccount.cpp @@ -25,6 +25,7 @@ #include "Pipeline.h" #include "TomahawkSettings.h" #include "Source.h" +#include "utils/Logger.h" #include #include diff --git a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp index 5bf8bae4b3..7c8290e22c 100644 --- a/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp +++ b/src/libtomahawk/accounts/spotify/SpotifyAccount.cpp @@ -31,6 +31,7 @@ #include "utils/Closure.h" #include "SpotifyInfoPlugin.h" #include "infosystem/InfoSystem.h" +#include "utils/Logger.h" #ifndef ENABLE_HEADLESS #include "jobview/JobStatusView.h" diff --git a/src/libtomahawk/database/DatabaseCommand_DeleteFiles.h b/src/libtomahawk/database/DatabaseCommand_DeleteFiles.h index 47b69d445d..2ddb5d04a6 100644 --- a/src/libtomahawk/database/DatabaseCommand_DeleteFiles.h +++ b/src/libtomahawk/database/DatabaseCommand_DeleteFiles.h @@ -29,7 +29,6 @@ #include "DllMacro.h" -#include "utils/Logger.h" class DLLEXPORT DatabaseCommand_DeleteFiles : public DatabaseCommandLoggable { diff --git a/src/libtomahawk/filemetadata/MetadataEditor.cpp b/src/libtomahawk/filemetadata/MetadataEditor.cpp index 55a14d8053..465ff9124f 100644 --- a/src/libtomahawk/filemetadata/MetadataEditor.cpp +++ b/src/libtomahawk/filemetadata/MetadataEditor.cpp @@ -33,10 +33,10 @@ #include "utils/TomahawkUtils.h" #include "utils/Closure.h" #include "utils/Logger.h" - #include "taglib/fileref.h" + #include #include #include diff --git a/src/libtomahawk/sip/SipInfo.cpp b/src/libtomahawk/sip/SipInfo.cpp index 6ccec9ccba..4d461fb221 100644 --- a/src/libtomahawk/sip/SipInfo.cpp +++ b/src/libtomahawk/sip/SipInfo.cpp @@ -19,6 +19,8 @@ #include "SipInfo.h" +#include "utils/Logger.h" + #include #include diff --git a/src/libtomahawk/sip/SipInfo.h b/src/libtomahawk/sip/SipInfo.h index fbe417e04b..3fab26f7ec 100644 --- a/src/libtomahawk/sip/SipInfo.h +++ b/src/libtomahawk/sip/SipInfo.h @@ -22,7 +22,6 @@ #include #include -#include "utils/Logger.h" #include "DllMacro.h" class SipInfoPrivate; @@ -66,5 +65,4 @@ Q_OBJECT DLLEXPORT QDebug operator<<( QDebug dbg, const SipInfo &info ); DLLEXPORT bool operator==( const SipInfo& one, const SipInfo& two ); - #endif // SIPINFO_H From b75df8398933d2520a698ca35b23652fddf665e5 Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Mon, 24 Sep 2012 13:59:32 -0300 Subject: [PATCH 252/310] * Removed some unnecessary includes --- src/libtomahawk/Album.h | 2 -- src/libtomahawk/Artist.h | 2 -- src/libtomahawk/AtticaManager.h | 2 -- src/libtomahawk/jobview/PipelineStatusItem.cpp | 1 - 4 files changed, 7 deletions(-) diff --git a/src/libtomahawk/Album.h b/src/libtomahawk/Album.h index e8ff20cd3b..9fa18c1b99 100644 --- a/src/libtomahawk/Album.h +++ b/src/libtomahawk/Album.h @@ -20,8 +20,6 @@ #ifndef TOMAHAWKALBUM_H #define TOMAHAWKALBUM_H -#include "config.h" - #include #include #ifndef ENABLE_HEADLESS diff --git a/src/libtomahawk/Artist.h b/src/libtomahawk/Artist.h index 4830345ab5..f3fc98fa46 100644 --- a/src/libtomahawk/Artist.h +++ b/src/libtomahawk/Artist.h @@ -20,8 +20,6 @@ #ifndef TOMAHAWKARTIST_H #define TOMAHAWKARTIST_H -#include "config.h" - #include #ifndef ENABLE_HEADLESS #include diff --git a/src/libtomahawk/AtticaManager.h b/src/libtomahawk/AtticaManager.h index a0a0f5f694..91fd5df548 100644 --- a/src/libtomahawk/AtticaManager.h +++ b/src/libtomahawk/AtticaManager.h @@ -19,8 +19,6 @@ #ifndef ATTICAMANAGER_H #define ATTICAMANAGER_H -#include "config.h" - #include #include #include diff --git a/src/libtomahawk/jobview/PipelineStatusItem.cpp b/src/libtomahawk/jobview/PipelineStatusItem.cpp index b5b815c2f7..ab0613b2d2 100644 --- a/src/libtomahawk/jobview/PipelineStatusItem.cpp +++ b/src/libtomahawk/jobview/PipelineStatusItem.cpp @@ -22,7 +22,6 @@ #include "utils/TomahawkUtilsGui.h" #include "Pipeline.h" -#include "TomahawkApp.h" #include "Source.h" #ifndef ENABLE_HEADLESS From 16ef203411b47df0fbc845a497c4600c9cf151fe Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Tue, 25 Sep 2012 09:02:15 -0300 Subject: [PATCH 253/310] * Removed some cruft --- src/libtomahawk/accounts/AccountManager.cpp | 1 - src/libtomahawk/accounts/AccountManager.h | 1 + src/libtomahawk/jobview/JobStatusView.cpp | 13 ------------- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/src/libtomahawk/accounts/AccountManager.cpp b/src/libtomahawk/accounts/AccountManager.cpp index 8baf9d892e..320d4e9af6 100644 --- a/src/libtomahawk/accounts/AccountManager.cpp +++ b/src/libtomahawk/accounts/AccountManager.cpp @@ -460,7 +460,6 @@ AccountManager::onSettingsChanged() } } - void AccountManager::onStateChanged( Account::ConnectionState state ) { diff --git a/src/libtomahawk/accounts/AccountManager.h b/src/libtomahawk/accounts/AccountManager.h index ef898aeef4..8f080676e5 100644 --- a/src/libtomahawk/accounts/AccountManager.h +++ b/src/libtomahawk/accounts/AccountManager.h @@ -107,6 +107,7 @@ private slots: void onError( int code, const QString& msg ); void onSettingsChanged(); + private: QStringList findPluginFactories(); void loadPluginFactories( const QStringList &paths ); diff --git a/src/libtomahawk/jobview/JobStatusView.cpp b/src/libtomahawk/jobview/JobStatusView.cpp index 58fe880238..119ec506e1 100644 --- a/src/libtomahawk/jobview/JobStatusView.cpp +++ b/src/libtomahawk/jobview/JobStatusView.cpp @@ -66,19 +66,6 @@ JobStatusView::JobStatusView( AnimatedSplitter* parent ) m_view->setUniformItemSizes( false ); #ifndef ENABLE_HEADLESS - -#ifndef Q_WS_WIN - QFont f = font(); - f.setPointSize( f.pointSize() - 1 ); - setFont( f ); -#endif - -#ifdef Q_WS_MAC - QFont f = font(); - f.setPointSize( f.pointSize() - 2 ); - setFont( f ); -#endif - new PipelineStatusManager( this ); new TransferStatusManager( this ); new LatchedStatusManager( this ); From 7966926d0c978012c72bf52d92d46da9470bfdc0 Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Tue, 25 Sep 2012 16:40:41 -0300 Subject: [PATCH 254/310] * Added methods to create playlists in SourceList class --- src/libtomahawk/SourceList.cpp | 18 ++++++++++++++++++ src/libtomahawk/SourceList.h | 5 +++++ src/libtomahawk/ViewManager.cpp | 18 ------------------ src/libtomahawk/ViewManager.h | 4 ---- .../DatabaseCommand_CreateDynamicPlaylist.cpp | 12 ++++++------ .../DatabaseCommand_CreatePlaylist.cpp | 16 ++++++---------- 6 files changed, 35 insertions(+), 38 deletions(-) diff --git a/src/libtomahawk/SourceList.cpp b/src/libtomahawk/SourceList.cpp index 5284397b1f..842730cfe2 100644 --- a/src/libtomahawk/SourceList.cpp +++ b/src/libtomahawk/SourceList.cpp @@ -216,6 +216,24 @@ SourceList::get( const QString& username, const QString& friendlyName, bool auto } +void +SourceList::createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ) +{ + Tomahawk::playlist_ptr p = Tomahawk::playlist_ptr( new Tomahawk::Playlist( src ) ); + QJson::QObjectHelper::qvariant2qobject( contents.toMap(), p.data() ); + p->reportCreated( p ); +} + + +void +SourceList::createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ) +{ + Tomahawk::dynplaylist_ptr p = Tomahawk::dynplaylist_ptr( new Tomahawk::DynamicPlaylist( src, contents.toMap().value( "type", QString() ).toString() ) ); + QJson::QObjectHelper::qvariant2qobject( contents.toMap(), p.data() ); + p->reportCreated( p ); +} + + void SourceList::sourceSynced() { diff --git a/src/libtomahawk/SourceList.h b/src/libtomahawk/SourceList.h index 1c515b8a65..618fa2d90a 100644 --- a/src/libtomahawk/SourceList.h +++ b/src/libtomahawk/SourceList.h @@ -54,6 +54,11 @@ Q_OBJECT Tomahawk::source_ptr get( const QString& username, const QString& friendlyName = QString(), bool autoCreate = false ); Tomahawk::source_ptr get( int id ) const; +public slots: + // called by the playlist creation dbcmds + void createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ); + void createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ); + signals: void ready(); diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index c9619dabd5..90c106071b 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -666,24 +666,6 @@ ViewManager::onWidgetDestroyed( QWidget* widget ) } -void -ViewManager::createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ) -{ - Tomahawk::playlist_ptr p = Tomahawk::playlist_ptr( new Tomahawk::Playlist( src ) ); - QJson::QObjectHelper::qvariant2qobject( contents.toMap(), p.data() ); - p->reportCreated( p ); -} - - -void -ViewManager::createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ) -{ - Tomahawk::dynplaylist_ptr p = Tomahawk::dynplaylist_ptr( new Tomahawk::DynamicPlaylist( src, contents.toMap().value( "type", QString() ).toString() ) ); - QJson::QObjectHelper::qvariant2qobject( contents.toMap(), p.data() ); - p->reportCreated( p ); -} - - void ViewManager::setTomahawkLoaded() { diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h index d8466a6013..a4379516fc 100644 --- a/src/libtomahawk/ViewManager.h +++ b/src/libtomahawk/ViewManager.h @@ -153,10 +153,6 @@ public slots: void playlistInterfaceChanged( Tomahawk::playlistinterface_ptr ); - // called by the playlist creation dbcmds - void createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ); - void createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ); - void setTomahawkLoaded(); private slots: diff --git a/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp b/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp index b64c45b5f0..7f90cd9d77 100644 --- a/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp +++ b/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp @@ -24,7 +24,7 @@ #include "playlist/dynamic/DynamicControl.h" #include "playlist/dynamic/GeneratorInterface.h" -#include "Source.h" +#include "SourceList.h" #include "network/Servent.h" #include "utils/Logger.h" @@ -113,11 +113,11 @@ DatabaseCommand_CreateDynamicPlaylist::postCommitHook() qDebug() << Q_FUNC_INFO << "..reporting.."; if( m_playlist.isNull() ) { - source_ptr src = source(); - - Tomahawk::dynplaylist_ptr p = Tomahawk::dynplaylist_ptr( new Tomahawk::DynamicPlaylist( src, m_v.toMap().value( "type", QString() ).toString() ) ); - QJson::QObjectHelper::qvariant2qobject( m_v.toMap(), p.data() ); - p->reportCreated( p ); + QMetaObject::invokeMethod( SourceList::instance(), + "createDynamicPlaylist", + Qt::BlockingQueuedConnection, + QGenericArgument( "Tomahawk::source_ptr", (const void*)&source() ), + Q_ARG( QVariant, m_v ) ); } else { diff --git a/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp b/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp index f2e2ce771d..c6a545c27e 100644 --- a/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp +++ b/src/libtomahawk/database/DatabaseCommand_CreatePlaylist.cpp @@ -20,16 +20,12 @@ #include -#include "Source.h" +#include "SourceList.h" #include "DatabaseImpl.h" #include "TomahawkSqlQuery.h" #include "network/Servent.h" #include "utils/Logger.h" -#ifndef ENABLE_HEADLESS - #include "ViewManager.h" -#endif - using namespace Tomahawk; @@ -81,11 +77,11 @@ DatabaseCommand_CreatePlaylist::postCommitHook() tDebug() << Q_FUNC_INFO << "reporting..."; if ( m_playlist.isNull() ) { - source_ptr src = source(); - - Tomahawk::playlist_ptr p = Tomahawk::playlist_ptr( new Tomahawk::Playlist( src ) ); - QJson::QObjectHelper::qvariant2qobject( m_v.toMap(), p.data() ); - p->reportCreated( p ); + QMetaObject::invokeMethod( SourceList::instance(), + "createPlaylist", + Qt::BlockingQueuedConnection, + QGenericArgument( "Tomahawk::source_ptr", (const void*)&source() ), + Q_ARG( QVariant, m_v ) ); } else { From f7d430d77c2fb565c6b456a80e789d4c58948bca Mon Sep 17 00:00:00 2001 From: Lucas Lira Gomes Date: Wed, 26 Sep 2012 13:20:40 -0300 Subject: [PATCH 255/310] * Install headers for libtomahawk --- src/libtomahawk/CMakeLists.txt | 60 ++++++++++++++++++++++++++++++++++ src/libtomahawk/Config.h.in | 29 ++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 src/libtomahawk/Config.h.in diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 2d03013edc..aa1d69ca74 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -472,3 +472,63 @@ INSTALL( TARGETS tomahawklib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) + +# Install header files +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/config.h) + +file( GLOB rootHeaders "*.h" ) +file( GLOB accountsHeaders "accounts/*.h" ) +file( GLOB accountsLastfmHeaders "accounts/lastfm/*.h" ) +file( GLOB accountsSpotifyHeaders "accounts/spotify/*.h" ) +file( GLOB audioHeaders "audio/*.h" ) +file( GLOB contextHeaders "context/*.h" ) +file( GLOB contextPagesHeaders "context/pages/*.h" ) +file( GLOB databaseHeaders "database/*.h" ) +file( GLOB filemetadataHeaders "filemetadata/*.h" ) +file( GLOB filemetadataTaghandlersHeaders "filemetadata/taghandlers/*.h" ) +file( GLOB infobarHeaders "infobar/*.h" ) +file( GLOB infosystemHeaders "infosystem/*.h" ) +file( GLOB jobviewHeaders "jobview/*.h" ) +file( GLOB networkHeaders "network/*.h" ) +file( GLOB playlistHeaders "playlist/*.h" ) +file( GLOB playlistDynamicHeaders "playlist/dynamic/*.h" ) +file( GLOB playlistDynamicDatabaseHeaders "playlist/dynamic/database/*.h" ) +file( GLOB playlistDynamicEchonestHeaders "playlist/dynamic/echonest/*.h" ) +file( GLOB playlistDynamicWidgetsHeaders "playlist/dynamic/widgets/*.h" ) +file( GLOB resolversHeaders "resolvers/*.h" ) +file( GLOB sipHeaders "sip/*.h" ) +file( GLOB thirdpartyKdsingleapplicationguardHeaders "thirdparty/kdsingleapplicationguard/*.h" ) +file( GLOB thirdpartyQocoaHeaders "thirdparty/Qocoa/*.h" ) +file( GLOB utilsHeaders "utils/*.h" ) +file( GLOB widgetsHeaders "widgets/*.h" ) +file( GLOB widgetsInfowidgetsHeaders "widgets/infowidgets/*.h" ) +file( GLOB widgetsSearchlineeditHeaders "widgets/searchlineedit/*.h" ) + +install( FILES ${rootHeaders} DESTINATION include/libtomahawk ) +install( FILES ${accountsHeaders} DESTINATION include/libtomahawk/accounts ) +install( FILES ${accountsLastfmHeaders} DESTINATION include/libtomahawk/accounts/lastfm ) +install( FILES ${accountsSpotifyHeaders} DESTINATION include/libtomahawk/accounts/spotify ) +install( FILES ${audioHeaders} DESTINATION include/libtomahawk/audio ) +install( FILES ${contextHeaders} DESTINATION include/libtomahawk/context ) +install( FILES ${contextPagesHeaders} DESTINATION include/libtomahawk/context/pages ) +install( FILES ${databaseHeaders} DESTINATION include/libtomahawk/database ) +install( FILES ${filemetadataHeaders} DESTINATION include/libtomahawk/filemetadata ) +install( FILES ${filemetadataTaghandlersHeaders} DESTINATION include/libtomahawk/filemetadata/taghandlers ) +install( FILES ${infobarHeaders} DESTINATION include/libtomahawk/infobar ) +install( FILES ${infosystemHeaders} DESTINATION include/libtomahawk/infosystem ) +install( FILES ${jobviewHeaders} DESTINATION include/libtomahawk/jobview ) +install( FILES ${networkHeaders} DESTINATION include/libtomahawk/network ) +install( FILES ${playlistHeaders} DESTINATION include/libtomahawk/playlist ) +install( FILES ${playlistDynamicHeaders} DESTINATION include/libtomahawk/playlist/dynamic ) +install( FILES ${playlistDynamicDatabaseHeaders} DESTINATION include/libtomahawk/playlist/dynamic/database ) +install( FILES ${playlistDynamicEchonestHeaders} DESTINATION include/libtomahawk/playlist/dynamic/echonest ) +install( FILES ${playlistDynamicWidgetsHeaders} DESTINATION include/libtomahawk/playlist/dynamic/widgets ) +install( FILES ${resolversHeaders} DESTINATION include/libtomahawk/resolvers ) +install( FILES ${sipHeaders} DESTINATION include/libtomahawk/sip ) +install( FILES ${thirdpartyKdsingleapplicationguardHeaders} DESTINATION include/libtomahawk/thirdparty/kdsingleapplicationguard ) +install( FILES ${thirdpartyQocoaHeaders} DESTINATION include/libtomahawk/thirdparty/Qocoa ) +install( FILES ${utilsHeaders} DESTINATION include/libtomahawk/utils ) +install( FILES ${widgetsHeaders} DESTINATION include/libtomahawk/widgets ) +install( FILES ${widgetsInfowidgetsHeaders} DESTINATION include/libtomahawk/widgets/infowidgets ) +install( FILES ${widgetsSearchlineeditHeaders} DESTINATION include/libtomahawk/widgets/searchlineedit ) diff --git a/src/libtomahawk/Config.h.in b/src/libtomahawk/Config.h.in new file mode 100644 index 0000000000..1b1eb4af30 --- /dev/null +++ b/src/libtomahawk/Config.h.in @@ -0,0 +1,29 @@ +#ifndef CONFIG_H_IN +#define CONFIG_H_IN + +#cmakedefine TOMAHAWK_ORGANIZATION_NAME "${TOMAHAWK_ORGANIZATION_NAME}" +#cmakedefine TOMAHAWK_ORGANIZATION_DOMAIN "${TOMAHAWK_ORGANIZATION_DOMAIN}" +#cmakedefine TOMAHAWK_APPLICATION_NAME "${TOMAHAWK_APPLICATION_NAME}" +#cmakedefine TOMAHAWK_VERSION "${TOMAHAWK_VERSION}" + +#cmakedefine DEBUG_BUILD + +#define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" +#define CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}" +#define CMAKE_SYSTEM "${CMAKE_SYSTEM}" + +#cmakedefine LION +#cmakedefine SNOW_LEOPARD +#cmakedefine LEOPARD +#cmakedefine HAVE_SPARKLE +#cmakedefine HAVE_THUMBBUTTON + +#cmakedefine WITH_BREAKPAD +#cmakedefine WITH_CRASHREPORTER +#cmakedefine WITH_BINARY_ATTICA + + +#cmakedefine LIBLASTFM_FOUND +#cmakedefine QCA2_FOUND + +#endif // CONFIG_H_IN From 6eec99e5c7928bfbf1b9d3b57fb92b1b223cd2eb Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 00:42:46 +0100 Subject: [PATCH 256/310] Add now missing Logger.h include in PeerInfo.cpp --- src/libtomahawk/sip/PeerInfo.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index 27355f69ed..4646eb35d1 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -22,6 +22,7 @@ #include "utils/TomahawkUtilsGui.h" #include "network/ControlConnection.h" #include "network/Servent.h" +#include "utils/Logger.h" #include #include From 034515cc7ef4d706d4a0efa654cdf74f8a974896 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 00:55:06 +0100 Subject: [PATCH 257/310] Show audio engine error on console even for headless builds --- src/TomahawkWindow.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 231b303fc4..21219459a2 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -959,13 +959,16 @@ TomahawkWindow::onXSPFError( XSPFLoader::XSPFErrorCode error ) void TomahawkWindow::onAudioEngineError( AudioEngine::AudioErrorCode /* error */ ) { -#ifndef ENABLE_HEADLESS QString msg; #ifdef Q_WS_X11 msg = tr( "Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed." ); #else msg = tr( "Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped." ); #endif + + tLog() << msg; + +#ifndef ENABLE_HEADLESS JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( msg, 15 ) ); #endif From 705b5c9e47cabf344fff20e7d54934b921415d09 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 00:59:28 +0100 Subject: [PATCH 258/310] Clean up CMake for optional liblastfm --- src/libtomahawk/CMakeLists.txt | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index aa1d69ca74..b37f972bc0 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -318,10 +318,12 @@ list(APPEND libSources ) IF(LIBLASTFM_FOUND) - set( libSources ${libSources} - accounts/lastfm/LastFmAccount.cpp - accounts/lastfm/LastFmConfig.cpp - accounts/lastfm/LastFmInfoPlugin.cpp + include_directories( ${LIBLASTFM_INCLUDE_DIRS} ) + list(APPEND LINK_LIBRARIES ${LIBLASTFM_LIBRARIES} ) + list(APPEND libSources + accounts/lastfm/LastFmAccount.cpp + accounts/lastfm/LastFmConfig.cpp + accounts/lastfm/LastFmInfoPlugin.cpp ) ENDIF(LIBLASTFM_FOUND) @@ -353,7 +355,6 @@ include_directories( ${QT_INCLUDE_DIR} ${QJSON_INCLUDE_DIR} ${ECHONEST_INCLUDE_DIR} - ${LIBLASTFM_INCLUDE_DIRS} ${CLUCENE_INCLUDE_DIRS} ${PHONON_INCLUDES} @@ -419,10 +420,6 @@ ELSE( APPLE ) SET( libGuiSources ${libGuiSources} thirdparty/Qocoa/qbutton.cpp thirdparty/Qocoa/qsearchfield.cpp thirdparty/Qocoa/qtoolbartabdialog.cpp ) ENDIF( APPLE ) -IF(LIBLASTFM_FOUND) - LIST(APPEND LINK_LIBRARIES ${LIBLASTFM_LIBRARIES} ) -ENDIF(LIBLASTFM_FOUND) - IF(BUILD_GUI) LIST(APPEND libSources ${libGuiSources} ) ENDIF() From 5298401f171ed5cabe5fa4566f7e8f94bf640e02 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 01:27:29 +0100 Subject: [PATCH 259/310] Remove copy of Config.h.in from libtomahawk/ and install config.h from build dir --- src/libtomahawk/CMakeLists.txt | 4 +--- src/libtomahawk/Config.h.in | 29 ----------------------------- 2 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 src/libtomahawk/Config.h.in diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index b37f972bc0..2d84d596d3 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -471,9 +471,6 @@ INSTALL( TARGETS tomahawklib ) # Install header files -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.h.in - ${CMAKE_CURRENT_SOURCE_DIR}/config.h) - file( GLOB rootHeaders "*.h" ) file( GLOB accountsHeaders "accounts/*.h" ) file( GLOB accountsLastfmHeaders "accounts/lastfm/*.h" ) @@ -502,6 +499,7 @@ file( GLOB widgetsHeaders "widgets/*.h" ) file( GLOB widgetsInfowidgetsHeaders "widgets/infowidgets/*.h" ) file( GLOB widgetsSearchlineeditHeaders "widgets/searchlineedit/*.h" ) +install( FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h DESTINATION include/libtomahawk ) install( FILES ${rootHeaders} DESTINATION include/libtomahawk ) install( FILES ${accountsHeaders} DESTINATION include/libtomahawk/accounts ) install( FILES ${accountsLastfmHeaders} DESTINATION include/libtomahawk/accounts/lastfm ) diff --git a/src/libtomahawk/Config.h.in b/src/libtomahawk/Config.h.in deleted file mode 100644 index 1b1eb4af30..0000000000 --- a/src/libtomahawk/Config.h.in +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef CONFIG_H_IN -#define CONFIG_H_IN - -#cmakedefine TOMAHAWK_ORGANIZATION_NAME "${TOMAHAWK_ORGANIZATION_NAME}" -#cmakedefine TOMAHAWK_ORGANIZATION_DOMAIN "${TOMAHAWK_ORGANIZATION_DOMAIN}" -#cmakedefine TOMAHAWK_APPLICATION_NAME "${TOMAHAWK_APPLICATION_NAME}" -#cmakedefine TOMAHAWK_VERSION "${TOMAHAWK_VERSION}" - -#cmakedefine DEBUG_BUILD - -#define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" -#define CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}" -#define CMAKE_SYSTEM "${CMAKE_SYSTEM}" - -#cmakedefine LION -#cmakedefine SNOW_LEOPARD -#cmakedefine LEOPARD -#cmakedefine HAVE_SPARKLE -#cmakedefine HAVE_THUMBBUTTON - -#cmakedefine WITH_BREAKPAD -#cmakedefine WITH_CRASHREPORTER -#cmakedefine WITH_BINARY_ATTICA - - -#cmakedefine LIBLASTFM_FOUND -#cmakedefine QCA2_FOUND - -#endif // CONFIG_H_IN From e8af9d4c1f1a966f1f0a12df8a7d40d5ff4228a9 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 14:59:57 +0100 Subject: [PATCH 260/310] Rename add_tomahawk_plugin macro to tomahawk_add_plugin --- .../{AddTomahawkPlugin.cmake => TomahawkAddPlugin.cmake} | 4 ++-- src/accounts/CMakeLists.txt | 2 +- src/accounts/twitter/CMakeLists.txt | 2 +- src/accounts/xmpp/CMakeLists.txt | 2 +- src/accounts/xmpp/googlewrapper/CMakeLists.txt | 2 +- src/accounts/zeroconf/CMakeLists.txt | 2 +- src/infoplugins/generic/CMakeLists.txt | 2 +- src/infoplugins/linux/CMakeLists.txt | 4 ++-- src/infoplugins/mac/CMakeLists.txt | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) rename CMakeModules/{AddTomahawkPlugin.cmake => TomahawkAddPlugin.cmake} (97%) diff --git a/CMakeModules/AddTomahawkPlugin.cmake b/CMakeModules/TomahawkAddPlugin.cmake similarity index 97% rename from CMakeModules/AddTomahawkPlugin.cmake rename to CMakeModules/TomahawkAddPlugin.cmake index 5afcada9a9..33c0018ca6 100644 --- a/CMakeModules/AddTomahawkPlugin.cmake +++ b/CMakeModules/TomahawkAddPlugin.cmake @@ -38,7 +38,7 @@ MACRO(CDR var junk) ENDMACRO(CDR) -macro(add_tomahawk_plugin) +macro(tomahawk_add_plugin) parse_arguments(PLUGIN "SOURCES;UI;LINK_LIBRARIES;TYPE;EXPORT_MACRO;COMPILE_DEFINITIONS" "NO_INSTALL;SHARED_LIB" @@ -93,7 +93,7 @@ macro(add_tomahawk_plugin) endif() # add link targets - target_link_libraries(${target} tomahawklib) + target_link_libraries(${target} ${TOMAHAWK_LIBRARIES}) if(PLUGIN_LINK_LIBRARIES) target_link_libraries(${target} ${PLUGIN_LINK_LIBRARIES}) endif() diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index 76552a5c27..be884d9691 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -1,4 +1,4 @@ -include(AddTomahawkPlugin) +include(TomahawkAddPlugin) IF( JREEN_FOUND ) add_subdirectory( xmpp ) diff --git a/src/accounts/twitter/CMakeLists.txt b/src/accounts/twitter/CMakeLists.txt index 558054b0a7..a6d83984fc 100644 --- a/src/accounts/twitter/CMakeLists.txt +++ b/src/accounts/twitter/CMakeLists.txt @@ -1,7 +1,7 @@ include_directories(${QTWEETLIB_INCLUDE_DIR}) -add_tomahawk_plugin(twitter +tomahawk_add_plugin(twitter TYPE account EXPORT_MACRO ACCOUNTDLLEXPORT_PRO SOURCES diff --git a/src/accounts/xmpp/CMakeLists.txt b/src/accounts/xmpp/CMakeLists.txt index af2e67b161..eaadcc329d 100644 --- a/src/accounts/xmpp/CMakeLists.txt +++ b/src/accounts/xmpp/CMakeLists.txt @@ -1,6 +1,6 @@ include_directories(${JREEN_INCLUDE_DIR}) -add_tomahawk_plugin(xmpp +tomahawk_add_plugin(xmpp TYPE account EXPORT_MACRO ACCOUNTDLLEXPORT_PRO SOURCES diff --git a/src/accounts/xmpp/googlewrapper/CMakeLists.txt b/src/accounts/xmpp/googlewrapper/CMakeLists.txt index 973b705145..45318c526e 100644 --- a/src/accounts/xmpp/googlewrapper/CMakeLists.txt +++ b/src/accounts/xmpp/googlewrapper/CMakeLists.txt @@ -1,6 +1,6 @@ include_directories( ${JREEN_INCLUDE_DIR} ) -add_tomahawk_plugin(google +tomahawk_add_plugin(google TYPE account EXPORT_MACRO ACCOUNTDLLEXPORT_PRO SOURCES diff --git a/src/accounts/zeroconf/CMakeLists.txt b/src/accounts/zeroconf/CMakeLists.txt index a41333c552..34dcc55835 100644 --- a/src/accounts/zeroconf/CMakeLists.txt +++ b/src/accounts/zeroconf/CMakeLists.txt @@ -1,5 +1,5 @@ -add_tomahawk_plugin(zeroconf +tomahawk_add_plugin(zeroconf TYPE account EXPORT_MACRO ACCOUNTDLLEXPORT_PRO SOURCES diff --git a/src/infoplugins/generic/CMakeLists.txt b/src/infoplugins/generic/CMakeLists.txt index 60e9816872..442bdf8865 100644 --- a/src/infoplugins/generic/CMakeLists.txt +++ b/src/infoplugins/generic/CMakeLists.txt @@ -14,7 +14,7 @@ list(APPEND simple_plugins foreach(simple_plugin ${simple_plugins}) STRING(TOLOWER "${simple_plugin}" dir) - add_tomahawk_plugin(${dir} + tomahawk_add_plugin(${dir} TYPE infoplugin EXPORT_MACRO INFOPLUGINDLLEXPORT_PRO SOURCES "${dir}/${simple_plugin}Plugin.cpp" ) diff --git a/src/infoplugins/linux/CMakeLists.txt b/src/infoplugins/linux/CMakeLists.txt index c8d5591606..6c23ef9806 100644 --- a/src/infoplugins/linux/CMakeLists.txt +++ b/src/infoplugins/linux/CMakeLists.txt @@ -10,7 +10,7 @@ if(NOT Qt5Core_DIR) ) SET(FDO_LINK_LIBRARIES ${LINK_LIBRARIES} ${X11_LIBRARIES}) - add_tomahawk_plugin(fdonotify + tomahawk_add_plugin(fdonotify TYPE infoplugin EXPORT_MACRO INFOPLUGINDLLEXPORT_PRO SOURCES "${fdo_srcs}" LINK_LIBRARIES "${FDO_LINK_LIBRARIES}" ) @@ -24,7 +24,7 @@ SET(mpris_srcs mpris/MprisPlugin.cpp ) -add_tomahawk_plugin(mpris +tomahawk_add_plugin(mpris TYPE infoplugin EXPORT_MACRO INFOPLUGINDLLEXPORT_PRO SOURCES "${mpris_srcs}" ) diff --git a/src/infoplugins/mac/CMakeLists.txt b/src/infoplugins/mac/CMakeLists.txt index 8f75a22a92..764afb7009 100644 --- a/src/infoplugins/mac/CMakeLists.txt +++ b/src/infoplugins/mac/CMakeLists.txt @@ -4,7 +4,7 @@ set(adium_srcs ) -add_tomahawk_plugin(adium +tomahawk_add_plugin(adium TYPE infoplugin EXPORT_MACRO INFOPLUGINDLLEXPORT_PRO SOURCES "${adium_srcs}" ) From 8a43c70e54cb22ece6083563c5a988d924153a07 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 15:00:49 +0100 Subject: [PATCH 261/310] Move AccountDllMacro to libtomahawk so it can be used by external plugins --- src/accounts/zeroconf/Zeroconf.h | 2 +- src/accounts/zeroconf/ZeroconfAccount.h | 2 +- src/{ => libtomahawk}/accounts/AccountDllMacro.h | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/{ => libtomahawk}/accounts/AccountDllMacro.h (100%) diff --git a/src/accounts/zeroconf/Zeroconf.h b/src/accounts/zeroconf/Zeroconf.h index 5c79c89b57..d6803f8f4c 100644 --- a/src/accounts/zeroconf/Zeroconf.h +++ b/src/accounts/zeroconf/Zeroconf.h @@ -24,7 +24,7 @@ #include "accounts/Account.h" #include "TomahawkZeroconf.h" -#include "../AccountDllMacro.h" +#include "accounts/AccountDllMacro.h" #include diff --git a/src/accounts/zeroconf/ZeroconfAccount.h b/src/accounts/zeroconf/ZeroconfAccount.h index 644e1cc3f4..a223ce2753 100644 --- a/src/accounts/zeroconf/ZeroconfAccount.h +++ b/src/accounts/zeroconf/ZeroconfAccount.h @@ -21,7 +21,7 @@ #include "Zeroconf.h" #include "accounts/Account.h" -#include "../AccountDllMacro.h" +#include "accounts/AccountDllMacro.h" class SipPlugin; diff --git a/src/accounts/AccountDllMacro.h b/src/libtomahawk/accounts/AccountDllMacro.h similarity index 100% rename from src/accounts/AccountDllMacro.h rename to src/libtomahawk/accounts/AccountDllMacro.h From f128055e0bf91ec21348383baacdf289d9f1d66d Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 15:02:01 +0100 Subject: [PATCH 262/310] Install CMake files for usage in external plugins --- src/libtomahawk/CMakeLists.txt | 11 ++++++++++ src/libtomahawk/TomahawkConfig.cmake | 13 ++++++++++++ src/libtomahawk/TomahawkUse.cmake | 30 ++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 src/libtomahawk/TomahawkConfig.cmake create mode 100644 src/libtomahawk/TomahawkUse.cmake diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 2d84d596d3..8a578d44f6 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -470,6 +470,17 @@ INSTALL( TARGETS tomahawklib ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +# Install cmake config +install( FILES + TomahawkConfig.cmake + TomahawkUse.cmake + ${CMAKE_SOURCE_DIR}/CMakeModules/TomahawkAddPlugin.cmake + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/Tomahawk +) + + + # Install header files file( GLOB rootHeaders "*.h" ) file( GLOB accountsHeaders "accounts/*.h" ) diff --git a/src/libtomahawk/TomahawkConfig.cmake b/src/libtomahawk/TomahawkConfig.cmake new file mode 100644 index 0000000000..184319bb95 --- /dev/null +++ b/src/libtomahawk/TomahawkConfig.cmake @@ -0,0 +1,13 @@ + +get_filename_component(Tomahawk_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +set( TOMAHAWK_USE_FILE "${Tomahawk_CMAKE_DIR}/TomahawkUse.cmake") +set( TOMAHAWK_INCLUDE_DIRS "${Tomahawk_CMAKE_DIR}/../../../include/libtomahawk" ) + +# this is not how you do it but proper exporting of targets causes weird issues with cross-compiling for me +#TODO: we can easily write the install dir on configuration of this file +find_library(TOMAHAWK_LIBRARY "tomahawklib" + PATHS + "${Tomahawk_CMAKE_DIR}/../../../lib/" + "${Tomahawk_CMAKE_DIR}/../../../lib64/" +) +set( TOMAHAWK_LIBRARIES "${TOMAHAWK_LIBRARY}" ) \ No newline at end of file diff --git a/src/libtomahawk/TomahawkUse.cmake b/src/libtomahawk/TomahawkUse.cmake new file mode 100644 index 0000000000..0b28154294 --- /dev/null +++ b/src/libtomahawk/TomahawkUse.cmake @@ -0,0 +1,30 @@ +#FIXME: this only handles qt4 and duplicates top level cmakelists: how can we reduce code duplication? + +find_package(Qt4 COMPONENTS QtNetwork QtCore QtGui QtSql REQUIRED) +include( ${QT_USE_FILE} ) + +set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork") +if(BUILD_GUI) + list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" "QtSvg") +endif() + +find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS}) +include( ${QT_USE_FILE} ) + +macro(qt5_use_modules) +endmacro() + +macro(qt_wrap_ui) + qt4_wrap_ui(${ARGN}) +endmacro() + +macro(qt_add_resources) + qt4_add_resources(${ARGN}) +endmacro() + +macro(qt_add_translation) + qt4_add_translation(${ARGN}) +endmacro() + + +include( "${Tomahawk_CMAKE_DIR}/TomahawkAddPlugin.cmake" ) \ No newline at end of file From f2b9619dadbcf9c2029be9c0719547573c107a57 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Tue, 15 Jan 2013 17:40:28 -0500 Subject: [PATCH 263/310] Don't crash if Query::get returns an invalid query --- src/libtomahawk/AlbumPlaylistInterface.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libtomahawk/AlbumPlaylistInterface.cpp b/src/libtomahawk/AlbumPlaylistInterface.cpp index aef2aefcdf..2ecfd81752 100644 --- a/src/libtomahawk/AlbumPlaylistInterface.cpp +++ b/src/libtomahawk/AlbumPlaylistInterface.cpp @@ -175,6 +175,9 @@ AlbumPlaylistInterface::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData re foreach ( const QString& trackName, tracks ) { query_ptr query = Query::get( inputInfo[ "artist" ], trackName, inputInfo[ "album" ] ); + if ( query.isNull() ) + continue; + query->setAlbumPos( trackNo++ ); ql << query; } From a692b206a393530e6a0acfc7486afe1a7a694152 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Tue, 15 Jan 2013 23:56:19 +0100 Subject: [PATCH 264/310] Allow plugins to store arbitrary data in PeerInfo --- src/libtomahawk/sip/PeerInfo.cpp | 14 ++++++++++++++ src/libtomahawk/sip/PeerInfo.h | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index 4646eb35d1..2bf3db7d9b 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -326,4 +326,18 @@ PeerInfo::versionString() const } +void +PeerInfo::setData(const QVariant& data) +{ + m_data = data; +} + + +const +QVariant PeerInfo::data() const +{ + return m_data; +} + + } // ns diff --git a/src/libtomahawk/sip/PeerInfo.h b/src/libtomahawk/sip/PeerInfo.h index b2e967b610..d15486229c 100644 --- a/src/libtomahawk/sip/PeerInfo.h +++ b/src/libtomahawk/sip/PeerInfo.h @@ -99,6 +99,10 @@ Q_OBJECT void setVersionString( const QString& versionString ); const QString versionString() const; + // you can store arbitrary internal data for your plugin here + void setData( const QVariant& data ); + const QVariant data() const; + signals: void sipInfoChanged(); @@ -117,6 +121,7 @@ Q_OBJECT SipInfo m_sipInfo; QString m_friendlyName; QString m_versionString; + QVariant m_data; mutable QPixmap* m_avatar; mutable QPixmap* m_fancyAvatar; From 550c10edcc5e1d6773fd0136f0f73adb1076beda Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Tue, 15 Jan 2013 18:49:49 -0500 Subject: [PATCH 265/310] Use JobStatusView error message for script errors --- src/libtomahawk/resolvers/QtScriptResolver.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index 08931a738e..03b734803c 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -27,6 +27,10 @@ #include "network/Servent.h" +#include "jobview/JobStatusView.h" +#include "jobview/JobStatusModel.h" +#include "jobview/ErrorStatusMessage.h" + #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" @@ -215,7 +219,7 @@ ScriptEngine::javaScriptConsoleMessage( const QString& message, int lineNumber, { tLog() << "JAVASCRIPT:" << m_scriptPath << message << lineNumber << sourceID; #ifndef DEBUG_BUILD - QMessageBox::critical( 0, "Script Resolver Error", QString( "%1 %2 %3 %4" ).arg( m_scriptPath ).arg( message ).arg( lineNumber ).arg( sourceID ) ); + JobStatusView::instance()->model()->addJob( new ErrorStatusMessage( tr( "Script Resolver Error: %1 %2 %3 %4" ).arg( m_scriptPath ).arg( message ).arg( lineNumber ).arg( sourceID ) ) ); #endif } From 0a6f2b164a1f73e6a406d7f29f3695d7282b73be Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 16 Jan 2013 01:14:21 +0100 Subject: [PATCH 266/310] Build all folders inside src/accounts/ --- src/accounts/CMakeLists.txt | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index be884d9691..60e1916b6f 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -1,11 +1,19 @@ include(TomahawkAddPlugin) -IF( JREEN_FOUND ) - add_subdirectory( xmpp ) -ENDIF() - -# IF( QTWEETLIB_FOUND AND BUILD_GUI ) -# ADD_SUBDIRECTORY( twitter ) -# ENDIF() -# -ADD_SUBDIRECTORY( zeroconf ) +file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") +foreach( SUBDIRECTORY ${SUBDIRECTORIES}) + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}") + message(STATUS "Building account ${SUBDIRECTORY}") + if(SUBDIRECTORY STREQUAL "xmpp") + if( JREEN_FOUND ) + add_subdirectory( xmpp ) + endif() + elseif(SUBDIRECTORY STREQUAL "twitter") + if(QTWEETLIB_FOUND AND BUILD_GUI) +# add_subdirectory( twitter ) + endif() + else() + add_subdirectory( ${SUBDIRECTORY} ) + endif() + endif() +endforeach() From 438cb1b39ba2130ef7b732c5a33e54faf8f6e7f0 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 16 Jan 2013 01:17:35 +0100 Subject: [PATCH 267/310] You shall not lie. Not even in CMake. --- src/accounts/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index 60e1916b6f..f25969be9c 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -3,7 +3,6 @@ include(TomahawkAddPlugin) file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") foreach( SUBDIRECTORY ${SUBDIRECTORIES}) if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}") - message(STATUS "Building account ${SUBDIRECTORY}") if(SUBDIRECTORY STREQUAL "xmpp") if( JREEN_FOUND ) add_subdirectory( xmpp ) From f292bb28d99daff23bc6bb1453aadb15db94dbce Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 16 Jan 2013 02:29:56 +0100 Subject: [PATCH 268/310] Don't think two SipInfos are equal just because they are both invalid ... stupid assumptions are stupid --- src/libtomahawk/sip/SipInfo.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/libtomahawk/sip/SipInfo.cpp b/src/libtomahawk/sip/SipInfo.cpp index 4d461fb221..064e198dfc 100644 --- a/src/libtomahawk/sip/SipInfo.cpp +++ b/src/libtomahawk/sip/SipInfo.cpp @@ -253,11 +253,7 @@ operator<< ( QDebug dbg, const SipInfo& info ) bool operator==( const SipInfo& one, const SipInfo& two ) { // check valid/invalid combinations first, so we don't try to access any invalid sipInfos (->assert) - if ( !one.isValid() && !two.isValid() ) - { - return true; - } - else if ( ( one.isValid() && !two.isValid() ) || ( !one.isValid() && two.isValid() ) ) + if ( ( one.isValid() && !two.isValid() ) || ( !one.isValid() && two.isValid() ) ) { return false; } From 97a675dbf58ca9738905f21972df24eef1410166 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 16 Jan 2013 02:30:10 +0100 Subject: [PATCH 269/310] Add debug helper method to SipInfo --- src/libtomahawk/sip/SipInfo.cpp | 12 ++++++++++++ src/libtomahawk/sip/SipInfo.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/libtomahawk/sip/SipInfo.cpp b/src/libtomahawk/sip/SipInfo.cpp index 064e198dfc..13cc40474c 100644 --- a/src/libtomahawk/sip/SipInfo.cpp +++ b/src/libtomahawk/sip/SipInfo.cpp @@ -272,3 +272,15 @@ bool operator==( const SipInfo& one, const SipInfo& two ) return false; } +const QString +SipInfo::debugString() const +{ + QString debugString( "SIP INFO: visible: %1 host: host %2 port: %3 nodeid: %4 key: %5" ); + return debugString.arg( d->visible.toBool() ) + .arg( d->host ) + .arg( d->port ) + .arg( d->uniqname ) + .arg( d->key ); + +} + diff --git a/src/libtomahawk/sip/SipInfo.h b/src/libtomahawk/sip/SipInfo.h index 3fab26f7ec..b10e50d33d 100644 --- a/src/libtomahawk/sip/SipInfo.h +++ b/src/libtomahawk/sip/SipInfo.h @@ -58,6 +58,8 @@ Q_OBJECT const QString toJson() const; static const SipInfo fromJson( QString json ); + const QString debugString() const; + private: QSharedDataPointer d; }; From 2d94ece5c21f7b6061aeee1ec45e3921258ef558 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Wed, 16 Jan 2013 03:25:36 +0100 Subject: [PATCH 270/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 88 ++++++++++++++----------- lang/tomahawk_bg.ts | 88 ++++++++++++++----------- lang/tomahawk_bn_IN.ts | 88 ++++++++++++++----------- lang/tomahawk_ca.ts | 88 ++++++++++++++----------- lang/tomahawk_cs.ts | 88 ++++++++++++++----------- lang/tomahawk_da.ts | 88 ++++++++++++++----------- lang/tomahawk_de.ts | 88 ++++++++++++++----------- lang/tomahawk_el.ts | 88 ++++++++++++++----------- lang/tomahawk_en.ts | 88 ++++++++++++++----------- lang/tomahawk_es.ts | 88 ++++++++++++++----------- lang/tomahawk_fi.ts | 88 ++++++++++++++----------- lang/tomahawk_fr.ts | 88 ++++++++++++++----------- lang/tomahawk_gl.ts | 100 +++++++++++++++------------- lang/tomahawk_hi_IN.ts | 88 ++++++++++++++----------- lang/tomahawk_hu.ts | 88 ++++++++++++++----------- lang/tomahawk_it.ts | 88 ++++++++++++++----------- lang/tomahawk_ja.ts | 88 ++++++++++++++----------- lang/tomahawk_lt.ts | 88 ++++++++++++++----------- lang/tomahawk_pl.ts | 88 ++++++++++++++----------- lang/tomahawk_pt_BR.ts | 88 ++++++++++++++----------- lang/tomahawk_ru.ts | 88 ++++++++++++++----------- lang/tomahawk_sv.ts | 146 +++++++++++++++++++++++------------------ lang/tomahawk_tr.ts | 88 ++++++++++++++----------- lang/tomahawk_zh_CN.ts | 88 ++++++++++++++----------- lang/tomahawk_zh_TW.ts | 88 ++++++++++++++----------- 25 files changed, 1239 insertions(+), 1031 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 6ed5decdb9..00a599c449 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -364,17 +364,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 نعتذر، لم نستطيع إيجاد الأغنية '%1' ل%2 - + Sorry, Tomahawk couldn't find the artist '%1' نعتذر، لم نستطيع إيجاد الفنان '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 نعتذر، لم نستطيع إيجاد الألبوم '%1' ل%2 @@ -716,7 +716,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 يستمع معك! @@ -1381,6 +1381,14 @@ connect and stream from you? فشل في تحميل: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2050,12 +2058,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required مطلوب تثبيت يدوي - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 لسوء الحظ، التثبيت التلقائي لهذا المحلل لم يتوفر بعد على منصتك. <br /><br /> الرجاء إستخدام " التثبيت من الملف" أعلاه، بواسطة جلبه من توزيعتك أو تجميعه بنفسك. ويمكن الاطلاع على مزيد من التعليمات هنا: <br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2181,47 +2189,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify مزامنة مع سبوتيفي (Spotify) - + Re-enable syncing with Spotify إعادة تمكين المزامنة مع سبوتيفي (Spotify) - + Create local copy إنشاء نسخة محلية - + Subscribe to playlist changes الاشتراك في تغييرات قائمة الأغاني - + Re-enable playlist subscription إعادة تمكين الإشتراك في تغييرات قائمة الأغاني - + Stop subscribing to changes توقيف الإشتراك في التغييرات - + Enable Spotify collaborations تمكين التعاون الخاص بسبوتيفي (Collaborations Spotify) - + Disable Spotify collaborations تعطيل التعاون الخاص بسبوتيفي (Collaborations Spotify) - + Stop syncing with Spotify أوقف المزامنة مع سبوتيفي (Spotify) @@ -2994,7 +3002,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! مشكلة في جلب معلومات "Grooveshark" من الشبكة! @@ -3082,7 +3090,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! مشكلة في جلب معلومات "iTunes" من الشبكة! @@ -3184,7 +3192,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! مشكلة في جلب معلومات "Rdio" من الشبكة! @@ -3192,7 +3200,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! خطأ شبكة في تحليل تقصير الرابط! @@ -3252,7 +3260,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! مشكلة في جلب معلومات "Spotify" من الشبكة! @@ -3374,13 +3382,13 @@ enter the displayed PIN number here: - + Hide Menu Bar إخفي شريط القائمة - + Show Menu Bar أظهر شريط القائمة @@ -3425,84 +3433,84 @@ enter the displayed PIN number here: عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك @@ -3564,13 +3572,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend من - + to streaming artist - track to friend إلى diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 35ee08073d..70d1d16ba7 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Съжалявам. Не успявам да открия изпълнение '%1' от '%2' - + Sorry, Tomahawk couldn't find the artist '%1' Съжалявам, но не откривам '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Съжалявам, но не откривам албум с име '%1' от '%2' @@ -721,7 +721,7 @@ Tomahawk създаде доклад относно това и изпращай LatchedStatusItem - + %1 is listening along with you! %1 слуша заедно с теб! @@ -1388,6 +1388,14 @@ Tomahawk създаде доклад относно това и изпращай Не мога да заредя %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2060,12 +2068,12 @@ Tomahawk създаде доклад относно това и изпращай Tomahawk::Accounts::AccountModel - + Manual Install Required Изисква се ръчно инсталиране - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 За съжаление, автоматичното инсталиране на този компонен е деактивирано за твоята платформа. <br /><br /> @@ -2194,47 +2202,47 @@ Tomahawk създаде доклад относно това и изпращай Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Синхронизирай със Spotify - + Re-enable syncing with Spotify Включи отново синхронизирането със Spotify - + Create local copy Създай локално копие - + Subscribe to playlist changes Получавай актуализации за промяната на списъкът - + Re-enable playlist subscription Поднови получаването на промените на списъкът - + Stop subscribing to changes Спри да получаването на на промени в списъкът - + Enable Spotify collaborations Активирай връзката с Spotify - + Disable Spotify collaborations Деактивирай връзката с Spotify - + Stop syncing with Spotify Спри синхронизацията със Spotify @@ -3008,7 +3016,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Грешка при извличане на информацията от Grooveshark @@ -3096,7 +3104,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Грешка при извличане на информация от iTunes @@ -3198,7 +3206,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Грешка при извличане на информация от Rdio @@ -3206,7 +3214,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Мрежова грешка при извличане на съкратеният адрес. @@ -3266,7 +3274,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Грешка при извличане на информация от Spotify @@ -3388,13 +3396,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Скрий лентата с менюто - + Show Menu Bar Покажи лентата с менюто @@ -3442,84 +3450,84 @@ enter the displayed PIN number here: Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Всички права - запазени. 2010 - 2013 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk @@ -3581,13 +3589,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend от - + to streaming artist - track to friend до diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 187fedbcff..4a9181e4a1 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1378,6 +1378,14 @@ connect and stream from you? + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index b95f9e8fd1..94e0b5d21c 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1379,6 +1379,14 @@ connect and stream from you? Fallades a carregar: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2048,12 +2056,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Es requereix una instal·lació manual - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2179,47 +2187,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronitza amb Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Atura la sincronització amb Spotify @@ -2992,7 +3000,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Error en cercar la informació de Grooveshark a través de la xarxa! @@ -3080,7 +3088,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Error en cercar la informació d'iTunes a través de la xarxa! @@ -3182,7 +3190,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Error en cercar la informació de Rdio a través de la xarxa! @@ -3190,7 +3198,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Error de la xarxa en analitzar l'enllaç escurçat! @@ -3250,7 +3258,7 @@ Intenteu ajustar els filtres per reproduir noves cançons. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Error en cercar la informació de Spotify a través de la xarxa! @@ -3372,13 +3380,13 @@ introduïu el PIN aquí: - + Hide Menu Bar - + Show Menu Bar @@ -3423,84 +3431,84 @@ introduïu el PIN aquí: Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk @@ -3562,13 +3570,13 @@ introduïu el PIN aquí: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 6624d4e29a..57738be9a3 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -364,17 +364,17 @@ se s vámi spojil? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Promiňte, Tomahawku se nepodařilo najít skladbu '%1' od %2 - + Sorry, Tomahawk couldn't find the artist '%1' Promiňte, Tomahawku se nepodařilo najít umělce '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Promiňte, Tomahawku se nepodařilo najít album '%1' od %2 @@ -716,7 +716,7 @@ se s vámi spojil? LatchedStatusItem - + %1 is listening along with you! %1 poslouchá s vámi! @@ -1380,6 +1380,14 @@ se s vámi spojil? Nepodařilo se nahrát: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2049,12 +2057,12 @@ se s vámi spojil? Tomahawk::Accounts::AccountModel - + Manual Install Required Je potřeba ruční instalace - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Bohužel není instalace tohoto řešitele ve vašem systému možná.<br/><br/>Použijte, prosím, "Instalovat ze souboru" a nainstalujte jej ručněl. Další informace naleznete zde:<br/><br/>http://www.tomahawk-player.org/resolvers/%1 @@ -2180,47 +2188,47 @@ se s vámi spojil? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Seřídit se Spotify - + Re-enable syncing with Spotify Zapnout znovu seřizování se Spotify - + Create local copy Vytvořit místní kopii - + Subscribe to playlist changes Odebírat změny seznamu skladeb - + Re-enable playlist subscription Zapnout znovu odběr seznamu skladeb - + Stop subscribing to changes Zastavit odběr změn - + Enable Spotify collaborations Zapnout spolupráci se Spotify - + Disable Spotify collaborations Vypnout spolupráci se Spotify - + Stop syncing with Spotify Zastavit seřizování se Spotify @@ -2993,7 +3001,7 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Nepodařilo se nahrát data Grooveshark. Chyba při natahování informací ze sítě! @@ -3081,7 +3089,7 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Nepodařilo se nahrát data iTunes. Chyba při natahování informací ze sítě! @@ -3183,7 +3191,7 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Nepodařilo se nahrát data Rdio. Chyba při natahování informací ze sítě! @@ -3191,7 +3199,7 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Nepodařilo se zpracovat zkrácený odkaz (síťová chyba)! @@ -3251,7 +3259,7 @@ Zkuste vyladit filtry pro nové písně. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Nepodařilo se nahrát data Spotify. Chyba při natahování informací ze sítě! @@ -3373,13 +3381,13 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: - + Hide Menu Bar Skrýt pruh s hlavní nabídkou - + Show Menu Bar Ukázat pruh s hlavní nabídkou @@ -3424,84 +3432,84 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. - + Station Stanice - + Create New Station Vytvořit novou stanici - + Name: Název: - + Playlist Seznam skladeb - + Automatic Playlist Automatický seznam skladeb - + Pause Pozastavit - + &Play &Přehrát - + Authentication Error Chyba při ověřování - + Error connecting to SIP: Authentication failed! Chyba spojení se SIP: Potvrzení pravosti se nezdařilo! - + %1 by %2 track, artist name %1 od %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Autorské právo 2010 - 2013 - + Thanks to: Poděkování: - + About Tomahawk O Tomahawku @@ -3563,13 +3571,13 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: TransferStatusItem - + from streaming artist - track from friend od - + to streaming artist - track to friend komu diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts index 25d89d73ed..8db2f03ddc 100644 --- a/lang/tomahawk_da.ts +++ b/lang/tomahawk_da.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1379,6 +1379,14 @@ connect and stream from you? Kunne ikke indlæse: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2048,12 +2056,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2179,47 +2187,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2986,7 +2994,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3074,7 +3082,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3176,7 +3184,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3184,7 +3192,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3244,7 +3252,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3365,13 +3373,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3416,84 +3424,84 @@ enter the displayed PIN number here: - + Station - + Create New Station Lav Ny Station - + Name: Navn: - + Playlist - + Automatic Playlist - + Pause Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3555,13 +3563,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 67de992f4e..c19188b374 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -364,17 +364,17 @@ erlauben sich mit dir zu verbinden? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Sorry, Tomahawk konnte '%1' von %2 nicht finden - + Sorry, Tomahawk couldn't find the artist '%1' Sorry, Tomahawk konnte den Künstler '%1' nicht finden - + Sorry, Tomahawk couldn't find the album '%1' by %2 Sorry, Tomahawk konnte das Album '%1' von %2 nicht finden @@ -716,7 +716,7 @@ erlauben sich mit dir zu verbinden? LatchedStatusItem - + %1 is listening along with you! %1 hört mit dir mit! @@ -1380,6 +1380,14 @@ erlauben sich mit dir zu verbinden? Fehler beim Laden: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2049,12 +2057,12 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::AccountModel - + Manual Install Required Manuelle Installation benötigt - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Leider ist die automatische Installation dieses Resolvers nicht auf deinem System möglich.<br/><br/>Bitte benutze "Installiere Datei" und installiere ihn manuell. Weitere Informationen findest du hier:<br/><br/>http://www.tomahawk-player.org/resolvers/%1 @@ -2180,47 +2188,47 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Mit Spotify synchronisieren - + Re-enable syncing with Spotify Synchronisierung mit Spotify re-aktivieren - + Create local copy Lokale Kopie erstellen - + Subscribe to playlist changes Playlist Änderungen abonnieren - + Re-enable playlist subscription Playlist Abonnement re-aktivieren - + Stop subscribing to changes Abonnement stoppen - + Enable Spotify collaborations Spotify Kollaboration aktivieren - + Disable Spotify collaborations Spotify Kollaboration deaktivieren - + Stop syncing with Spotify Synchronisation beenden @@ -2991,7 +2999,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Konnte Grooveshark-Daten nicht laden! @@ -3079,7 +3087,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Konnte iTunes-Daten nicht laden! @@ -3181,7 +3189,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Konnte Rdio-Daten nicht laden! @@ -3189,7 +3197,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Konnte den Kurzlink nicht auflösen! @@ -3249,7 +3257,7 @@ Versuch die Filter anzupassen für neue Lieder. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Konnte Spotify-Daten nicht laden! @@ -3371,13 +3379,13 @@ Tomahawk auf Twitter's Website authentifiziert hast: - + Hide Menu Bar Menüleiste ausblenden - + Show Menu Bar Menüleiste einblenden @@ -3422,84 +3430,84 @@ Tomahawk auf Twitter's Website authentifiziert hast: Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk @@ -3561,13 +3569,13 @@ Tomahawk auf Twitter's Website authentifiziert hast: TransferStatusItem - + from streaming artist - track from friend von - + to streaming artist - track to friend zu diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 6d37125f4f..b075636b41 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! Ο/Η %1 ακούει μαζί σας! @@ -1379,6 +1379,14 @@ connect and stream from you? Απέτυχε να φορτώσει: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2048,12 +2056,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Απαιτείται Χειροκίνητη Εγκατάσταση - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2179,47 +2187,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Συγχρονισμός με Spotify - + Re-enable syncing with Spotify - + Create local copy Δημιουργία τοπικού αντιγράφου - + Subscribe to playlist changes Εγγραφή σε μεταβολές λίστας αναπαραγωγής - + Re-enable playlist subscription Επανενεργοποίηση εγγραφής στην λίστα αναπαραγωγής - + Stop subscribing to changes Διακοπή εγγραφής σε μεταβολές - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Διακοπή συγχρονισμού με Spotify @@ -2992,7 +3000,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3080,7 +3088,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3190,7 +3198,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3250,7 +3258,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3371,13 +3379,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Απόκρυψη Γραμμής Μενού - + Show Menu Bar @@ -3422,84 +3430,84 @@ enter the displayed PIN number here: Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk @@ -3561,13 +3569,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend από - + to streaming artist - track to friend προς diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 78516cf349..6e76f22549 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -364,17 +364,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -716,7 +716,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 is listening along with you! @@ -1380,6 +1380,14 @@ connect and stream from you? Failed to load: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + Script Resolver Error: %1 %2 %3 %4 + + SearchLineEdit @@ -2052,12 +2060,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2183,47 +2191,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sync with Spotify - + Re-enable syncing with Spotify Re-enable syncing with Spotify - + Create local copy Create local copy - + Subscribe to playlist changes Subscribe to playlist changes - + Re-enable playlist subscription Re-enable playlist subscription - + Stop subscribing to changes Stop subscribing to changes - + Enable Spotify collaborations Enable Spotify collaborations - + Disable Spotify collaborations Disable Spotify collaborations - + Stop syncing with Spotify Stop syncing with Spotify @@ -2996,7 +3004,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Error fetching Grooveshark information from the network! @@ -3084,7 +3092,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Error fetching iTunes information from the network! @@ -3186,7 +3194,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Error fetching Rdio information from the network! @@ -3194,7 +3202,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Network error parsing shortened link! @@ -3254,7 +3262,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Error fetching Spotify information from the network! @@ -3376,13 +3384,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Hide Menu Bar - + Show Menu Bar Show Menu Bar @@ -3427,84 +3435,84 @@ enter the displayed PIN number here: Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk @@ -3566,13 +3574,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend from - + to streaming artist - track to friend to diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 250965efff..4cff1da2d6 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -364,17 +364,17 @@ conectarse a usted y transmitir música? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawk no pudo encontrar la pista '%1' de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawk no pudo encontrar el artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawk no pudo encontrar el álbum '%1' de %2 @@ -716,7 +716,7 @@ conectarse a usted y transmitir música? LatchedStatusItem - + %1 is listening along with you! ¡%1 está escuchando junto a usted! @@ -1380,6 +1380,14 @@ conectarse a usted y transmitir música? Fallo al cargar: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2052,12 +2060,12 @@ y estaciones basadas en sus gustos personales. Tomahawk::Accounts::AccountModel - + Manual Install Required Instalación manual necesaria - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Desafortunadamente, la instalación automática de este servicio no está disponible o está desactivada para su plataforma.<br /><br />Por favor use "Instalar desde archivo", obteniéndolo desde su distribución o compilándolo. Más instrucciones aquí:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2183,47 +2191,47 @@ y estaciones basadas en sus gustos personales. Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizar con Spotify - + Re-enable syncing with Spotify Volver a activar la sincronización con Spotify - + Create local copy Crear copia local - + Subscribe to playlist changes Suscribirse a la lista de reproducción - + Re-enable playlist subscription Activar suscripción a la lista de reproducción - + Stop subscribing to changes Dejar de suscribirse - + Enable Spotify collaborations Activar colaboraciones de Spotify - + Disable Spotify collaborations Desactivar colaboraciones de Spotify - + Stop syncing with Spotify Detener la sincronización con Spotify @@ -2996,7 +3004,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Error al buscar la información de Grooveshark en la red @@ -3084,7 +3092,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Error al buscar la información de iTunes en la red @@ -3186,7 +3194,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Error al buscar la información de Rdio en la red @@ -3194,7 +3202,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Error en la red al analizar el enlace acortado @@ -3254,7 +3262,7 @@ Intente ajustar los filtros para reproducir nuevas canciones. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Error al buscar la información de Spotify en la red @@ -3376,13 +3384,13 @@ introduzca su número PIN aquí: - + Hide Menu Bar Ocultar barra de menús - + Show Menu Bar Mostrar barra de menús @@ -3427,84 +3435,84 @@ introduzca su número PIN aquí: Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Estación - + Create New Station Crear estación nueva - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk @@ -3566,13 +3574,13 @@ introduzca su número PIN aquí: TransferStatusItem - + from streaming artist - track from friend de - + to streaming artist - track to friend para diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 1ce9d73d36..9b65fa120e 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -364,17 +364,17 @@ yhdistää ja toistaa sinulta virtaa? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Valitettavasti Tomahawk ei löytänyt artistin %2 kappaletta ”%1” - + Sorry, Tomahawk couldn't find the artist '%1' Valitettavasti Tomahawk ei löytänyt artistia ”%1” - + Sorry, Tomahawk couldn't find the album '%1' by %2 Valitettavasti Tomahawk ei löytänyt artistin %2 albumia ”%1” @@ -716,7 +716,7 @@ yhdistää ja toistaa sinulta virtaa? LatchedStatusItem - + %1 is listening along with you! %1 kuuntelee kanssasi! @@ -1380,6 +1380,14 @@ yhdistää ja toistaa sinulta virtaa? Lataaminen epäonnistui: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2055,12 +2063,12 @@ napsauttamalla hiiren oikealla. Tomahawk::Accounts::AccountModel - + Manual Install Required Manuaalinen asennus tarvitaan - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Valitettavasti tämän selvittimen automaattinen asennus ei ole saatavilla tai on poissa käytöstä alustallasi.<br /><br />Hae selvitin jakelusi kautta tai kääntämällä se itse, ja käytä sitten Asenna tiedostosta -painiketta. Lisäohjeita on osoitteessa:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2186,47 +2194,47 @@ napsauttamalla hiiren oikealla. Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synkronoi Spotifyn kanssa - + Re-enable syncing with Spotify Ota Spotifyn kanssa synkronointi käyttöön - + Create local copy Luo paikallinen kopio - + Subscribe to playlist changes Tilaa soittolistojen muutokset - + Re-enable playlist subscription Tilaa soittolistojen muutokset uudelleen - + Stop subscribing to changes Lopeta muutosten tilaus - + Enable Spotify collaborations Käytä Spotify-yhteistöitä - + Disable Spotify collaborations Poista Spotify-yhteistyöt käytöstä - + Stop syncing with Spotify Lopeta Spotifyn kanssa synkronointi @@ -2999,7 +3007,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Grooveshark-tietojen hakeminen verkosta epäonnistui! @@ -3087,7 +3095,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::ItunesParser - + Error fetching iTunes information from the network! iTunes-tietojen hakeminen verkosta epäonnistui! @@ -3189,7 +3197,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::RdioParser - + Error fetching Rdio information from the network! Rdio-tietojen hakeminen verkosta epäonnistui! @@ -3197,7 +3205,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Verkkovirhe jäsennettäessä lyhennettyä linkkiä! @@ -3257,7 +3265,7 @@ Koeta säätää suodattimia saadaksesi uuden joukon kappaleita kuunneltavaksi.< Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Spotify-tietojen hakeminen verkosta epäonnistui! @@ -3379,13 +3387,13 @@ anna siellä näytetty PIN-koodi tähän: - + Hide Menu Bar Piilota valikkorivi - + Show Menu Bar Näytä valikkorivi @@ -3430,84 +3438,84 @@ anna siellä näytetty PIN-koodi tähän: Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010–2013 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista @@ -3569,13 +3577,13 @@ anna siellä näytetty PIN-koodi tähän: TransferStatusItem - + from streaming artist - track from friend kaverilta - + to streaming artist - track to friend kaverille diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index b7c86736a7..4c9f87e311 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -364,17 +364,17 @@ de se connecter et streamer de vous? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Désolé, on a pas pu trouver la piste '%1' pour %2 - + Sorry, Tomahawk couldn't find the artist '%1' Désolé, on a pas pu trouver l'artiste '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Désolé, on a pas pu trouver l'album '%1' pour %2 @@ -716,7 +716,7 @@ de se connecter et streamer de vous? LatchedStatusItem - + %1 is listening along with you! %1 écoute avec vous! @@ -1380,6 +1380,14 @@ de se connecter et streamer de vous? Echec du chargement : %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2049,12 +2057,12 @@ de se connecter et streamer de vous? Tomahawk::Accounts::AccountModel - + Manual Install Required Installation manuelle requise - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Malheureusement, l'installation automatique de ce script de résolution n'est pas disponible ou a été désactivé sur votre plateforme.<br /><br />Utiliser "Installer depuis un fichier" ci-dessus et téléchargez le fichier pour votre distribution, ou compilez-le. D'autres instructions sont disponibles ici :<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2180,47 +2188,47 @@ de se connecter et streamer de vous? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synchroniser avec Spotify - + Re-enable syncing with Spotify Réactiver la synchronisation avec Spotify - + Create local copy Créer une copie localement - + Subscribe to playlist changes S'abonner aux modifications de la liste de lecture - + Re-enable playlist subscription Réactiver l'abonnement à la liste de lecture - + Stop subscribing to changes Stopper l'abonnement aux modifications - + Enable Spotify collaborations Activer les collaborations Spotify - + Disable Spotify collaborations Désactiver les collaborations Spotify - + Stop syncing with Spotify Stopper la synchronisation avec Spotify @@ -2993,7 +3001,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Échec du chargement des informations Grooveshark depuis le réseau! @@ -3081,7 +3089,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Échec du chargement des informations iTunes depuis le réseau ! @@ -3183,7 +3191,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Échec du chargement des informations Rdio depuis le réseau! @@ -3191,7 +3199,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Erreur réseau lors du décodage de l'URL courte! @@ -3251,7 +3259,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Échec du chargement des informations Spotify depuis le réseau! @@ -3373,13 +3381,13 @@ saisissez le numéro PIN ici : - + Hide Menu Bar Masquer la barre de menu - + Show Menu Bar Afficher la barre de menu @@ -3424,84 +3432,84 @@ saisissez le numéro PIN ici : Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Droit d'auteur 2010 - 2013 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk @@ -3563,13 +3571,13 @@ saisissez le numéro PIN ici : TransferStatusItem - + from streaming artist - track from friend à partir de - + to streaming artist - track to friend à diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index fa98722edf..ab92497987 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawk non atopa a pista «%1» de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawk non atopa o artista «%1» - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawk non atopa o álbum «%1» de %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 está escoitando o mesmo a canda ti! @@ -1379,6 +1379,14 @@ connect and stream from you? Fallou a carga de: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2050,12 +2058,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Precísase facer unha instalación manual - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Lamentablemente a instalación automática deste resolvedor non está dispoñíbel ou está desactivado para a túa plataforma.<br/><br/>Usa o «instalar dende ficheiro» de arriba, buscándoo para a túa distribución ou compilándoo. Podes atopar máis instrucións aquí:<br/><br/>http://www.tomahawk-player.org/resolvers/%1 @@ -2181,47 +2189,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronización con Spotify - + Re-enable syncing with Spotify Reactivar a sincronización con Spotify - + Create local copy Crear unha copia local - + Subscribe to playlist changes Subscribirse a cambios la lista de reprodución - + Re-enable playlist subscription Reactivar subscrición á lista de reprodución - + Stop subscribing to changes Parar de subscribirse a cambios - + Enable Spotify collaborations Activar as colaboracións con Spotify - + Disable Spotify collaborations Desactivar as colaboracións con Spotify - + Stop syncing with Spotify Deter a sincronización con Spotify @@ -2841,22 +2849,22 @@ Proba a trocar os filtros para ter outra lista música para escoitar. is not - + non é Studio - + Estudio Live - + Ao vivo Christmas - + Nadal @@ -2983,18 +2991,18 @@ Proba a trocar os filtros para ter outra lista música para escoitar. where song type is %1 - + onde o estilo de música é %1 where song type is not %1 - + onde o estilo de música non é %1 Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Houbo un erro buscando obtendo a información de Grooveshark da rede! @@ -3082,7 +3090,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Erro obtendo a información de iTunes da rede! @@ -3184,7 +3192,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Erro obtendo a información de Rdio da rede! @@ -3192,7 +3200,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Erro de rede no acurtamento de ligazóns! @@ -3252,7 +3260,7 @@ Proba a trocar os filtros para ter outra lista música para escoitar. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Erro obtendo a información de Spotify da rede! @@ -3373,13 +3381,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Agochar a barra de menú - + Show Menu Bar Mostrar a barra de menú @@ -3424,85 +3432,85 @@ enter the displayed PIN number here: Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autenticación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk @@ -3564,13 +3572,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend de - + to streaming artist - track to friend até diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 0e9137d749..224f6b4532 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1378,6 +1378,14 @@ connect and stream from you? + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 2f303371ae..e3999b62c7 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1378,6 +1378,14 @@ connect and stream from you? + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Szinkronizálás a Spotify-val - + Re-enable syncing with Spotify - + Create local copy Helyi másolat létrehozása - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk Tomahawkról @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index e670d96d23..ad69a887c0 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Spiacente, Tomahawk non ha trovato la traccia '%1' di %2 - + Sorry, Tomahawk couldn't find the artist '%1' Spiacente, Tomahawk non ha trovato l'artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Spiacente, Tomahawk non ha trovato l'album '%1' di '%2' @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 sta ascoltando insieme a te! @@ -1378,6 +1378,14 @@ connect and stream from you? Impossibili da caricare: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Richiesta installazione manuale - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Sfortunatamente l'installazione automatica di questo resolver non è disponibile o disabilitata per la tua piattaforma.<br /><br />Per favore usa l'opzione "installa da file", scaricandola per la tua distribuzione o compilandola tu stesso. Puoi trovare ulteriori info qui: <br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizzati con Spotify - + Re-enable syncing with Spotify Riabilita sincronizzazione con Spotify - + Create local copy Crea copia locale - + Subscribe to playlist changes Sottoscriviti ai cambiamenti della playlist - + Re-enable playlist subscription Riabilita sottoscrizione alla playlist - + Stop subscribing to changes Blocca sottoscrizione ai cambiamenti - + Enable Spotify collaborations Abilita collaborazione Spotify - + Disable Spotify collaborations Disabilita collaborazione Spotify - + Stop syncing with Spotify Ferma la sincronizzazione con Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Errore nel recuperare informazioni di Grooveshark dalla rete! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Errore nel recuperare informazioni di iTunes dalla rete! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Errore durante il recupero informazioni Rdio dalla rete! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Errore di rete nell'analizzare il link accorciato! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Errore nel recuperare informazioni Spotify dalla rete! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Nascondi barra menu - + Show Menu Bar Mostra barra menu @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play Ri&produci - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend da - + to streaming artist - track to friend a diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 6949e98b43..8616dd0807 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tomahawkは%2の%1を見つかりませんでした。 - + Sorry, Tomahawk couldn't find the artist '%1' Tomahawkは'%1'と言うアーティストを見つかりませんでした。 - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tomahawkは%2の%1を見つかりませんでした。 @@ -716,7 +716,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1さんが一緒に聴いています。 @@ -1380,6 +1380,14 @@ connect and stream from you? ロードに失敗しました: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2052,12 +2060,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required 手動インストールが要求 - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 残念ながら、このプラットフォームでは、リゾルバの自動インストールは設けてないか、無効にされました。<br /><br />以上の「ファイルからインストール」を使用して、又はディストリビューションから取得するか、自分でコンパイルして下さい。詳しくはこちらを参照:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2183,47 +2191,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Spotifyと同期する - + Re-enable syncing with Spotify Spotifyとの同期を再び有効にする - + Create local copy ローカルのコピーを作成 - + Subscribe to playlist changes プレイリストの変更フィードに登録する - + Re-enable playlist subscription 再びプレイリストのフィードに登録する - + Stop subscribing to changes 変更フィードの登録を解除 - + Enable Spotify collaborations Spotifyのコラボレーションを有効にする - + Disable Spotify collaborations Spotifyのコラボレーションを無効にする - + Stop syncing with Spotify Spotifyとの同期を解除 @@ -2996,7 +3004,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Grooveshark情報が取得されませんでした! @@ -3084,7 +3092,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! iTunes情報が取得されませんでした! @@ -3186,7 +3194,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Rdio情報が取得されませんでした! @@ -3194,7 +3202,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! 短縮リンクの解析中にネットワークエラーが発生しました! @@ -3254,7 +3262,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Spotify情報が取得されませんでした! @@ -3376,13 +3384,13 @@ enter the displayed PIN number here: - + Hide Menu Bar メニューバーを隠す - + Show Menu Bar メニューバーを表示 @@ -3427,84 +3435,84 @@ enter the displayed PIN number here: オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて @@ -3566,13 +3574,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend から - + to streaming artist - track to friend diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index ecad3ab957..ad22d8d982 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Atsiprašome, Tomahawk nepavyko rasti takelio '%1', atliekamo %2 - + Sorry, Tomahawk couldn't find the artist '%1' Atsiprašome, Tomahawk nepavyko rasti atlikėjo '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Atsiprašome, Tomahawk nepavyko rasti %2 atliekamo albumo '%1' @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 klausosi kartu su Jumis! @@ -1378,6 +1378,14 @@ connect and stream from you? Nepavyko įkelti: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Reikalingas rankinis įdiegimas - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sinchronizuoti su Spotify - + Re-enable syncing with Spotify Iš naujo įjungti sinchronizavimą su Spotify - + Create local copy Sukurti vietinę kopiją - + Subscribe to playlist changes Sekti grojaraščio pokyčius - + Re-enable playlist subscription Sekti grojarašio atnaujinimus iš naujo - + Stop subscribing to changes Nebesekti grojaraščio pokyčių - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Stabdyti sinchronizavimą su Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Autorinės teisės 2010 - 2013 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 185f578081..538072e27a 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -364,17 +364,17 @@ połączyć się i strumieniować od ciebie? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Przepraszamy, Tomahawk nie mógł znaleźć utworu '%1' wykonawcy %2 - + Sorry, Tomahawk couldn't find the artist '%1' Przepraszamy, Tomahawk nie mógł znaleźć wykonawcy '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Przepraszamy, Tomahawk nie mógł znaleźć albumu '%1' wykonawcy %2 @@ -716,7 +716,7 @@ połączyć się i strumieniować od ciebie? LatchedStatusItem - + %1 is listening along with you! @@ -1380,6 +1380,14 @@ połączyć się i strumieniować od ciebie? Nie udało sie załadować: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2049,12 +2057,12 @@ połączyć się i strumieniować od ciebie? Tomahawk::Accounts::AccountModel - + Manual Install Required Ręczna instalacja wymagana - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Niestety, automatyczna instalacja tej usługi jest niedostępna lub wyłączona na twojej platformie.<br /><br />Użyj instalacji z pliku, ściągając usługę lub kompilując ją samodzielnie. Więcej informacji można znaleźć na:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2180,47 +2188,47 @@ połączyć się i strumieniować od ciebie? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synchronizuj ze Spotify - + Re-enable syncing with Spotify Włącz ponownie synchronizację ze Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify Przestań synchronizować ze Spotify @@ -2993,7 +3001,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Błąd podczas pobierania informacji z Grooveshark! @@ -3081,7 +3089,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Błąd podczas pobierania informacji z iTunes! @@ -3183,7 +3191,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Błąd podczas pobierania informacji z Rdio! @@ -3191,7 +3199,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Błąd sieciowy podczas rozpoznawania krótkiego linku! @@ -3251,7 +3259,7 @@ Spróbuj poprawić filtry aby uzyskać nowy zestaw piosenek do odtworzenia. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Błąd podczas pobierania informacji ze Spotify! @@ -3373,13 +3381,13 @@ wprowadź pokazany numer PIN tutaj: - + Hide Menu Bar - + Show Menu Bar @@ -3424,84 +3432,84 @@ wprowadź pokazany numer PIN tutaj: Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku @@ -3563,13 +3571,13 @@ wprowadź pokazany numer PIN tutaj: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index c18b29998b..30835f57fd 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -364,17 +364,17 @@ se conecte e faça o stream de você? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Desculpe, o Tomahawk não encontrou a faixa '%1' de %2 - + Sorry, Tomahawk couldn't find the artist '%1' Desculpe, o Tomahawk não encontrou o artista '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Desculpe, o Tomahawk não encontrou o álbum '%1' de %2 @@ -716,7 +716,7 @@ se conecte e faça o stream de você? LatchedStatusItem - + %1 is listening along with you! %1 está ouvindo junto com você! @@ -1380,6 +1380,14 @@ se conecte e faça o stream de você? Falha ao carregar: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2049,12 +2057,12 @@ se conecte e faça o stream de você? Tomahawk::Accounts::AccountModel - + Manual Install Required Instalação Manual Requerida - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 Infelizmente, a instalação automática deste resolvedor não esta disponível ou esta desabilitada para sua plataforma.<br /><br />Por favor, utilize a opção "Instalar via arquivo" acima e instale do arquivo baixado ou compilado. Instruções adicionais podem ser encontradas aqui:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2180,47 +2188,47 @@ se conecte e faça o stream de você? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Sincronizar com o Spotify - + Re-enable syncing with Spotify Reativar sincronização com Spotify - + Create local copy Criar cópia local - + Subscribe to playlist changes Assinar para alterações na lista de reprodução - + Re-enable playlist subscription Re-habilitar assinatura da lista de reprodução - + Stop subscribing to changes Parar a assinatura de alterações - + Enable Spotify collaborations Habilitar colaborações Spotify - + Disable Spotify collaborations Desabilitar colaborações Spotify - + Stop syncing with Spotify Parar a sincronização com o Spotify @@ -2993,7 +3001,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Erro ao obter informações do Grooveshark pela rede! @@ -3081,7 +3089,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Erro ao obter informações do iTunes pela rede! @@ -3183,7 +3191,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Erro ao obter informações do Rdio pela rede! @@ -3191,7 +3199,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Erro de rede ao analisar o encurtador de link! @@ -3251,7 +3259,7 @@ Tente ajustar os filtros para ouvir um novo conjunto de músicas. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Erro ao obter informações do Spotify pela rede! @@ -3373,13 +3381,13 @@ colocar o número PIN mostrado aqui: - + Hide Menu Bar Esconder barra de menu - + Show Menu Bar Mostrar barra de menu @@ -3424,84 +3432,84 @@ colocar o número PIN mostrado aqui: Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk @@ -3563,13 +3571,13 @@ colocar o número PIN mostrado aqui: TransferStatusItem - + from streaming artist - track from friend de - + to streaming artist - track to friend para diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 78f1f8a39c..cfe7d28b59 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -367,17 +367,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 К сожалению, Tomahawk не смог найти песню '%1' %2 - + Sorry, Tomahawk couldn't find the artist '%1' К сожалению, Tomahawk не смог найти исполнителя '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 К сожалению, Tomahawk не смог найти альбом '%1' %2 @@ -719,7 +719,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 слушает вместе с вами! @@ -1383,6 +1383,14 @@ connect and stream from you? Ошибка при загрузке: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2055,12 +2063,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required Ручная установка обязательно - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 К сожалению, автоматическая установка этого расширения не доступна или недоступна для вашей платформы. <br /> <br /> Пожалуйста, используйте "Установить из файла", по получении его из дистрибутива или скомпилируйте его самостоятельно. Дальнейшие инструкции можно найти здесь: <br /> <br /> http://www.tomahawk-player.org/resolvers/%1 @@ -2186,47 +2194,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Синхронизировать с Spotify - + Re-enable syncing with Spotify Повторно включить синхронизацию с Spotify - + Create local copy Создать локальную копию - + Subscribe to playlist changes Следить за изменением плейлиста - + Re-enable playlist subscription Повторно включить подписку плейлиста - + Stop subscribing to changes Прекратить следить за изменением плейлиста - + Enable Spotify collaborations Включить сотрудничество с Spotify - + Disable Spotify collaborations Выключить сотрудничество с Spotify - + Stop syncing with Spotify Прекратить синхронизацию с Spotify @@ -2997,7 +3005,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Ошибка выборки информации из сети Grooveshark! @@ -3085,7 +3093,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Возникла ошибка при получении информации из iTunes! @@ -3187,7 +3195,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! Возникла ошибка при получении информации из Rdio! @@ -3195,7 +3203,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Ошибка сети при создании короткой ссылки! @@ -3255,7 +3263,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Возникла ошибка при получении информации из Spotify! @@ -3376,13 +3384,13 @@ enter the displayed PIN number here: - + Hide Menu Bar Спрятать Строку Меню - + Show Menu Bar Показать Строку Меню @@ -3427,84 +3435,84 @@ enter the displayed PIN number here: К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. - + Station Станция - + Create New Station Создать Новую Станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Авторское право 2010 - 2013 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3566,13 +3574,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend из - + to streaming artist - track to friend к diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 6792593c61..35b392709f 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -364,17 +364,17 @@ ansluta och strömma från dig? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 Tyvärr! Tomahawk kunde inte hitta spåret '%1' av %2 - + Sorry, Tomahawk couldn't find the artist '%1' Tyvärr! Tomahawk kunde inte hitta artisten '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 Tyvärr! Tomahawk kunde inte hitta albumet '%1' av %2 @@ -602,12 +602,12 @@ ansluta och strömma från dig? Song Hotttnesss - + Låt-hotttnesss Artist Hotttnesss - + Artist-hotttnesss @@ -627,12 +627,12 @@ ansluta och strömma från dig? Apply steering command - + Bekräfta styrkommando Reset all steering commands - + Återställ alla styrkommandon @@ -716,7 +716,7 @@ ansluta och strömma från dig? LatchedStatusItem - + %1 is listening along with you! %1 lyssnar tillsammans med dig! @@ -1380,6 +1380,14 @@ ansluta och strömma från dig? Gick inte att läsa in: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -1446,7 +1454,7 @@ ansluta och strömma från dig? Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more. - + Konfigurera Tomahawks avancerade inställningar, inklusive nätverkets anslutningsinställningar, webbläsarinteraktion m.m @@ -1456,12 +1464,12 @@ ansluta och strömma från dig? Delete all Access Control entries? - + Ta bort alla åtkomstkontrollsposter Do you really want to delete all Access Control entries? You will be asked for a decision again for each peer that you connect to. - + Vill du verkligen ta bort alla åtkomstkontrollsposter? Du kommer att bli förfrågad igen för varje nod du försöker ansluta till. @@ -1482,7 +1490,7 @@ ansluta och strömma från dig? Remote Peer Connection Method - + Fjärrnodens anslutningsmetod @@ -1547,12 +1555,12 @@ ansluta och strömma från dig? Show notification when a new song starts to play - + Visa notifiering när en låt börjar spela Clear All Access Control Entries - + Rensa alla åtkomstkontrollsposter @@ -1568,7 +1576,9 @@ ansluta och strömma från dig? and using it to craft personalized radios. Enabling this option will allow you (and all your friends) to create automatic playlists and stations based on your personal taste profile. - + Echo Nest håller reda på din katalogs metadata åt dig +och använder för att skapa personliga radiostationer. Genom att aktivera detta alternativ kan du (och alla dina vänner) skapa automatiska spellistor +och radiostationer baserat på din personliga profil @@ -1959,7 +1969,7 @@ ansluta och strömma från dig? Sync Starred tracks to Loved tracks - + Synkronisera Stjärnmärkta spår till Älskade spår @@ -2049,14 +2059,14 @@ ansluta och strömma från dig? Tomahawk::Accounts::AccountModel - + Manual Install Required Manuell installation krävs - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 - + Tyvärr är inte den automatiska installationen av denna resolvern tillgänglig eller så är den inte tillgänglig för din plattform<br /><br />Var god och använd "Installera från fil" ovan genom att hämta den från din distribution, eller genom att kompilera den själv. Fler instruktioner går att finnas här:<br /> <br />http://www.tomahawk-player.org/resolvers/%1 @@ -2180,47 +2190,47 @@ ansluta och strömma från dig? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify Synkronisera med Spotify - + Re-enable syncing with Spotify Återaktivera syncronisering mot Spotify - + Create local copy Skapa lokal kopia - + Subscribe to playlist changes Prenummerera på spellist-ändringar - + Re-enable playlist subscription - + Återaktivera spellisteprenummeration - + Stop subscribing to changes Sluta prenummerera på ändringar - + Enable Spotify collaborations - + Aktivera Spotify-samverkare - + Disable Spotify collaborations - + Avaktivera Spotify-samverkare - + Stop syncing with Spotify Sluta syncronisera med Spotify @@ -2633,7 +2643,7 @@ Försök att ändra i filtrerna för att få en ny låtlista No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings - + Inga användare med Echo nest-kataloger är aktiverade. Testa aktivera alternativet i Kollektionsinställningarna @@ -2797,13 +2807,13 @@ Försök att ändra i filtrerna för att få en ny låtlista Artist Hotttnesss - + Artist-hotttnesss Song Hotttnesss - + Låt-hotttnesss @@ -2902,7 +2912,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Adventurousness - + Äventyrlighet @@ -2993,7 +3003,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! Det gick inte ta emot information från Grooveshark! @@ -3081,7 +3091,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::ItunesParser - + Error fetching iTunes information from the network! Det gick inte ta emot information från iTunes via nätverket! @@ -3183,7 +3193,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::RdioParser - + Error fetching Rdio information from the network! Det gick inte hämta information från Rdio @@ -3191,7 +3201,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! Nätverksfel vid kortlänks-analys @@ -3251,7 +3261,7 @@ Försök att ändra i filtrerna för att få en ny låtlista Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! Det gick inte hämta information från Spotify @@ -3373,13 +3383,13 @@ anger du PIN-koden här: - + Hide Menu Bar Göm Menyrad - + Show Menu Bar Visa Menyrad @@ -3424,84 +3434,84 @@ anger du PIN-koden här: Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist Spellista - + Automatic Playlist Automatisk spellista - + Pause Paus - + &Play &Spela - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! Anslutningsfel till SIP: Autentisering misslyckades! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Tack till: - + About Tomahawk Om Tomahawk @@ -3563,13 +3573,13 @@ anger du PIN-koden här: TransferStatusItem - + from streaming artist - track from friend från - + to streaming artist - track to friend till @@ -3646,7 +3656,12 @@ If you only want to post tweets, you're done. If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes! You can re-send a sync message at any time simply by sending another tweet using the button. - + +Om du bara vill posta ett tweet så är du färdig. + +Om du vill ansluta Tomahawk till dina vänner med Twitter så välj vilken typ av tweet och tryck på knappen nedan för att skicka ett synkat meddelande. Båda måste följa varandra då direktmeddelanden används. Var sedan (väldigt) tålmodig då det kan ta flera minuter! + +Du kan skicka om ett synkat meddelande när som helst genom att skicka ett tweet till med samma knapp. @@ -3800,7 +3815,8 @@ Villkor för %1: Hotttness for %1: %2 - + Hotttness för %1 : %2 + @@ -3878,7 +3894,7 @@ Lyrics for "%1" by %2: By namespace uri - + Genom namespace URI @@ -4079,7 +4095,7 @@ Lyrics for "%1" by %2: No Supported Feature - + Ingen stödd funktion @@ -4104,7 +4120,7 @@ Lyrics for "%1" by %2: I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later! - + Tyvärr! Det här är bara en automatisk närvaro använt av Tomahawk Player (http://gettomahawk.com). Om du får det här meddelandet så är personen du försöker nå antagligen inte online, så var god och försök igen senare! diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 253151e378..ac8a986884 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1378,6 +1378,14 @@ connect and stream from you? + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index e695c0839f..471cdcc5f2 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 抱歉,Tomahawk 未找到 %2 的歌曲 '%1' - + Sorry, Tomahawk couldn't find the artist '%1' 抱歉,Tomahawk 无法找到艺术家 '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 抱歉,Tomahawk 无法找到 %2 的专辑 '%1' @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! %1 在与您一起听! @@ -1379,6 +1379,14 @@ connect and stream from you? 载入未成功: %1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2050,12 +2058,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required 手动安装需求组件 - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 抱歉,这个解析器的自动安装功能在当前平台上不可用或已被禁用。<br /><br />请使用上面的 "从文件安装" 选项,然后手动选择文件安装。更详细的指导可以参见这里:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2181,47 +2189,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify 与 Spotify 同步 - + Re-enable syncing with Spotify 重新启用 Spotify 同步 - + Create local copy 创建本地拷贝 - + Subscribe to playlist changes 订阅播放列表改动 - + Re-enable playlist subscription 重新启用播放列表订阅 - + Stop subscribing to changes 停止订阅改动 - + Enable Spotify collaborations 启用 Spotify 碰撞 - + Disable Spotify collaborations 禁用 Spotify 碰撞 - + Stop syncing with Spotify 停止与 Spotify 同步 @@ -2994,7 +3002,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! 从网络获取 Grooveshark 信息时出现错误! @@ -3082,7 +3090,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! 从网络获取 iTunes 信息时出现错误! @@ -3184,7 +3192,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! 从网络获取电台信息时出错! @@ -3192,7 +3200,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! 解析短链接时出错! @@ -3252,7 +3260,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! 从网络获取 Spotify 信息时出错! @@ -3374,13 +3382,13 @@ enter the displayed PIN number here: - + Hide Menu Bar 隐藏菜单栏 - + Show Menu Bar 显示菜单栏 @@ -3425,84 +3433,84 @@ enter the displayed PIN number here: 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 版权所有 2010 - 2013 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk @@ -3564,13 +3572,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index d953269459..0042ef89ed 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -363,17 +363,17 @@ connect and stream from you? AudioEngine - + Sorry, Tomahawk couldn't find the track '%1' by %2 - + Sorry, Tomahawk couldn't find the artist '%1' - + Sorry, Tomahawk couldn't find the album '%1' by %2 @@ -715,7 +715,7 @@ connect and stream from you? LatchedStatusItem - + %1 is listening along with you! @@ -1378,6 +1378,14 @@ connect and stream from you? 無法載入:%1 + + ScriptEngine + + + Script Resolver Error: %1 %2 %3 %4 + + + SearchLineEdit @@ -2047,12 +2055,12 @@ connect and stream from you? Tomahawk::Accounts::AccountModel - + Manual Install Required - + Unfortunately, automatic installation of this resolver is not available or disabled for your platform.<br /><br />Please use "Install from file" above, by fetching it from your distribution or compiling it yourself. Further instructions can be found here:<br /><br />http://www.tomahawk-player.org/resolvers/%1 @@ -2178,47 +2186,47 @@ connect and stream from you? Tomahawk::Accounts::SpotifyAccount - + Sync with Spotify - + Re-enable syncing with Spotify - + Create local copy - + Subscribe to playlist changes - + Re-enable playlist subscription - + Stop subscribing to changes - + Enable Spotify collaborations - + Disable Spotify collaborations - + Stop syncing with Spotify @@ -2984,7 +2992,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::GroovesharkParser - + Error fetching Grooveshark information from the network! @@ -3072,7 +3080,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ItunesParser - + Error fetching iTunes information from the network! @@ -3174,7 +3182,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::RdioParser - + Error fetching Rdio information from the network! @@ -3182,7 +3190,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::ShortenedLinkParser - + Network error parsing shortened link! @@ -3242,7 +3250,7 @@ Try tweaking the filters for a new set of songs to play. Tomahawk::SpotifyParser - + Error fetching Spotify information from the network! @@ -3363,13 +3371,13 @@ enter the displayed PIN number here: - + Hide Menu Bar - + Show Menu Bar @@ -3414,84 +3422,84 @@ enter the displayed PIN number here: - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,13 +3561,13 @@ enter the displayed PIN number here: TransferStatusItem - + from streaming artist - track from friend - + to streaming artist - track to friend From dffd614c3837d46a905470a5c87a7d439883073c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Tue, 15 Jan 2013 09:55:39 +0100 Subject: [PATCH 271/310] * Fixed memleak in drag & drop operations. --- src/libtomahawk/playlist/TrackView.cpp | 17 ++++++++++++++++- src/libtomahawk/playlist/TrackView.h | 14 +++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index cd1d9b255e..1a0bd68949 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -449,6 +449,7 @@ TrackView::dragEnterEvent( QDragEnterEvent* event ) void TrackView::dragMoveEvent( QDragMoveEvent* event ) { + tDebug() << Q_FUNC_INFO; QTreeView::dragMoveEvent( event ); if ( model()->isReadOnly() ) @@ -488,9 +489,21 @@ TrackView::dragMoveEvent( QDragMoveEvent* event ) } +void +TrackView::dragLeaveEvent( QDragLeaveEvent* event ) +{ + tDebug() << Q_FUNC_INFO; + QTreeView::dragLeaveEvent( event ); + + m_dragging = false; + setDirtyRegion( m_dropRect ); +} + + void TrackView::dropEvent( QDropEvent* event ) { + tDebug() << Q_FUNC_INFO; QTreeView::dropEvent( event ); if ( event->isAccepted() ) @@ -499,7 +512,7 @@ TrackView::dropEvent( QDropEvent* event ) } else { - if ( DropJob::acceptsMimeData( event->mimeData()) ) + if ( DropJob::acceptsMimeData( event->mimeData() ) ) { const QPoint pos = event->pos(); const QModelIndex index = indexAt( pos ); @@ -609,6 +622,8 @@ TrackView::startDrag( Qt::DropActions supportedActions ) { m_proxyModel->removeIndexes( pindexes ); } + + delete drag; } diff --git a/src/libtomahawk/playlist/TrackView.h b/src/libtomahawk/playlist/TrackView.h index f0f5371bdf..c9e091f0b1 100644 --- a/src/libtomahawk/playlist/TrackView.h +++ b/src/libtomahawk/playlist/TrackView.h @@ -108,16 +108,16 @@ public slots: virtual void startDrag( Qt::DropActions supportedActions ); virtual void dragEnterEvent( QDragEnterEvent* event ); - virtual void dragLeaveEvent( QDragLeaveEvent* /*event*/ ) { m_dragging = false; setDirtyRegion( m_dropRect ); } + virtual void dragLeaveEvent( QDragLeaveEvent* event ); virtual void dragMoveEvent( QDragMoveEvent* event ); virtual void dropEvent( QDropEvent* event ); - void wheelEvent( QWheelEvent* event ); - void mouseMoveEvent( QMouseEvent* event ); - void mousePressEvent( QMouseEvent* event ); - void leaveEvent( QEvent* event ); - void paintEvent( QPaintEvent* event ); - void keyPressEvent( QKeyEvent* event ); + virtual void wheelEvent( QWheelEvent* event ); + virtual void mouseMoveEvent( QMouseEvent* event ); + virtual void mousePressEvent( QMouseEvent* event ); + virtual void leaveEvent( QEvent* event ); + virtual void paintEvent( QPaintEvent* event ); + virtual void keyPressEvent( QKeyEvent* event ); protected slots: virtual void currentChanged( const QModelIndex& current, const QModelIndex& previous ); From 18ebcc1156363266e9a36aa0236009d5fd542e97 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 13:15:46 +0100 Subject: [PATCH 272/310] * Added Tomahawk::toggleFullscreen on OSX. --- src/mac/TomahawkApp_Mac.h | 1 + src/mac/TomahawkApp_Mac.mm | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/mac/TomahawkApp_Mac.h b/src/mac/TomahawkApp_Mac.h index e258c67195..5de03cc04b 100644 --- a/src/mac/TomahawkApp_Mac.h +++ b/src/mac/TomahawkApp_Mac.h @@ -46,6 +46,7 @@ void setApplicationHandler(PlatformInterface* handler); void checkForUpdates(); // Pass in a QObject with slots "fullScreenEntered() and fullScreenExited() in order to be notified +void toggleFullscreen(); void enableFullscreen( QObject* notifier ); }; diff --git a/src/mac/TomahawkApp_Mac.mm b/src/mac/TomahawkApp_Mac.mm index ef4e81e072..3d856ba13c 100644 --- a/src/mac/TomahawkApp_Mac.mm +++ b/src/mac/TomahawkApp_Mac.mm @@ -250,6 +250,26 @@ - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update #define LION_FULLSCREEN_EXIT_NOTIFICATION_VALUE @"NSWindowDidExitFullScreenNotification" #endif +void Tomahawk::toggleFullscreen() +{ + if ( QSysInfo::MacintoshVersion != QSysInfo::MV_SNOWLEOPARD && + QSysInfo::MacintoshVersion != QSysInfo::MV_LEOPARD ) + { + qDebug() << "Toggling Lion Full-screeen"; + // Can't include TomahawkApp.h in a .mm file, pulls in InfoSystem.h which uses + // the objc keyword 'id' + foreach( QWidget* w, QApplication::topLevelWidgets() ) + { + if ( qobject_cast< TomahawkWindow* >( w ) ) + { + NSView *nsview = (NSView *)w->winId(); + NSWindow *nswindow = [nsview window]; + [nswindow toggleFullScreen: nil]; + } + } + } +} + void Tomahawk::enableFullscreen( QObject* receiver ) { // We don't support anything below leopard, so if it's not [snow] leopard it must be lion From 6736c69928425fec3018ab0339f36b6eb2ae0f33 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 13:16:27 +0100 Subject: [PATCH 273/310] * TomahawkSettings can now store fullscreen mode. --- src/libtomahawk/TomahawkSettings.cpp | 16 ++++++++++++++++ src/libtomahawk/TomahawkSettings.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp index d4237488c5..81a0232a01 100644 --- a/src/libtomahawk/TomahawkSettings.cpp +++ b/src/libtomahawk/TomahawkSettings.cpp @@ -929,6 +929,7 @@ TomahawkSettings::setVerboseNotifications( bool notifications ) setValue( "ui/notifications/verbose", notifications ); } + bool TomahawkSettings::menuBarVisible() const { @@ -939,6 +940,7 @@ TomahawkSettings::menuBarVisible() const #endif } + void TomahawkSettings::setMenuBarVisible( bool visible ) { @@ -948,6 +950,20 @@ TomahawkSettings::setMenuBarVisible( bool visible ) } +bool +TomahawkSettings::fullscreenEnabled() const +{ + return value( "ui/mainwindow/fullscreenEnabled", false ).toBool(); +} + + +void +TomahawkSettings::setFullscreenEnabled( bool enabled ) +{ + setValue( "ui/mainwindow/fullscreenEnabled", enabled ); +} + + bool TomahawkSettings::showOfflineSources() const { diff --git a/src/libtomahawk/TomahawkSettings.h b/src/libtomahawk/TomahawkSettings.h index 94182084d1..7373452f86 100644 --- a/src/libtomahawk/TomahawkSettings.h +++ b/src/libtomahawk/TomahawkSettings.h @@ -79,6 +79,9 @@ Q_OBJECT bool menuBarVisible() const; void setMenuBarVisible( bool visible ); + bool fullscreenEnabled() const; + void setFullscreenEnabled( bool fullscreen ); + // Collection Stuff bool showOfflineSources() const; void setShowOfflineSources( bool show ); From 6e0fb0d597fe1b24a28c81ebc8883fb314854647 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 13:17:39 +0100 Subject: [PATCH 274/310] * Added fullscreen action to ActionCollection. --- src/libtomahawk/ActionCollection.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libtomahawk/ActionCollection.cpp b/src/libtomahawk/ActionCollection.cpp index 6ce9b0f369..7306bb13ca 100644 --- a/src/libtomahawk/ActionCollection.cpp +++ b/src/libtomahawk/ActionCollection.cpp @@ -112,6 +112,8 @@ ActionCollection::initActions() m_actionCollection[ "minimize" ]->setShortcut( QKeySequence( "Ctrl+M" ) ); m_actionCollection[ "zoom" ] = new QAction( tr( "Zoom" ), this ); m_actionCollection[ "zoom" ]->setShortcut( QKeySequence( "Meta+Ctrl+Z" ) ); + m_actionCollection[ "fullscreen" ] = new QAction( tr( "Enter Full Screen" ), this ); + m_actionCollection[ "fullscreen" ]->setShortcut( QKeySequence( "Meta+Ctrl+F" ) ); #else m_actionCollection[ "toggleMenuBar" ] = new QAction( tr( "Hide Menu Bar" ), this ); m_actionCollection[ "toggleMenuBar" ]->setShortcut( QKeySequence( "Ctrl+M" ) ); @@ -189,6 +191,7 @@ ActionCollection::createMenuBar( QWidget *parent ) QMenu* windowMenu = new QMenu( tr( "&Window" ), menuBar ); windowMenu->addAction( m_actionCollection[ "minimize" ] ); windowMenu->addAction( m_actionCollection[ "zoom" ] ); + windowMenu->addAction( m_actionCollection[ "fullscreen" ] ); menuBar->addMenu( windowMenu ); #endif From fbeee55c16adfeb514719352ea51129d5ee09517 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 13:18:40 +0100 Subject: [PATCH 275/310] * Restore last fullscreen state on OSX. --- src/TomahawkWindow.cpp | 28 ++++++++++++++++++++++++++++ src/TomahawkWindow.h | 1 + 2 files changed, 29 insertions(+) diff --git a/src/TomahawkWindow.cpp b/src/TomahawkWindow.cpp index 21219459a2..334584767e 100644 --- a/src/TomahawkWindow.cpp +++ b/src/TomahawkWindow.cpp @@ -148,6 +148,12 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) vm->setQueue( m_queueView ); vm->showWelcomePage(); + + if ( TomahawkSettings::instance()->fullscreenEnabled() ) + { + // Window must be fully constructed to toggle fullscreen mode. Queue it up. + QTimer::singleShot( 0, this, SLOT( toggleFullscreen() ) ); + } } @@ -543,6 +549,7 @@ TomahawkWindow::setupSignals() #if defined( Q_OS_MAC ) connect( ac->getAction( "minimize" ), SIGNAL( triggered() ), SLOT( minimize() ) ); connect( ac->getAction( "zoom" ), SIGNAL( triggered() ), SLOT( maximize() ) ); + connect( ac->getAction( "fullscreen" ), SIGNAL( triggered() ), SLOT( toggleFullscreen() ) ); #else connect( ac->getAction( "toggleMenuBar" ), SIGNAL( triggered() ), SLOT( toggleMenuBar() ) ); #endif @@ -875,14 +882,24 @@ TomahawkWindow::showOfflineSources() void TomahawkWindow::fullScreenEntered() { + TomahawkSettings::instance()->setFullscreenEnabled( true ); statusBar()->setSizeGripEnabled( false ); + +#if defined( Q_WS_MAC ) + ActionCollection::instance()->getAction( "fullscreen" )->setText( tr( "Exit Full Screen" ) ); +#endif } void TomahawkWindow::fullScreenExited() { + TomahawkSettings::instance()->setFullscreenEnabled( false ); statusBar()->setSizeGripEnabled( true ); + +#if defined( Q_WS_MAC ) + ActionCollection::instance()->getAction( "fullscreen" )->setText( tr( "Enter Full Screen" ) ); +#endif } @@ -1290,6 +1307,17 @@ TomahawkWindow::maximize() } +void +TomahawkWindow::toggleFullscreen() +{ + tDebug() << Q_FUNC_INFO; + +#if defined( Q_WS_MAC ) + Tomahawk::toggleFullscreen(); +#endif +} + + void TomahawkWindow::crashNow() { diff --git a/src/TomahawkWindow.h b/src/TomahawkWindow.h index 949dfb150c..8050f5e4b2 100644 --- a/src/TomahawkWindow.h +++ b/src/TomahawkWindow.h @@ -139,6 +139,7 @@ private slots: void minimize(); void maximize(); + void toggleFullscreen(); void playlistCreateDialogFinished( int ret ); From c07ac1cc74d2aeec1c83f281c32af34dad6bb26e Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 13:50:36 +0100 Subject: [PATCH 276/310] * Don't use tDebug in installTranslator. --- src/libtomahawk/utils/TomahawkUtils.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp index 433b1f6b6e..208692efeb 100644 --- a/src/libtomahawk/utils/TomahawkUtils.cpp +++ b/src/libtomahawk/utils/TomahawkUtils.cpp @@ -809,11 +809,11 @@ installTranslator( QObject* parent ) QTranslator* translator = new QTranslator( parent ); if ( translator->load( QString( ":/lang/tomahawk_" ) + locale ) ) { - tDebug( LOGVERBOSE ) << "Translation: Tomahawk: Using system locale:" << locale; + qDebug() << "Translation: Tomahawk: Using system locale:" << locale; } else { - tDebug( LOGVERBOSE ) << "Translation: Tomahawk: Using default locale, system locale one not found:" << locale; + qDebug() << "Translation: Tomahawk: Using default locale, system locale one not found:" << locale; translator->load( QString( ":/lang/tomahawk_en" ) ); } @@ -823,11 +823,11 @@ installTranslator( QObject* parent ) translator = new QTranslator( parent ); if ( translator->load( QString( ":/lang/qt_" ) + locale ) ) { - tDebug( LOGVERBOSE ) << "Translation: Qt: Using system locale:" << locale; + qDebug() << "Translation: Qt: Using system locale:" << locale; } else { - tDebug( LOGVERBOSE ) << "Translation: Qt: Using default locale, system locale one not found:" << locale; + qDebug() << "Translation: Qt: Using default locale, system locale one not found:" << locale; } QCoreApplication::installTranslator( translator ); From dcd253fdf6d45ec9d21c02393bf2f4e50244a3b3 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 14:37:09 +0100 Subject: [PATCH 277/310] * Fixed using tLog before Logger is initialized. --- src/breakpad/BreakPad.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/breakpad/BreakPad.cpp b/src/breakpad/BreakPad.cpp index e230960843..935213a4bb 100644 --- a/src/breakpad/BreakPad.cpp +++ b/src/breakpad/BreakPad.cpp @@ -89,7 +89,7 @@ BreakPad::BreakPad( const QString& path, bool active ) else if ( QFileInfo( globalReporter ).exists() ) reporter = globalReporter; else - tLog() << "Could not find \"" CRASH_REPORTER_BINARY "\" in \"" CMAKE_INSTALL_FULL_LIBEXECDIR "\" or application path"; + qDebug() << "Could not find \"" CRASH_REPORTER_BINARY "\" in \"" CMAKE_INSTALL_FULL_LIBEXECDIR "\" or application path"; char* creporter; std::string sreporter = reporter.toStdString(); From 3c5edea2af2f6208ac183ccbf65a0ac427cc4bf7 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 16 Jan 2013 08:46:19 -0500 Subject: [PATCH 278/310] Slight clean up by adding a MOUNTAIN_LION define --- src/CMakeLists.osx.cmake | 7 +++++-- src/mac/TomahawkApp_Mac.mm | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.osx.cmake b/src/CMakeLists.osx.cmake index f7a502f475..97a40d2650 100644 --- a/src/CMakeLists.osx.cmake +++ b/src/CMakeLists.osx.cmake @@ -28,14 +28,17 @@ if (APPLE) # 9.8.0 -> 10.5/Leopard # 10.4.0 -> 10.6/Snow Leopard # 11.x.x -> Lion + # 12.x.x -> Mountain Lion string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${CMAKE_HOST_SYSTEM_VERSION}) - if (DARWIN_VERSION GREATER 10) + if (DARWIN_VERSION GREATER 11) + SET(MOUNTAIN_LION 1) + elseif (DARWIN_VERSION GREATER 10) SET(LION 1) elseif (DARWIN_VERSION GREATER 9) SET(SNOW_LEOPARD 1) elseif (DARWIN_VERSION GREATER 8) SET(LEOPARD 1) - endif (DARWIN_VERSION GREATER 10) + endif (DARWIN_VERSION GREATER 11) # Use two different sparkle update tracks for debug and release # We have to change the URL in the Info.plist file :-/ diff --git a/src/mac/TomahawkApp_Mac.mm b/src/mac/TomahawkApp_Mac.mm index 3d856ba13c..cc50a017f0 100644 --- a/src/mac/TomahawkApp_Mac.mm +++ b/src/mac/TomahawkApp_Mac.mm @@ -240,7 +240,7 @@ - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update #endif } -#ifdef LION +#if defined(LION) || defined(MOUNTAIN_LION) #define SET_LION_FULLSCREEN NSWindowCollectionBehaviorFullScreenPrimary #define LION_FULLSCREEN_ENTER_NOTIFICATION_VALUE NSWindowWillEnterFullScreenNotification #define LION_FULLSCREEN_EXIT_NOTIFICATION_VALUE NSWindowDidExitFullScreenNotification From e20e29c88c32da454e38b4603773b9ed7f2b7e8c Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 16 Jan 2013 08:50:03 -0500 Subject: [PATCH 279/310] Add CMakeDefine, thanks domme :) --- src/Config.h.in | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Config.h.in b/src/Config.h.in index 2b03e76c51..79e5bad39d 100644 --- a/src/Config.h.in +++ b/src/Config.h.in @@ -7,6 +7,7 @@ #define CMAKE_INSTALL_FULL_LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}" +#cmakedefine MOUNTAIN_LION #cmakedefine LION #cmakedefine SNOW_LEOPARD #cmakedefine LEOPARD From a80803769da226b3e1a12253b12e809be6599d6f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Jan 2013 15:06:08 +0100 Subject: [PATCH 280/310] * Disable BreakPad for testing. --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1824223f7a..6172a29828 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -148,9 +148,9 @@ main( int argc, char *argv[] ) new TomahawkSettingsGui( &a ); #endif -#ifndef ENABLE_HEADLESSs +#ifndef ENABLE_HEADLESS #ifdef WITH_BREAKPAD - new BreakPad( QDir::tempPath(), TomahawkSettings::instance()->crashReporterEnabled() && !TomahawkUtils::headless() ); +// new BreakPad( QDir::tempPath(), TomahawkSettings::instance()->crashReporterEnabled() && !TomahawkUtils::headless() ); #endif #endif From 7d94df120f563eaf8a624040f5a7a73f52503778 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 16 Jan 2013 19:03:14 +0100 Subject: [PATCH 281/310] Forward declare structs as structs --- src/libtomahawk/accounts/AccountModel.h | 2 +- src/libtomahawk/database/IdThreadWorker.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/accounts/AccountModel.h b/src/libtomahawk/accounts/AccountModel.h index 09be151872..d8c69d6c31 100644 --- a/src/libtomahawk/accounts/AccountModel.h +++ b/src/libtomahawk/accounts/AccountModel.h @@ -31,7 +31,7 @@ namespace Tomahawk { namespace Accounts { -class AccountModelNode; +struct AccountModelNode; class DLLEXPORT AccountModel : public QAbstractListModel { diff --git a/src/libtomahawk/database/IdThreadWorker.h b/src/libtomahawk/database/IdThreadWorker.h index 90ce53a6e8..1f0d846e00 100644 --- a/src/libtomahawk/database/IdThreadWorker.h +++ b/src/libtomahawk/database/IdThreadWorker.h @@ -26,7 +26,7 @@ #include #include -class QueueItem; +struct QueueItem; class Database; class DatabaseImpl; From acf324279a335a36b734c3e34d628231e3dca4bc Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 16 Jan 2013 20:17:26 +0100 Subject: [PATCH 282/310] Hide the share action from AudioControls if there's no InfoPlugin that can be used to share a track. --- src/AudioControls.cpp | 26 ++++++++++++++++++++++- src/AudioControls.h | 3 +++ src/libtomahawk/infosystem/InfoSystem.cpp | 6 ++++++ src/libtomahawk/infosystem/InfoSystem.h | 1 + 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/AudioControls.cpp b/src/AudioControls.cpp index ebc2e96e7b..9b744ee8cd 100644 --- a/src/AudioControls.cpp +++ b/src/AudioControls.cpp @@ -2,6 +2,7 @@ * * Copyright 2010-2011, Christian Muehlhaeuser * Copyright 2010-2011, Jeff Mitchell + * Copyright 2013, Teo Mrnjavac * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -151,6 +152,10 @@ AudioControls::AudioControls( QWidget* parent ) ui->pauseButton->setContentsMargins( 0, 0, 0, 0 ); ui->stackedLayout->setSizeConstraint( QLayout::SetFixedSize ); + connect( InfoSystem::InfoSystem::instance(), SIGNAL( updatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet ) ), + this, SLOT( onInfoSystemPushTypesUpdated( Tomahawk::InfoSystem::InfoTypeSet ) ) ); + onInfoSystemPushTypesUpdated( InfoSystem::InfoSystem::instance()->supportedPushTypes() ); + onPlaybackStopped(); // initial state } @@ -272,7 +277,7 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result ) ui->loveButton->setEnabled( true ); ui->loveButton->setVisible( true ); ui->socialButton->setEnabled( true ); - ui->socialButton->setVisible( true ); + ui->socialButton->setVisible( m_shouldShowShareAction ); ui->ownerButton->setEnabled( true ); ui->ownerButton->setVisible( true ); @@ -351,6 +356,25 @@ AudioControls::onSocialActionsLoaded() } +void +AudioControls::onInfoSystemPushTypesUpdated( InfoSystem::InfoTypeSet supportedTypes ) +{ + if ( supportedTypes.contains( InfoSystem::InfoShareTrack ) ) + { + m_shouldShowShareAction = true; + } + else + { + m_shouldShowShareAction = false; + } + + if ( AudioEngine::instance()->state() == AudioEngine::Stopped ) + ui->socialButton->setVisible( false ); + else + ui->socialButton->setVisible( m_shouldShowShareAction ); +} + + void AudioControls::setSocialActions() { diff --git a/src/AudioControls.h b/src/AudioControls.h index a4797c7aa5..cacfb47370 100644 --- a/src/AudioControls.h +++ b/src/AudioControls.h @@ -89,6 +89,8 @@ private slots: void onCoverUpdated(); void onSocialActionsLoaded(); + void onInfoSystemPushTypesUpdated( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); + private: void setCover(); void setSocialActions(); @@ -100,6 +102,7 @@ private slots: Tomahawk::result_ptr m_currentTrack; Tomahawk::PlaylistModes::RepeatMode m_repeatMode; bool m_shuffled; + bool m_shouldShowShareAction; QTimer m_phononTickCheckTimer; QTimeLine m_sliderTimeLine; diff --git a/src/libtomahawk/infosystem/InfoSystem.cpp b/src/libtomahawk/infosystem/InfoSystem.cpp index fc6c56b22e..f49857b2d6 100644 --- a/src/libtomahawk/infosystem/InfoSystem.cpp +++ b/src/libtomahawk/infosystem/InfoSystem.cpp @@ -173,6 +173,12 @@ InfoSystem::init() connect( worker, SIGNAL( finished( QString, Tomahawk::InfoSystem::InfoType ) ), this, SIGNAL( finished( QString, Tomahawk::InfoSystem::InfoType ) ), Qt::UniqueConnection ); + qRegisterMetaType< Tomahawk::InfoSystem::InfoTypeSet >(); + connect( worker, SIGNAL( updatedSupportedGetTypes( Tomahawk::InfoSystem::InfoTypeSet ) ), + this, SLOT( receiveUpdatedSupportedGetTypes( Tomahawk::InfoSystem::InfoTypeSet ) ) ); + connect( worker, SIGNAL( updatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet ) ), + this, SLOT( receiveUpdatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet ) ) ); + QMetaObject::invokeMethod( worker, "init", Qt::QueuedConnection, Q_ARG( Tomahawk::InfoSystem::InfoSystemCache*, cache ) ); m_inited = true; diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 97ec9c99e1..6a9e7f5272 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -269,6 +269,7 @@ Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoType ); Q_DECLARE_METATYPE( QList< Tomahawk::InfoSystem::InfoStringHash > ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoPluginPtr ); Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoPlugin* ); +Q_DECLARE_METATYPE( Tomahawk::InfoSystem::InfoTypeSet ); Q_DECLARE_INTERFACE( Tomahawk::InfoSystem::InfoPlugin, "tomahawk.InfoPlugin/1.0" ) From c1ea6d7ea1c13dda5850599c317fbfc7f1dabe77 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 16 Jan 2013 14:34:28 -0500 Subject: [PATCH 283/310] Blind try to fix mystery osx crash --- src/libtomahawk/utils/Logger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/utils/Logger.cpp b/src/libtomahawk/utils/Logger.cpp index 6045cf0798..dc89438019 100644 --- a/src/libtomahawk/utils/Logger.cpp +++ b/src/libtomahawk/utils/Logger.cpp @@ -184,6 +184,6 @@ TLog::TLog( unsigned int debugLevel ) TLog::~TLog() { - log( m_msg.toLatin1().data(), m_debugLevel ); + log( m_msg.toLocal8Bit().data(), m_debugLevel ); } From 0c68f55937c78909ac2e9d6f900e4198930402af Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Wed, 16 Jan 2013 14:50:03 -0500 Subject: [PATCH 284/310] Safer thread stopping, should fix an assert --- src/libtomahawk/filemetadata/MusicScanner.cpp | 63 ++++++++++++------- src/libtomahawk/filemetadata/MusicScanner.h | 18 +++++- src/libtomahawk/infosystem/InfoSystem.cpp | 4 +- 3 files changed, 58 insertions(+), 27 deletions(-) diff --git a/src/libtomahawk/filemetadata/MusicScanner.cpp b/src/libtomahawk/filemetadata/MusicScanner.cpp index 5f90dfcbbc..a083291d55 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.cpp +++ b/src/libtomahawk/filemetadata/MusicScanner.cpp @@ -34,9 +34,6 @@ #include "utils/Logger.h" -using namespace Tomahawk; - - void DirLister::go() { @@ -100,6 +97,38 @@ DirLister::scanDir( QDir dir, int depth ) } +DirListerThreadController::DirListerThreadController( QObject *parent ) + : QThread( parent ) +{ + tDebug() << Q_FUNC_INFO; +} + + +DirListerThreadController::~DirListerThreadController() +{ + tDebug() << Q_FUNC_INFO; +} + + +void +DirListerThreadController::run() +{ + m_dirLister = QPointer< DirLister >( new DirLister( m_paths ) ); + connect( m_dirLister.data(), SIGNAL( fileToScan( QFileInfo ) ), + parent(), SLOT( scanFile( QFileInfo ) ), Qt::QueuedConnection ); + + // queued, so will only fire after all dirs have been scanned: + connect( m_dirLister.data(), SIGNAL( finished() ), + parent(), SLOT( postOps() ), Qt::QueuedConnection ); + + QMetaObject::invokeMethod( m_dirLister.data(), "go", Qt::QueuedConnection ); + + exec(); + if( !m_dirLister.isNull() ) + delete m_dirLister.data(); +} + + MusicScanner::MusicScanner( ScanManager::ScanMode scanMode, const QStringList& paths, quint32 bs ) : QObject() , m_scanMode( scanMode ) @@ -125,12 +154,11 @@ MusicScanner::~MusicScanner() { tDebug() << Q_FUNC_INFO; - if ( !m_dirLister.isNull() ) + if ( m_dirListerThreadController ) { - m_dirListerThreadController->quit();; + m_dirListerThreadController->quit(); m_dirListerThreadController->wait( 60000 ); - delete m_dirLister.data(); delete m_dirListerThreadController; m_dirListerThreadController = 0; } @@ -182,20 +210,9 @@ MusicScanner::scan() return; } - m_dirListerThreadController = new QThread( this ); - - m_dirLister = QPointer< DirLister >( new DirLister( m_paths ) ); - m_dirLister.data()->moveToThread( m_dirListerThreadController ); - - connect( m_dirLister.data(), SIGNAL( fileToScan( QFileInfo ) ), - SLOT( scanFile( QFileInfo ) ), Qt::QueuedConnection ); - - // queued, so will only fire after all dirs have been scanned: - connect( m_dirLister.data(), SIGNAL( finished() ), - SLOT( postOps() ), Qt::QueuedConnection ); - + m_dirListerThreadController = new DirListerThreadController( this ); + m_dirListerThreadController->setPaths( m_paths ); m_dirListerThreadController->start( QThread::IdlePriority ); - QMetaObject::invokeMethod( m_dirLister.data(), "go" ); } @@ -250,12 +267,11 @@ MusicScanner::postOps() void MusicScanner::cleanup() { - if ( !m_dirLister.isNull() ) + if ( m_dirListerThreadController ) { - m_dirListerThreadController->quit();; + m_dirListerThreadController->quit(); m_dirListerThreadController->wait( 60000 ); - delete m_dirLister.data(); delete m_dirListerThreadController; m_dirListerThreadController = 0; } @@ -368,7 +384,7 @@ MusicScanner::readFile( const QFileInfo& fi ) int bitrate = 0; int duration = 0; - Tag *tag = Tag::fromFile( f ); + Tomahawk::Tag *tag = Tomahawk::Tag::fromFile( f ); if ( f.audioProperties() ) { TagLib::AudioProperties *properties = f.audioProperties(); @@ -414,3 +430,4 @@ MusicScanner::readFile( const QFileInfo& fi ) m_scanned++; return m; } + diff --git a/src/libtomahawk/filemetadata/MusicScanner.h b/src/libtomahawk/filemetadata/MusicScanner.h index 06601e5bcd..1190cd1c40 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.h +++ b/src/libtomahawk/filemetadata/MusicScanner.h @@ -79,6 +79,21 @@ private slots: bool m_deleting; }; +class DirListerThreadController : public QThread +{ + Q_OBJECT + +public: + DirListerThreadController( QObject* parent ); + virtual ~DirListerThreadController(); + + void setPaths( const QStringList& paths ) { m_paths = paths; } + void run(); + +private: + QPointer< DirLister > m_dirLister; + QStringList m_paths; +}; class MusicScanner : public QObject { @@ -125,8 +140,7 @@ private slots: QVariantList m_filesToDelete; quint32 m_batchsize; - QPointer< DirLister > m_dirLister; - QThread* m_dirListerThreadController; + DirListerThreadController* m_dirListerThreadController; }; #endif diff --git a/src/libtomahawk/infosystem/InfoSystem.cpp b/src/libtomahawk/infosystem/InfoSystem.cpp index f49857b2d6..0ba7275350 100644 --- a/src/libtomahawk/infosystem/InfoSystem.cpp +++ b/src/libtomahawk/infosystem/InfoSystem.cpp @@ -123,7 +123,7 @@ InfoSystem::~InfoSystem() { tDebug() << Q_FUNC_INFO << " beginning"; - if ( m_infoSystemWorkerThreadController->worker() ) + if ( m_infoSystemWorkerThreadController ) { m_infoSystemWorkerThreadController->quit(); m_infoSystemWorkerThreadController->wait( 60000 ); @@ -133,7 +133,7 @@ InfoSystem::~InfoSystem() } tDebug() << Q_FUNC_INFO << " done deleting worker"; - if( m_infoSystemCacheThreadController->cache() ) + if( m_infoSystemCacheThreadController ) { m_infoSystemCacheThreadController->quit(); m_infoSystemCacheThreadController->wait( 60000 ); From e20d8c955eb5645ec6f134b3de576f101a8721b3 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Thu, 17 Jan 2013 01:16:43 +0100 Subject: [PATCH 285/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_bg.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_bn_IN.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_ca.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_cs.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_da.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_de.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_el.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_en.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_es.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_fi.ts | 123 +++++++++++++++++++++++------------------ lang/tomahawk_fr.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_gl.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_hi_IN.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_hu.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_it.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_ja.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_lt.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_pl.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_pt_BR.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_ru.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_sv.ts | 123 +++++++++++++++++++++++------------------ lang/tomahawk_tr.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_zh_CN.ts | 121 ++++++++++++++++++++++------------------ lang/tomahawk_zh_TW.ts | 121 ++++++++++++++++++++++------------------ 25 files changed, 1702 insertions(+), 1327 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 00a599c449..64c89b4153 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -107,13 +107,13 @@ connect and stream from you? - + &Listen Privately &إستمع بخصوصية - + &Listen Publicly &إستمع علنا @@ -193,57 +193,62 @@ connect and stream from you? زوم - + + Enter Full Screen + + + + Hide Menu Bar إخفي شريط القائمة - + Diagnostics... تشخيص... - + About &Tomahawk... عن &توماهوك... - + &Legal Information... معلومات &قانونية... - + &View Logfile - + Check For Updates... تحقق من التحديثات... - + &Controls &ضوابط - + &Settings إ&عدادات - + &Help &مساعدة - + &Window &نافذة - + Main Menu القائمة الرئيسية @@ -326,37 +331,37 @@ connect and stream from you? AudioControls - + Shuffle خلط - + Repeat إعادة - + Time Elapsed الوقت المنقضي - + Time Remaining الوقت المتبقي - + Playing from %1 يتم الاستماع من %1 - + Share شارك - + Love أحب @@ -3361,156 +3366,166 @@ enter the displayed PIN number here: توماهوك - + Back إلى الوراء - + Go back one page العودة صفحة واحدة إلى الوراء - + Forward تقدم - + Go forward one page تقدم صفحة واحدة - - + + Hide Menu Bar إخفي شريط القائمة - - + + Show Menu Bar أظهر شريط القائمة - + Search for any artist, album or song... - + &Main Menu ال&قائمة الرئيسية - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error خطأ XSPF - + This is not a valid XSPF playlist. قائمة الأغاني XSPF هذه ليست صالحة. - + Failed to save tracks فشل في حفظ الأغاني - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. بعض الأغاني في قائمة الأغاني لا تحتوي على إسم الفنان أو إسم الأغنية. هذه الأغاني سوف تتجاهل. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. تأكد أن لديك خلفية فونون المناسبة والإضافات المطلوبة مثبتة. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. عذرا، هناك مشكلة في الوصول إلى جهاز الصوت أو الأغنية المطلوب، سوف يتم تخطي الأغنية الحالية. - + Station إذاعة - + Create New Station إنشاء قائمة أغاني جديدة - + Name: الاسم: - + Playlist قائمة الأغاني - + Automatic Playlist قائمة أغاني أوتوماتيكية - + Pause تعليق - + &Play &إستمع - + Authentication Error خطأ في المصادقة - + Error connecting to SIP: Authentication failed! خطأ في الاتصال بسيب (SIP): فشلت المصادقة! - + %1 by %2 track, artist name %1 من قبل %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: شكر لكل من: - + About Tomahawk عن توماهوك @@ -3564,7 +3579,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. عذراً، ترشيحك "%1" لم يطابق أي نتائج. diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 70d1d16ba7..98e832eaa8 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately &Слушай самостоятелно - + &Listen Publicly &Слушай публично @@ -192,57 +192,62 @@ connect and stream from you? Увеличи - + + Enter Full Screen + + + + Hide Menu Bar Скрий лентата на менюто - + Diagnostics... Диагностика... - + About &Tomahawk... За &Tomahawk... - + &Legal Information... &Правна информация - + &View Logfile &Виж лог-файлът - + Check For Updates... Провери за обновления - + &Controls &Контроли - + &Settings &Настройки - + &Help &Помощ - + &Window &Прозорец - + Main Menu Главно меню @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Разбъркано - + Repeat Повтори - + Time Elapsed Изминало време - + Time Remaining Оставащо време - + Playing from %1 Изпълнявам от %1 - + Share Сподели - + Love Харесай @@ -3375,159 +3380,169 @@ enter the displayed PIN number here: Tomahawk - + Back Назад - + Go back one page Една страница назад - + Forward Напред - + Go forward one page Една страница напред - - + + Hide Menu Bar Скрий лентата с менюто - - + + Show Menu Bar Покажи лентата с менюто - + Search for any artist, album or song... Търси всеки Артист, Албум или Песен... - + &Main Menu &Основно меню - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF Грешка - + This is not a valid XSPF playlist. Това не е валиден XSPF списък - + Failed to save tracks Не мога да запазя списъкът с песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Някои от песните в този списък нямат артист и заглавие. Те ще бъдат игнорирани. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена. Моля, увери се, че са инсталирани подходящ Phonon и приставки. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Съжалявам. Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната. - + Station Станция - + Create New Station Създай нова станция - + Name: Име: - + Playlist Списък - + Automatic Playlist Автоматично-генериран списък - + Pause Пауза - + &Play &Възпроизвеждане - + Authentication Error Грешка при удостоверяване - + Error connecting to SIP: Authentication failed! Грешка при свързване: Неуспешно удостоверяване! - + %1 by %2 track, artist name %1 от %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Всички права - запазени. 2010 - 2013 - + Thanks to: Благодарности на: - + About Tomahawk Относно Tomahawk @@ -3581,7 +3596,7 @@ enter the displayed PIN number here: TrackView - + 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 4a9181e4a1..3e0046440a 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 94e0b5d21c..7d1b345ebc 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately &Escolta privada - + &Listen Publicly &Escolta Pública @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Mescla - + Repeat Repeteix - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3359,156 +3364,166 @@ introduïu el PIN aquí: Tomahawk - + Back Enrere - + Go back one page Retrocedeix una pàgina - + Forward Endavant - + Go forward one page Avança una pàgina - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Error XSPF - + This is not a valid XSPF playlist. No és una llista XSPF vàlida. - + Failed to save tracks Error en desar les cançons - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat. - + Station Emissora - + Create New Station Crea una Nova Emissora - + Name: Nom: - + Playlist Llista - + Automatic Playlist Llista Automàtica - + Pause Pausa - + &Play - + Authentication Error Error d'autentificació - + Error connecting to SIP: Authentication failed! S'ha produït un error connectant-se a SIP: Ha fallat autentificant! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Gràcies a: - + About Tomahawk Quant a Tomahawk @@ -3562,7 +3577,7 @@ introduïu el PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. El filtre '%1' no ha obtingut cap resultat. diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index 57738be9a3..c92156d8dc 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -107,13 +107,13 @@ se s vámi spojil? - + &Listen Privately Zapnout režim &sokromého poslechu - + &Listen Publicly Opustit režim so&kromého poslechu @@ -193,57 +193,62 @@ se s vámi spojil? Zvětšení - + + Enter Full Screen + + + + Hide Menu Bar Skrýt pruh s hlavní nabídkou - + Diagnostics... Diagnostika... - + About &Tomahawk... &O programu Tomahawk... - + &Legal Information... &Právní informace... - + &View Logfile &Zobrazit soubor se zápisem - + Check For Updates... Prověřit, zda již je novější vydání... - + &Controls &Ovládání - + &Settings Na&stavení - + &Help Nápo&věda - + &Window &Okno - + Main Menu Hlavní nabídka @@ -326,37 +331,37 @@ se s vámi spojil? AudioControls - + Shuffle Zamíchat - + Repeat Opakovat - + Time Elapsed Uběhlý čas - + Time Remaining Zbývající čas - + Playing from %1 Přehrávání od %1 - + Share Sdílet - + Love Mít rád @@ -3360,156 +3365,166 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: Tomahawk - + Back Zpět - + Go back one page Jít o jednu stranu zpět - + Forward Vpřed - + Go forward one page Jít o jednu stranu vpřed - - + + Hide Menu Bar Skrýt pruh s hlavní nabídkou - - + + Show Menu Bar Ukázat pruh s hlavní nabídkou - + Search for any artist, album or song... Hledat umělce, album nebo píseň... - + &Main Menu Hlavní &nabídka - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Chyba XSPF - + This is not a valid XSPF playlist. Toto není platný seznam skladeb XSPF. - + Failed to save tracks Nepodařilo se uložit skladby - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Některé skladby v seznamu skladeb neobsahují ani umělce ani název. Tyto budou přehlíženy. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. Ujistěte se, že máte nainstalováno vhodné jádro Phonona potřebné přídavné moduly. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Je nám to líto, ale Tomahawk nemůže přistupovat k vašemu zvukovému zařízení nebo k žádané skladbě, a proto se nynější skladba přeskakuje. - + Station Stanice - + Create New Station Vytvořit novou stanici - + Name: Název: - + Playlist Seznam skladeb - + Automatic Playlist Automatický seznam skladeb - + Pause Pozastavit - + &Play &Přehrát - + Authentication Error Chyba při ověřování - + Error connecting to SIP: Authentication failed! Chyba spojení se SIP: Potvrzení pravosti se nezdařilo! - + %1 by %2 track, artist name %1 od %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Autorské právo 2010 - 2013 - + Thanks to: Poděkování: - + About Tomahawk O Tomahawku @@ -3563,7 +3578,7 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: TrackView - + Sorry, your filter '%1' did not match any results. Promiňte, vašemu filtru '%1' se nepodařilo najít žádné výsledky. diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts index 8db2f03ddc..cc3e7d1c28 100644 --- a/lang/tomahawk_da.ts +++ b/lang/tomahawk_da.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately &Lyt Privat - + &Listen Publicly &Lyt Offentligt @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Bland - + Repeat Gentag - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3352,156 +3357,166 @@ enter the displayed PIN number here: Tomahawk - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF Fejl - + This is not a valid XSPF playlist. Dette er ikke en gyldig XSPF spilleliste - + Failed to save tracks Fejlede i at gemme numrene - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station Lav Ny Station - + Name: Navn: - + Playlist - + Automatic Playlist - + Pause Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3555,7 +3570,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index c19188b374..1dc10034dc 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -107,13 +107,13 @@ erlauben sich mit dir zu verbinden? - + &Listen Privately &Privat Modus aktivieren - + &Listen Publicly &Privat Modus verlassen @@ -193,57 +193,62 @@ erlauben sich mit dir zu verbinden? Zoom - + + Enter Full Screen + + + + Hide Menu Bar Menüleiste ausblenden - + Diagnostics... Diagnose... - + About &Tomahawk... &Über Tomahawk... - + &Legal Information... &Rechtliche Informationen... - + &View Logfile &Log anzeigen - + Check For Updates... Nach Updates suchen... - + &Controls S&teuerung - + &Settings &Einstellungen - + &Help &Hilfe - + &Window &Fenster - + Main Menu Hauptmenü @@ -326,37 +331,37 @@ erlauben sich mit dir zu verbinden? AudioControls - + Shuffle Zufall - + Repeat Wiederholen - + Time Elapsed Abgelaufene Zeit - + Time Remaining Verbleibende Zeit - + Playing from %1 Wiedergabe von %1 - + Share Teilen - + Love Lieben @@ -3358,156 +3363,166 @@ Tomahawk auf Twitter's Website authentifiziert hast: Tomahawk - + Back Zurück - + Go back one page Gehe eine Seite zurück - + Forward Vorwärts - + Go forward one page Gehe eine Seite vorwärts - - + + Hide Menu Bar Menüleiste ausblenden - - + + Show Menu Bar Menüleiste einblenden - + Search for any artist, album or song... Suche nach Künstler, Album oder Lied... - + &Main Menu Haupt&menü - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF-Fehler - + This is not a valid XSPF playlist. Dies ist keine gültige XSPF-Playlist. - + Failed to save tracks Konnte Stücke nicht abspeichern - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Einige Stücke in der Playlist enthalten weder Künstler noch Titel. Diese werden ignoriert. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. - + Station Station - + Create New Station Neue Station erstellen - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatische Playlist - + Pause Pause - + &Play Abs&pielen - + Authentication Error Authentifizierungsfehler - + Error connecting to SIP: Authentication failed! Verbindungsfehler mit SIP: Authentifizierung fehlgeschlagen! - + %1 by %2 track, artist name %1 von %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Danke an: - + About Tomahawk Über Tomahawk @@ -3561,7 +3576,7 @@ Tomahawk auf Twitter's Website authentifiziert hast: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index b075636b41..69166c7a39 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately &Ιδιωτική Ακρόαση - + &Listen Publicly &Δημόσια Ακρόαση @@ -192,57 +192,62 @@ connect and stream from you? Μεγέθυνση - + + Enter Full Screen + + + + Hide Menu Bar Απόκρυψη Γραμμής Μενού - + Diagnostics... Διαγνωστικά - + About &Tomahawk... Σχετικά με το &Tomahawk... - + &Legal Information... &Νομικές Πληροφορίες - + &View Logfile - + Check For Updates... Έλεγχος Για Ενημερώσεις - + &Controls &Χειριστήρια - + &Settings &Ρυθμίσεις - + &Help &Βοήθεια - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Τυχαία σειρά - + Repeat Επανάληψη - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3358,156 +3363,166 @@ enter the displayed PIN number here: - + Back Πίσω - + Go back one page Πήγαινε πίσω μία σελίδα - + Forward Μπροστά - + Go forward one page Πήγαινε μπροστά μία σελίδα - - + + Hide Menu Bar Απόκρυψη Γραμμής Μενού - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Σφάλμα XSPF - + This is not a valid XSPF playlist. Αυτή δεν είναι μια έγκυρη λίστα αναπαραγωγής XSPF. - + Failed to save tracks Αποτυχία αποθήκευσης κομματιών. - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Μερικά κομμάτια στην λίστα αναπαραγωγής δεν περιέχουν έναν καλλιτέχνη ή έναν τίτλο. Θα αγνοηθούν. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. Σιγουρευτείτε ότι έχετε εγκαταστήσει ένα κατάλληλο Phonon backend και τα απαιτούμενα πρόσθετα. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Συγγνώμη, υπάρχει ένα πρόβλημα πρόσβασης στην συσκευή ήχου ή στο επιθυμητό κομμάτι, το τρέχον κομμάτι θα παραλειφθεί. - + Station Σταθμός - + Create New Station Δημιουργία Νέου Σταθμού - + Name: Όνομα: - + Playlist Λίστας Αναπαραγωγής - + Automatic Playlist Αυτόματη Λίστα Αναπαραγωγής - + Pause Παύση - + &Play - + Authentication Error Σφάλμα Πιστοποίησης - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 από %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: Χάρη στους: - + About Tomahawk Σχετικά με το Tomahawk @@ -3561,7 +3576,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Συγγνώμη, το φίλτρο «%1» δεν αντιστοίχισε αποτελέσματα. diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 6e76f22549..0200da0afa 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -107,13 +107,13 @@ connect and stream from you? - + &Listen Privately &Listen Privately - + &Listen Publicly &Listen Publicly @@ -193,57 +193,62 @@ connect and stream from you? Zoom - + + Enter Full Screen + Enter Full Screen + + + Hide Menu Bar Hide Menu Bar - + Diagnostics... Diagnostics... - + About &Tomahawk... About &Tomahawk... - + &Legal Information... &Legal Information... - + &View Logfile &View Logfile - + Check For Updates... Check For Updates... - + &Controls &Controls - + &Settings &Settings - + &Help &Help - + &Window &Window - + Main Menu Main Menu @@ -326,37 +331,37 @@ connect and stream from you? AudioControls - + Shuffle Shuffle - + Repeat Repeat - + Time Elapsed Time Elapsed - + Time Remaining Time Remaining - + Playing from %1 Playing from %1 - + Share Share - + Love Love @@ -3363,156 +3368,166 @@ enter the displayed PIN number here: Tomahawk - + Back Back - + Go back one page Go back one page - + Forward Forward - + Go forward one page Go forward one page - - + + Hide Menu Bar Hide Menu Bar - - + + Show Menu Bar Show Menu Bar - + Search for any artist, album or song... Search for any artist, album or song... - + &Main Menu &Main Menu - + + Exit Full Screen + Exit Full Screen + + + + Enter Full Screen + Enter Full Screen + + + XSPF Error XSPF Error - + This is not a valid XSPF playlist. This is not a valid XSPF playlist. - + Failed to save tracks Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Station - + Create New Station Create New Station - + Name: Name: - + Playlist Playlist - + Automatic Playlist Automatic Playlist - + Pause Pause - + &Play &Play - + Authentication Error Authentication Error - + Error connecting to SIP: Authentication failed! Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Thanks to: - + About Tomahawk About Tomahawk @@ -3566,7 +3581,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 4cff1da2d6..8aeb6e8a15 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -107,13 +107,13 @@ conectarse a usted y transmitir música? - + &Listen Privately &Escuchar en privado - + &Listen Publicly &Escuchar públicamente @@ -193,57 +193,62 @@ conectarse a usted y transmitir música? Zoom - + + Enter Full Screen + + + + Hide Menu Bar Ocultar barra de menús - + Diagnostics... Diagnósticos… - + About &Tomahawk... Acerca de &Tomahawk - + &Legal Information... Información &legal - + &View Logfile &Ver archivo de registro - + Check For Updates... Buscar actualizaciones… - + &Controls &Controles - + &Settings &Configuración - + &Help &Ayuda - + &Window &Ventana - + Main Menu Menú principal @@ -326,37 +331,37 @@ conectarse a usted y transmitir música? AudioControls - + Shuffle Aleatorio - + Repeat Repetir - + Time Elapsed Tiempo transcurrido - + Time Remaining Tiempo restante - + Playing from %1 Reproduciendo de %1 - + Share Compartir - + Love Favorito @@ -3363,156 +3368,166 @@ introduzca su número PIN aquí: Tomahawk - + Back Atrás - + Go back one page Ir atrás una página - + Forward Adelante - + Go forward one page Ir adelante una página - - + + Hide Menu Bar Ocultar barra de menús - - + + Show Menu Bar Mostrar barra de menús - + Search for any artist, album or song... Buscar un artista, álbum o pista… - + &Main Menu &Menú principal - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Error XSPF - + This is not a valid XSPF playlist. Esta no es una lista de reproducción XSPF válida. - + Failed to save tracks Fallo al guardar pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Se ha producido un error al acceder al dispostivo de audio o a la pista deseada. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Se ha producido un error al acceder al dispostivo de audio o a la pista deseado y se va saltar. - + Station Estación - + Create New Station Crear estación nueva - + Name: Nombre: - + Playlist Lista de reproducción - + Automatic Playlist Lista de reproducción automática - + Pause Pausar - + &Play &Reproducir - + Authentication Error Error de autenticación - + Error connecting to SIP: Authentication failed! Error conectando al SIP: ¡Autenticación fallida! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Gracias a: - + About Tomahawk Acerca de Tomahawk @@ -3566,7 +3581,7 @@ introduzca su número PIN aquí: TrackView - + Sorry, your filter '%1' did not match any results. Lo siento, tu filtro '%1' no ha encontrado resultados. diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 9b65fa120e..9ec4f07728 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -107,13 +107,13 @@ yhdistää ja toistaa sinulta virtaa? - + &Listen Privately &Kuuntele yksityisesti - + &Listen Publicly &Kuuntele julkisesti @@ -193,57 +193,62 @@ yhdistää ja toistaa sinulta virtaa? Zoomaa - + + Enter Full Screen + Siirry koko näyttöön + + + Hide Menu Bar Piilota valikkorivi - + Diagnostics... Diagnostiikka... - + About &Tomahawk... Tietoa &Tomahawkista... - + &Legal Information... Lakitiet&oa... - + &View Logfile &Näytä lokitiedosto - + Check For Updates... Tarkista päivitykset... - + &Controls &Ohjaus - + &Settings &Asetukset - + &Help O&hje - + &Window &Ikkuna - + Main Menu Päävalikko @@ -326,37 +331,37 @@ yhdistää ja toistaa sinulta virtaa? AudioControls - + Shuffle Sekoita - + Repeat Toista - + Time Elapsed Kulunut aika - + Time Remaining Jäljellä oleva aika - + Playing from %1 Soitetaan lähteestä %1 - + Share Jaa - + Love Tykkää @@ -1385,7 +1390,7 @@ yhdistää ja toistaa sinulta virtaa? Script Resolver Error: %1 %2 %3 %4 - + Skriptiselvittimen virhe: %1 %2 %3 %4 @@ -3366,156 +3371,166 @@ anna siellä näytetty PIN-koodi tähän: Tomahawk - + Back Takaisin - + Go back one page Mene yksi sivu takaisin - + Forward Eteenpäin - + Go forward one page Mene yksi sivu eteenpäin - - + + Hide Menu Bar Piilota valikkorivi - - + + Show Menu Bar Näytä valikkorivi - + Search for any artist, album or song... Etsi mitä tahansa artistia, albumia tai kappaletta... - + &Main Menu &Päävalikko - + + Exit Full Screen + Poistu koko näytöstä + + + + Enter Full Screen + Siirry koko näyttöön + + + XSPF Error XSPF-virhe - + This is not a valid XSPF playlist. Tämä ei ole kelvollinen XSPF-soittolista. - + Failed to save tracks Kappaleiden tallentaminen epäonnistui - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Joillakin soittolistan kappaleilla ei ole artistia ja nimeä. Ne jätetään huomiotta. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. Varmista, että sopiva Phononin taustaosa ja vaaditut liitännäiset on asennettu. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Valitettavasti äänilaitteen tai halutun kappaleen kanssa on ongelmia ja nykyinen kappale ohitetaan. - + Station Asema - + Create New Station Luo uusi asema - + Name: Nimi: - + Playlist Soittolista - + Automatic Playlist Automaattinen soittolista - + Pause Tauko - + &Play &Soita - + Authentication Error Tunnistautumisvirhe - + Error connecting to SIP: Authentication failed! Virhe yhdistettäessä SIPiin: tunnistautuminen epäonnistui! - + %1 by %2 track, artist name %1 artistilta %2 - + %1 - %2 current track, some window title %1 – %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010–2013 - + Thanks to: Kiitokset: - + About Tomahawk Tietoa Tomahawkista @@ -3569,7 +3584,7 @@ anna siellä näytetty PIN-koodi tähän: TrackView - + 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 4c9f87e311..77422be2a1 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -107,13 +107,13 @@ de se connecter et streamer de vous? - + &Listen Privately &Ecouter en privé - + &Listen Publicly &Ecouter publiquement @@ -193,57 +193,62 @@ de se connecter et streamer de vous? Zoom - + + Enter Full Screen + + + + Hide Menu Bar Masquer la barre de menu - + Diagnostics... Diagnostics... - + About &Tomahawk... A propos de &Tomahawk... - + &Legal Information... &Informations Légales... - + &View Logfile - + Check For Updates... Rechercher une mis à jour... - + &Controls &Contrôles - + &Settings &Paramètres - + &Help &Aide - + &Window &Fenêtre - + Main Menu Menu Principal @@ -326,37 +331,37 @@ de se connecter et streamer de vous? AudioControls - + Shuffle Lecture Aléatoire - + Repeat Répéter - + Time Elapsed Durée Ecoulé - + Time Remaining Durée Restante - + Playing from %1 - + Share Partager - + Love Favori @@ -3360,156 +3365,166 @@ saisissez le numéro PIN ici : Tomahawk - + Back Retour - + Go back one page Reculer d'une page - + Forward Avancer - + Go forward one page Avancer d'une page - - + + Hide Menu Bar Masquer la barre de menu - - + + Show Menu Bar Afficher la barre de menu - + Search for any artist, album or song... Chercher un artiste, un album, ou un morceau - + &Main Menu &Menu Principal - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Erreur XSPF - + This is not a valid XSPF playlist. Ceci n'est pas une liste de lecture XSPF valide. - + Failed to save tracks Échec de la sauvegarde des pistes - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sautée. Vérifiez que vous avez un backend Phonon et les plugins requis installés. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours , celle-ci va être sautée. - + Station Station - + Create New Station Créer une nouvelle station - + Name: Nom : - + Playlist Liste de lecture - + Automatic Playlist Liste de lecture automatique - + Pause Pause - + &Play &Lire - + Authentication Error Erreur d'authentification - + Error connecting to SIP: Authentication failed! Erreur de connexion SIP : échec de l'authentification ! - + %1 by %2 track, artist name %1 par %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Droit d'auteur 2010 - 2013 - + Thanks to: Merci a: - + About Tomahawk A propos de Tomahawk @@ -3563,7 +3578,7 @@ saisissez le numéro PIN ici : TrackView - + Sorry, your filter '%1' did not match any results. Désolé, votre filtre '%1' ne correspond à aucun résultat. diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index ab92497987..b790f22d38 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately &Escoitar en privado - + &Listen Publicly &Escoitar en público @@ -192,57 +192,62 @@ connect and stream from you? Ampliación - + + Enter Full Screen + + + + Hide Menu Bar Agochar a barra de menú - + Diagnostics... Diagnóstico... - + About &Tomahawk... Acerca de &Tomahawk... - + &Legal Information... &Información legal... - + &View Logfile &Ver o ficheiro de rexistro - + Check For Updates... Buscar actualizacións... - + &Controls &Controis - + &Settings &Configuración - + &Help &Axuda - + &Window &Xanela - + Main Menu Menú principal @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Ao chou - + Repeat Repetir - + Time Elapsed Tempo transcorrido - + Time Remaining Tempo que falta - + Playing from %1 Reproducindo de %1 - + Share Compartir - + Love gusta @@ -3360,157 +3365,167 @@ enter the displayed PIN number here: Tomahawk - + Back Atrás - + Go back one page Ir unha páxina atrás - + Forward Adiante - + Go forward one page Ir unha páxina adiante - - + + Hide Menu Bar Agochar a barra de menú - - + + Show Menu Bar Mostrar a barra de menú - + Search for any artist, album or song... Buscar a calquera artista, álbum ou canción... - + &Main Menu Menú &principal - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Erro XSPF - + This is not a valid XSPF playlist. Esta non é unha lista de XSPF válida. - + Failed to save tracks Fallou o gardado de pistas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algunhas pistas na lista de reprodución non indican nin artista nin o título. Ignoraranse. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. Asegúrate de ter o motor Phonon e os engadidos necesarios instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Hai un problema accedendo ao teu dispositivo de son ou a pista que quere así que se omitirá. - + Station - + Create New Station Crear unha nova emisión - + Name: Nome: - + Playlist Lista de reprodución - + Automatic Playlist Lista de reprodución automática - + Pause Pausa - + &Play &Reproducir - + Authentication Error Erro de autenticación - + Error connecting to SIP: Authentication failed! Erro conectándose a SIP: Fallou a autenticación! - + %1 by %2 track, artist name %1 por %2 - + %1 - %2 current track, some window title %1.- %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Agradecementos: - + About Tomahawk Acerca de Tomahawk @@ -3564,7 +3579,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. O filtro «%1» non dá ningún resultado. diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index 224f6b4532..e6947caf6c 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index e3999b62c7..28c1f86711 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately - + &Listen Publicly @@ -192,57 +192,62 @@ connect and stream from you? Zoom - + + Enter Full Screen + + + + Hide Menu Bar Menü bar elrejtése - + Diagnostics... Diagnosztizálás... - + About &Tomahawk... &Tomahawkról - + &Legal Information... Jogi információk - + &View Logfile - + Check For Updates... Frissítések ellenőrzése - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle - + Repeat Ismétlés - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: Tomahawk - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF hiba - + This is not a valid XSPF playlist. Nem érvényes XSPF lejátszólista. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Rádióállomás - + Create New Station - + Name: - + Playlist Lejátszólista - + Automatic Playlist Automatikus lejátszólista - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk Tomahawkról @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index ad69a887c0..c78cbd386e 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately Asco&lta in privato - + &Listen Publicly Asco&lta pubblicamente @@ -192,57 +192,62 @@ connect and stream from you? Zoom - + + Enter Full Screen + + + + Hide Menu Bar Nascondi barra menu - + Diagnostics... Diagnostica... - + About &Tomahawk... Riguardo &Tomahawk... - + &Legal Information... Informazioni &legali... - + &View Logfile &Mostra file di log - + Check For Updates... Controlla per aggiornamenti... - + &Controls &Controlli - + &Settings &Impostazioni - + &Help &Aiuto - + &Window &Finestra - + Main Menu Menù principale @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Riproduzione casuale - + Repeat Ripeti - + Time Elapsed Tempo trascorso - + Time Remaining Tempo rimanente - + Playing from %1 Riproducendo da %1 - + Share Condividi - + Love Preferito @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: Tomahawk - + Back Indietro - + Go back one page Vai indietro di una pagina - + Forward Avanti - + Go forward one page Vai avanti di una pagina - - + + Hide Menu Bar Nascondi barra menu - - + + Show Menu Bar Mostra barra menu - + Search for any artist, album or song... Cerca qualunque artista, album o canzone... - + &Main Menu &Menu principale - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Errore XSPF - + This is not a valid XSPF playlist. Questa non è una valida playlist XSPF. - + Failed to save tracks Errore nel salvare le tracce - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Alcune tracce nella playlist non contengono l'artista e il titolo. Verrano ignorate. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. Assicurati di avere le giuste librerie Phonon e i plugin necessari installati. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Spiacente, c'è un problema nell'accedere al tuo dispositivo audio o alla traccia desiderata, questa traccia verrà saltata. - + Station Stazione - + Create New Station Crea una nuova stazione - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist automatica - + Pause Pausa - + &Play Ri&produci - + Authentication Error Errore nell'autenticazione - + Error connecting to SIP: Authentication failed! Errore di connessione al SIP: autenticazione fallita! - + %1 by %2 track, artist name %1 di %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Grazie a: - + About Tomahawk Info su Tomahawk @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Spiacente, il tuo filtro %1 non ha trovato nessun risultato. diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 8616dd0807..4e85a401d1 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately 非公開で聴く - + &Listen Publicly 公開で聴く @@ -192,57 +192,62 @@ connect and stream from you? ズーム - + + Enter Full Screen + + + + Hide Menu Bar メニューバーを隠す - + Diagnostics... 診断... - + About &Tomahawk... Tomahawk について... - + &Legal Information... 法定情報... - + &View Logfile - + Check For Updates... 更新を確認... - + &Controls 制御 - + &Settings 設定 - + &Help ヘルプ - + &Window ウインドウ - + Main Menu メインメニュー @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle シャッフル - + Repeat リピート - + Time Elapsed 再生時間 - + Time Remaining 残り時間 - + Playing from %1 %1から再生中 - + Share シェアー - + Love Love @@ -3363,156 +3368,166 @@ enter the displayed PIN number here: Tomahawk - + Back プレイリスト - + Go back one page 前のページ - + Forward 次へ - + Go forward one page 次のページ - - + + Hide Menu Bar メニューバーを隠す - - + + Show Menu Bar メニューバーを表示 - + Search for any artist, album or song... アーティスト、又はアルバムや曲で検索して下さい - + &Main Menu メインメニュー - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPFエラー - + This is not a valid XSPF playlist. このプレイリストは有利なXSPFプレイリストではありません。 - + Failed to save tracks トラックの保存に失敗しました。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. プレイリストにアーティストもタイトルの無いトラックが見つかりました。この項目は無視されます。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。適しているPhononのバックエンドを確認の上、必須プラグインのインストールを確認して下さい。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. オーディオデバイス、又は要求トラックをアクセスすることができませんでしたので、このトラックは無視されます。 - + Station ステーション - + Create New Station 新規ステーションを作成 - + Name: 名前: - + Playlist プレイリスト - + Automatic Playlist 自動プレイリスト - + Pause 一時停止 - + &Play 再生 - + Authentication Error 認証エラー - + Error connecting to SIP: Authentication failed! SIPへの接続エラー: 認証が失敗しました! - + %1 by %2 track, artist name %1 by %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Thanks to: - + About Tomahawk Tomahawkについて @@ -3566,7 +3581,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. %1に一致する結果は見つかりませんでした。 diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index ad22d8d982..13e954301c 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately K&lausytis privačiai - + &Listen Publicly K&lausytis viešai @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Maišyti - + Repeat Kartoti - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: Tomahawk - + Back Atgal - + Go back one page Grįžti vienu puslapiu atgal - + Forward Pirmyn - + Go forward one page Eiti vienu puslapiu pirmyn - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF klaida - + This is not a valid XSPF playlist. - + Failed to save tracks Nepavyko išsaugoti takelių - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station Stotis - + Create New Station Sukurti naują stotį - + Name: Pavadinimas: - + Playlist Grojaraštis - + Automatic Playlist Automatinis grojaraštis - + Pause Pristabdyti - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Autorinės teisės 2010 - 2013 - + Thanks to: Dėkojame: - + About Tomahawk Apie Tomahawk @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index 538072e27a..ac1e2ce137 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -107,13 +107,13 @@ połączyć się i strumieniować od ciebie? - + &Listen Privately &Słuchaj Prywatnie - + &Listen Publicly &Słuchaj Publicznie @@ -193,57 +193,62 @@ połączyć się i strumieniować od ciebie? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -326,37 +331,37 @@ połączyć się i strumieniować od ciebie? AudioControls - + Shuffle Losowo - + Repeat Powtarzaj - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love Lubię @@ -3360,156 +3365,166 @@ wprowadź pokazany numer PIN tutaj: Tomahawk - + Back Wstecz - + Go back one page Cofnij o jedną stronę - + Forward Naprzód - + Go forward one page Przejdź naprzód o jedną stronę - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Błąd XSPF - + This is not a valid XSPF playlist. To nie jest poprawna lista XSPF. - + Failed to save tracks Nie udało się zapisać utworów - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Przepraszamy, wystąpił problem z połączeniem z twoim urządzeniem audio lub z żądanym utworem, zostanie on pominięty. - + Station - + Create New Station Utwórz Nową Stację - + Name: Nazwa: - + Playlist - + Automatic Playlist - + Pause Pauza - + &Play - + Authentication Error Błąd uwierzytelniania - + Error connecting to SIP: Authentication failed! Błąd łączenia z SIP: Uwierzytelnienie nieudane! - + %1 by %2 track, artist name %1 wykonawcy %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Podziękowania dla: - + About Tomahawk O Tomahawku @@ -3563,7 +3578,7 @@ wprowadź pokazany numer PIN tutaj: TrackView - + Sorry, your filter '%1' did not match any results. Przepraszamy, twój filtr '%1' nie dopasował żadnych wyników. diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index 30835f57fd..a2d063f8c6 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -107,13 +107,13 @@ se conecte e faça o stream de você? - + &Listen Privately &Ouvir Privadamente - + &Listen Publicly &Ouvir Publicamente @@ -193,57 +193,62 @@ se conecte e faça o stream de você? Zoom - + + Enter Full Screen + + + + Hide Menu Bar Esconder barra de menu - + Diagnostics... Diagnósticos... - + About &Tomahawk... Sobre &Tomahawk... - + &Legal Information... Informação &legal... - + &View Logfile - + Check For Updates... Verificar atualizações... - + &Controls &Controles - + &Settings C&onfigurações - + &Help &Ajuda - + &Window &Janela - + Main Menu Menu principal @@ -326,37 +331,37 @@ se conecte e faça o stream de você? AudioControls - + Shuffle Shuffle - + Repeat Repetir - + Time Elapsed Tempo decorrido - + Time Remaining Tempo restante - + Playing from %1 Reproduzindo de %1 - + Share Compartilhar - + Love Gostar @@ -3360,156 +3365,166 @@ colocar o número PIN mostrado aqui: Tomahawk - + Back Voltar - + Go back one page Voltar uma página - + Forward Avançar - + Go forward one page Avançar uma página - - + + Hide Menu Bar Esconder barra de menu - - + + Show Menu Bar Mostrar barra de menu - + Search for any artist, album or song... Pesquisar por qualquer artista, álbum ou música... - + &Main Menu &Menu principal - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Erro de XSPF - + This is not a valid XSPF playlist. Esta não é uma lista de reprodução XSPF válida. - + Failed to save tracks Falha ao salvar faixas - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. Certifique-se de ter um backend do Phonon adequado e os plugins necessários instalados. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Desculpe, há um problema ao acessar sua placa de áudio ou a faixa desejada, a faixa atual será ignorada. - + Station Estação - + Create New Station Criar uma nova estação - + Name: Nome: - + Playlist Playlist - + Automatic Playlist Playlist Automática - + Pause PIN do Twitter - + &Play Re&produzir - + Authentication Error Erro de autenticação - + Error connecting to SIP: Authentication failed! Erro ao conectar ao SIP: Falha de autenticação! - + %1 by %2 track, artist name %1 de %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Agradecimentos: - + About Tomahawk Sobre o Tomahawk @@ -3563,7 +3578,7 @@ colocar o número PIN mostrado aqui: TrackView - + Sorry, your filter '%1' did not match any results. Desculpe, o seu filtro '%1' não encontreou nenhum resultado. diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index cfe7d28b59..8986852080 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -108,13 +108,13 @@ connect and stream from you? - + &Listen Privately &Listen Privately - + &Listen Publicly &Listen Publicly @@ -196,57 +196,62 @@ connect and stream from you? Увеличить - + + Enter Full Screen + + + + Hide Menu Bar Спрятать Строку Меню - + Diagnostics... Диагностика - + About &Tomahawk... О &Tomahawk... - + &Legal Information... &Юридическая Информация - + &View Logfile &Показать Логи - + Check For Updates... Проверить Обновление... - + &Controls &Управление - + &Settings &Настройки - + &Help &Помощь - + &Window &Окно - + Main Menu Главное меню @@ -329,37 +334,37 @@ connect and stream from you? AudioControls - + Shuffle Случаная - + Repeat Повторять - + Time Elapsed Прошедшее время - + Time Remaining Оставшееся время - + Playing from %1 Воспроизводит из %1 - + Share Поделиться - + Love Любимая @@ -3363,156 +3368,166 @@ enter the displayed PIN number here: Tomahawk - + Back Назад - + Go back one page Перейти на предыдущую страницу - + Forward Вперед - + Go forward one page Перейдите на следующую страницу - - + + Hide Menu Bar Спрятать Строку Меню - - + + Show Menu Bar Показать Строку Меню - + Search for any artist, album or song... Поиск любого исполнителя, альбома или песни ... - + &Main Menu &Главное меню - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error Ошибка XSPF - + This is not a valid XSPF playlist. Это не является допустимым XSPF плейлистом. - + Failed to save tracks Не удалось сохранить песни - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Некоторые песни в плейлисте не содержат исполнителя и название. Они будут проигнорированы. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. Убедитесь, что у вас есть подходящий Phonon backend и необходимые плагины установлены. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. К сожалению, есть проблемы с доступом к аудио устройству или данной песне, текущая песня будет пропущена. - + Station Станция - + Create New Station Создать Новую Станцию - + Name: Имя: - + Playlist Плейлист - + Automatic Playlist Автоматический Плейлист - + Pause Пауза - + &Play &Играть - + Authentication Error Ошибка авторизации - + Error connecting to SIP: Authentication failed! Ошибка соединения с SIP: Ошибка авторизации! - + %1 by %2 track, artist name %1 %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Авторское право 2010 - 2013 - + Thanks to: Благодарность - + About Tomahawk О Tomahawk @@ -3566,7 +3581,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. Ваш поиск '%1' недал результатов. diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 35b392709f..7039f947b3 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -107,13 +107,13 @@ ansluta och strömma från dig? - + &Listen Privately &Lyssna privat - + &Listen Publicly &Lyssna publikt @@ -193,57 +193,62 @@ ansluta och strömma från dig? Zooma - + + Enter Full Screen + Fullskärmläge + + + Hide Menu Bar Göm Meny - + Diagnostics... Diagnostik... - + About &Tomahawk... Om &Tomahawk... - + &Legal Information... &juridisk information - + &View Logfile &Öppna logfil - + Check For Updates... Leta efter uppdateringar... - + &Controls &Kontroller - + &Settings &Inställningar - + &Help &Hjälp - + &Window &Fönster - + Main Menu Huvudmeny @@ -326,37 +331,37 @@ ansluta och strömma från dig? AudioControls - + Shuffle Blanda - + Repeat Upprepa - + Time Elapsed Förfluten tid - + Time Remaining Tid kvar - + Playing from %1 Spelar från %1 - + Share Dela - + Love Älska @@ -1385,7 +1390,7 @@ ansluta och strömma från dig? Script Resolver Error: %1 %2 %3 %4 - + Skriptfel i resolvern: %1 %2 %3 %4 @@ -3362,156 +3367,166 @@ anger du PIN-koden här: Tomahawk - + Back Tillbaka - + Go back one page Gå tillbaks en sida - + Forward Framåt - + Go forward one page Gå framåt en sida - - + + Hide Menu Bar Göm Menyrad - - + + Show Menu Bar Visa Menyrad - + Search for any artist, album or song... Sök efter valfri artist, album eller låt... - + &Main Menu &Huvudmeny - + + Exit Full Screen + Gå ur fullskärmsläge + + + + Enter Full Screen + Fullskärmsläge + + + XSPF Error XSPF-fel - + This is not a valid XSPF playlist. Detta är inte en giltig XSPF-spellista. - + Failed to save tracks Misslyckades med att spara spår - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. Tyvärr! Det uppstod ett problem med kontakten till ditt ljudkort eller det önskade spåret. Nuvarande spår kommer att hoppas över. Kontrollera att du har en lämplig Phonon-backend och alla nödvändiga plugins installerade - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Tyvärr blev det problem att hitta din ljudenhet eller den valda låten! Nuvarande låt kommer att hoppas över - + Station Station - + Create New Station Skapa ny station - + Name: Namn: - + Playlist Spellista - + Automatic Playlist Automatisk spellista - + Pause Paus - + &Play &Spela - + Authentication Error Autentiseringsfel - + Error connecting to SIP: Authentication failed! Anslutningsfel till SIP: Autentisering misslyckades! - + %1 by %2 track, artist name %1 av %2 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 Copyright 2010 - 2013 - + Thanks to: Tack till: - + About Tomahawk Om Tomahawk @@ -3565,7 +3580,7 @@ anger du PIN-koden här: TrackView - + Sorry, your filter '%1' did not match any results. Entschuldige, dein Filter '%1' erzeugte keine Ergebnisse. diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index ac8a986884..5540fc1922 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately &Gizli Dinle - + &Listen Publicly &Yayınlayarak Dinle @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle Karışık - + Repeat Yenile - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error - + This is not a valid XSPF playlist. - + Failed to save tracks - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: - + Playlist - + Automatic Playlist - + Pause - + &Play - + Authentication Error - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 471cdcc5f2..5dccce63c7 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately 私下收听 - + &Listen Publicly 公开收听 @@ -192,57 +192,62 @@ connect and stream from you? 放大 - + + Enter Full Screen + + + + Hide Menu Bar 隐藏菜单栏 - + Diagnostics... 诊断... - + About &Tomahawk... 关于 Tomahawk... - + &Legal Information... 法律信息... - + &View Logfile 查看日志文件 - + Check For Updates... 检查更新... - + &Controls 控制 - + &Settings 设置 - + &Help 帮助 - + &Window 窗口 - + Main Menu 主菜单 @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle 无序播放 - + Repeat 重复播放 - + Time Elapsed 已播放时间 - + Time Remaining 剩余时间 - + Playing from %1 歌曲来自 %1 - + Share 分享 - + Love 喜欢 @@ -3361,156 +3366,166 @@ enter the displayed PIN number here: Tomahawk - + Back 后退 - + Go back one page 转向上一页 - + Forward 下一个 - + Go forward one page 转向下一页 - - + + Hide Menu Bar 隐藏菜单栏 - - + + Show Menu Bar 显示菜单栏 - + Search for any artist, album or song... 搜索任意艺人,专辑,或歌曲... - + &Main Menu 主菜单 - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF 错误 - + This is not a valid XSPF playlist. 这不是一个合法的 XSPF 播放列表。 - + Failed to save tracks 保存歌曲失败。 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. 播放列表中的一些歌曲缺失艺术家和标题,它们将被忽略。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. 抱歉,访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。请确认你正在使用合适的 Phonon 后端并安装了必要的插件。 - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. 抱歉,在访问音频设备或者指定的歌曲时出错。当前歌曲将被跳过。 - + Station 电台 - + Create New Station 创建新电台 - + Name: 名字: - + Playlist 播放列表 - + Automatic Playlist 自动播放列表 - + Pause 暂停 - + &Play 播放 - + Authentication Error 认证错误 - + Error connecting to SIP: Authentication failed! 连接到SIP 时错误:认证失败! - + %1 by %2 track, artist name %2 的 %1 - + %1 - %2 current track, some window title %1 - %2 - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 版权所有 2010 - 2013 - + Thanks to: 感谢: - + About Tomahawk 关于 Tomahawk @@ -3564,7 +3579,7 @@ enter the displayed PIN number here: TrackView - + 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 0042ef89ed..3f7aaf66f2 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -106,13 +106,13 @@ connect and stream from you? - + &Listen Privately 私下聆聽 - + &Listen Publicly 公開聆聽 @@ -192,57 +192,62 @@ connect and stream from you? - + + Enter Full Screen + + + + Hide Menu Bar - + Diagnostics... - + About &Tomahawk... - + &Legal Information... - + &View Logfile - + Check For Updates... - + &Controls - + &Settings - + &Help - + &Window - + Main Menu @@ -325,37 +330,37 @@ connect and stream from you? AudioControls - + Shuffle 隨機 - + Repeat 重複 - + Time Elapsed - + Time Remaining - + Playing from %1 - + Share - + Love @@ -3350,156 +3355,166 @@ enter the displayed PIN number here: Tomahawk - + Back - + Go back one page - + Forward - + Go forward one page - - + + Hide Menu Bar - - + + Show Menu Bar - + Search for any artist, album or song... - + &Main Menu - + + Exit Full Screen + + + + + Enter Full Screen + + + + XSPF Error XSPF 錯誤 - + This is not a valid XSPF playlist. - + Failed to save tracks 無法儲存曲目 - + Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed. - + Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. - + Station - + Create New Station - + Name: 名稱: - + Playlist - + Automatic Playlist - + Pause 暫停 - + &Play - + Authentication Error 驗證錯誤 - + Error connecting to SIP: Authentication failed! - + %1 by %2 track, artist name - + %1 - %2 current track, some window title - + <h2><b>Tomahawk %1<br/>(%2)</h2> <h2><b>Tomahawk %1<br/>(%2)</h2> - + <h2><b>Tomahawk %1</h2> <h2><b>Tomahawk %1</h2> - + Copyright 2010 - 2013 - + Thanks to: - + About Tomahawk @@ -3553,7 +3568,7 @@ enter the displayed PIN number here: TrackView - + Sorry, your filter '%1' did not match any results. From 09a177ec51d7c0764ac86d9a38e9d2e7d0c47262 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 17 Jan 2013 07:47:17 +0100 Subject: [PATCH 286/310] * Don't crash in StreamConnection without m_iodev. --- src/libtomahawk/network/StreamConnection.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/network/StreamConnection.cpp b/src/libtomahawk/network/StreamConnection.cpp index 470f2cd24d..5ac9db28d1 100644 --- a/src/libtomahawk/network/StreamConnection.cpp +++ b/src/libtomahawk/network/StreamConnection.cpp @@ -215,7 +215,7 @@ StreamConnection::handleMsg( msg_ptr msg ) else if ( msg->payload().startsWith( "doneblock" ) ) { int block = QString( msg->payload() ).mid( 9 ).toInt(); - ((BufferIODevice*)m_iodev.data())->seeked( block ); + ( (BufferIODevice*)m_iodev.data() )->seeked( block ); m_curBlock = block; qDebug() << "Next block is now:" << block; @@ -223,18 +223,21 @@ StreamConnection::handleMsg( msg_ptr msg ) else if ( msg->payload().startsWith( "data" ) ) { m_badded += msg->payload().length() - 4; - ((BufferIODevice*)m_iodev.data())->addData( m_curBlock++, msg->payload().mid( 4 ) ); + ( (BufferIODevice*)m_iodev.data() )->addData( m_curBlock++, msg->payload().mid( 4 ) ); } //qDebug() << Q_FUNC_INFO << "flags" << (int) msg->flags() // << "payload len" << msg->payload().length() // << "written to device so far: " << m_badded; - if ( ((BufferIODevice*)m_iodev.data())->nextEmptyBlock() < 0 ) + if ( !m_iodev || ( (BufferIODevice*)m_iodev.data() )->nextEmptyBlock() < 0 ) { m_allok = true; + // tell our iodev there is no more data to read, no args meaning a success: - ((BufferIODevice*)m_iodev.data())->inputComplete(); + if ( m_iodev ) + ( (BufferIODevice*)m_iodev.data() )->inputComplete(); + shutdown(); } } From 8521f88cb908bdd4801ed42b84087352f898425f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 17 Jan 2013 08:04:55 +0100 Subject: [PATCH 287/310] * Only check iodev when available. --- src/libtomahawk/network/StreamConnection.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/network/StreamConnection.cpp b/src/libtomahawk/network/StreamConnection.cpp index 5ac9db28d1..9f8b4c47bf 100644 --- a/src/libtomahawk/network/StreamConnection.cpp +++ b/src/libtomahawk/network/StreamConnection.cpp @@ -230,13 +230,12 @@ StreamConnection::handleMsg( msg_ptr msg ) // << "payload len" << msg->payload().length() // << "written to device so far: " << m_badded; - if ( !m_iodev || ( (BufferIODevice*)m_iodev.data() )->nextEmptyBlock() < 0 ) + if ( m_iodev && ( (BufferIODevice*)m_iodev.data() )->nextEmptyBlock() < 0 ) { m_allok = true; // tell our iodev there is no more data to read, no args meaning a success: - if ( m_iodev ) - ( (BufferIODevice*)m_iodev.data() )->inputComplete(); + ( (BufferIODevice*)m_iodev.data() )->inputComplete(); shutdown(); } From 3d94dc13e71deb6490ab52bab8472827ce61c323 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Thu, 17 Jan 2013 09:28:18 +0100 Subject: [PATCH 288/310] Fix in-source build --- src/accounts/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index f25969be9c..c73762cf23 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -2,7 +2,7 @@ include(TomahawkAddPlugin) file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") foreach( SUBDIRECTORY ${SUBDIRECTORIES}) - if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}") + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) if(SUBDIRECTORY STREQUAL "xmpp") if( JREEN_FOUND ) add_subdirectory( xmpp ) From e7014caecbf37b99626d76633dc0d127d7570688 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 17 Jan 2013 11:46:17 +0100 Subject: [PATCH 289/310] Fix jumpy scrolling in Account Settings. --- src/CMakeLists.txt | 1 + src/Settings_Accounts.ui | 7 +++- src/libtomahawk/accounts/AccountDelegate.cpp | 8 +---- src/libtomahawk/accounts/AccountDelegate.h | 8 +++++ src/widgets/AccountListView.cpp | 38 ++++++++++++++++++++ src/widgets/AccountListView.h | 38 ++++++++++++++++++++ 6 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 src/widgets/AccountListView.cpp create mode 100644 src/widgets/AccountListView.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 07f014fdbe..3c75fd18a1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -61,6 +61,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui} SocialWidget.cpp widgets/ContainedMenuButton.cpp + widgets/AccountListView.cpp widgets/AccountListWidget.cpp widgets/AccountModelFactoryProxy.cpp widgets/AccountWidget.cpp diff --git a/src/Settings_Accounts.ui b/src/Settings_Accounts.ui index a0154bcbab..54063e91db 100644 --- a/src/Settings_Accounts.ui +++ b/src/Settings_Accounts.ui @@ -55,7 +55,7 @@ - + true @@ -76,6 +76,11 @@
thirdparty/Qocoa/qbutton.h
1 + + AccountListView + QListView +
widgets/AccountListView.h
+
diff --git a/src/libtomahawk/accounts/AccountDelegate.cpp b/src/libtomahawk/accounts/AccountDelegate.cpp index ac64bd9645..2786e33d2a 100644 --- a/src/libtomahawk/accounts/AccountDelegate.cpp +++ b/src/libtomahawk/accounts/AccountDelegate.cpp @@ -39,12 +39,6 @@ #define PADDING_BETWEEN_STARS 2 #define STAR_SIZE 12 -#ifdef Q_OS_MAC -#define ROW_HEIGHT_MULTIPLIER 4.9 -#else -#define ROW_HEIGHT_MULTIPLIER 5.7 -#endif - #define ICONSIZE 40 #define WRENCH_SIZE 24 #define SMALL_WRENCH_SIZE 16 @@ -72,7 +66,7 @@ AccountDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex // Haven't calculated normal item height yet, do it once and save it QStyleOptionViewItemV4 opt( option ); initStyleOption( &opt, index ); - m_accountRowHeight = ROW_HEIGHT_MULTIPLIER * opt.fontMetrics.height(); + m_accountRowHeight = ACCOUNT_DELEGATE_ROW_HEIGHT_MULTIPLIER * opt.fontMetrics.height(); } if ( rowType == AccountModel::TopLevelAccount || rowType == AccountModel::UniqueFactory || rowType == AccountModel::CustomAccount ) diff --git a/src/libtomahawk/accounts/AccountDelegate.h b/src/libtomahawk/accounts/AccountDelegate.h index ab5cc86ef8..d32fa41415 100644 --- a/src/libtomahawk/accounts/AccountDelegate.h +++ b/src/libtomahawk/accounts/AccountDelegate.h @@ -23,6 +23,14 @@ #include #include "accounts/AccountModel.h" + +#ifdef Q_OS_MAC +#define ACCOUNT_DELEGATE_ROW_HEIGHT_MULTIPLIER 4.9 +#else +#define ACCOUNT_DELEGATE_ROW_HEIGHT_MULTIPLIER 5.7 +#endif + + class AnimatedSpinner; namespace Tomahawk diff --git a/src/widgets/AccountListView.cpp b/src/widgets/AccountListView.cpp new file mode 100644 index 0000000000..f60659290e --- /dev/null +++ b/src/widgets/AccountListView.cpp @@ -0,0 +1,38 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2013, Teo Mrnjavac + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#include "AccountListView.h" +#include "accounts/AccountDelegate.h" + +#include + +AccountListView::AccountListView( QWidget* parent ) + : QListView( parent ) +{} + +void +AccountListView::wheelEvent( QWheelEvent* e ) +{ + //HACK: Workaround for QTBUG-7232: Smooth scrolling (scroll per pixel) in ItemViews + // does not work as expected. +#ifdef Q_WS_X11 + verticalScrollBar()->setSingleStep( ACCOUNT_DELEGATE_ROW_HEIGHT_MULTIPLIER * fontMetrics().height() / 8 ); + // ^ scroll step is 1/8 of the estimated row height +#endif + QListView::wheelEvent( e ); +} diff --git a/src/widgets/AccountListView.h b/src/widgets/AccountListView.h new file mode 100644 index 0000000000..63627e95e2 --- /dev/null +++ b/src/widgets/AccountListView.h @@ -0,0 +1,38 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2013, Teo Mrnjavac + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#ifndef ACCOUNTLISTVIEW_H +#define ACCOUNTLISTVIEW_H + +#include + +/** + * @brief The AccountListView class does not add functionality, it just implements a + * much needed workaround that fixes a scrolling issue with large delegates. + */ +class AccountListView : public QListView +{ + Q_OBJECT +public: + explicit AccountListView( QWidget* parent = 0 ); + +protected: + void wheelEvent( QWheelEvent* ); +}; + +#endif // ACCOUNTLISTVIEW_H From b0d1e3813bc880bf3601bae634d98cfb02a2ca91 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 17 Jan 2013 11:48:36 +0100 Subject: [PATCH 290/310] Not just on X11 --- src/widgets/AccountListView.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/widgets/AccountListView.cpp b/src/widgets/AccountListView.cpp index f60659290e..b3a3e38c1c 100644 --- a/src/widgets/AccountListView.cpp +++ b/src/widgets/AccountListView.cpp @@ -30,9 +30,7 @@ AccountListView::wheelEvent( QWheelEvent* e ) { //HACK: Workaround for QTBUG-7232: Smooth scrolling (scroll per pixel) in ItemViews // does not work as expected. -#ifdef Q_WS_X11 verticalScrollBar()->setSingleStep( ACCOUNT_DELEGATE_ROW_HEIGHT_MULTIPLIER * fontMetrics().height() / 8 ); // ^ scroll step is 1/8 of the estimated row height -#endif QListView::wheelEvent( e ); } From d8a47f7ef6b0aa1142b285f63e6c4b48af0efa0d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 17 Jan 2013 12:00:51 +0100 Subject: [PATCH 291/310] Don't change scroll steps on OSX. --- src/widgets/AccountListView.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/widgets/AccountListView.cpp b/src/widgets/AccountListView.cpp index b3a3e38c1c..34a185771a 100644 --- a/src/widgets/AccountListView.cpp +++ b/src/widgets/AccountListView.cpp @@ -28,9 +28,12 @@ AccountListView::AccountListView( QWidget* parent ) void AccountListView::wheelEvent( QWheelEvent* e ) { +#ifndef Q_WS_MAC //HACK: Workaround for QTBUG-7232: Smooth scrolling (scroll per pixel) in ItemViews // does not work as expected. verticalScrollBar()->setSingleStep( ACCOUNT_DELEGATE_ROW_HEIGHT_MULTIPLIER * fontMetrics().height() / 8 ); // ^ scroll step is 1/8 of the estimated row height +#endif + QListView::wheelEvent( e ); } From 3bf144779b6abdd498bcc337aca92193580e3d34 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 17 Jan 2013 12:36:54 +0100 Subject: [PATCH 292/310] Revert "* Disable BreakPad for testing." This reverts commit a80803769da226b3e1a12253b12e809be6599d6f. --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6172a29828..1824223f7a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -148,9 +148,9 @@ main( int argc, char *argv[] ) new TomahawkSettingsGui( &a ); #endif -#ifndef ENABLE_HEADLESS +#ifndef ENABLE_HEADLESSs #ifdef WITH_BREAKPAD -// new BreakPad( QDir::tempPath(), TomahawkSettings::instance()->crashReporterEnabled() && !TomahawkUtils::headless() ); + new BreakPad( QDir::tempPath(), TomahawkSettings::instance()->crashReporterEnabled() && !TomahawkUtils::headless() ); #endif #endif From a7f6a6e129989f4fbc84d59d140a6ccdb6303023 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 17 Jan 2013 12:38:56 +0100 Subject: [PATCH 293/310] * Update version to 0.6.99. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4976faad9c..81f0cd3c85 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ ELSE() ENDIF() SET( TOMAHAWK_VERSION_MAJOR 0 ) -SET( TOMAHAWK_VERSION_MINOR 5 ) +SET( TOMAHAWK_VERSION_MINOR 6 ) SET( TOMAHAWK_VERSION_PATCH 99 ) #SET( TOMAHAWK_VERSION_RC 0 ) From 8ea6d2dd967286c6c670e6eb123db971d160571c Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 17 Jan 2013 10:13:44 -0500 Subject: [PATCH 294/310] Finish the work begun in 0c68f559 to make scanning more thread-safe --- src/libtomahawk/filemetadata/MusicScanner.cpp | 8 +- src/libtomahawk/filemetadata/MusicScanner.h | 9 +- src/libtomahawk/filemetadata/ScanManager.cpp | 84 ++++++++++++------- src/libtomahawk/filemetadata/ScanManager.h | 49 +++++++---- 4 files changed, 94 insertions(+), 56 deletions(-) diff --git a/src/libtomahawk/filemetadata/MusicScanner.cpp b/src/libtomahawk/filemetadata/MusicScanner.cpp index a083291d55..5ecb1403a0 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.cpp +++ b/src/libtomahawk/filemetadata/MusicScanner.cpp @@ -124,12 +124,12 @@ DirListerThreadController::run() QMetaObject::invokeMethod( m_dirLister.data(), "go", Qt::QueuedConnection ); exec(); - if( !m_dirLister.isNull() ) + if ( !m_dirLister.isNull() ) delete m_dirLister.data(); } -MusicScanner::MusicScanner( ScanManager::ScanMode scanMode, const QStringList& paths, quint32 bs ) +MusicScanner::MusicScanner( MusicScanner::ScanMode scanMode, const QStringList& paths, quint32 bs ) : QObject() , m_scanMode( scanMode ) , m_paths( paths ) @@ -204,7 +204,7 @@ MusicScanner::scan() connect( this, SIGNAL( batchReady( QVariantList, QVariantList ) ), SLOT( commitBatch( QVariantList, QVariantList ) ), Qt::DirectConnection ); - if ( m_scanMode == ScanManager::FileScan ) + if ( m_scanMode == MusicScanner::FileScan ) { scanFilePaths(); return; @@ -236,7 +236,7 @@ MusicScanner::postOps() { tDebug( LOGVERBOSE ) << Q_FUNC_INFO; - if ( m_scanMode == ScanManager::DirScan ) + if ( m_scanMode == MusicScanner::DirScan ) { // any remaining stuff that wasnt emitted as a batch: foreach( const QString& key, m_filemtimes.keys() ) diff --git a/src/libtomahawk/filemetadata/MusicScanner.h b/src/libtomahawk/filemetadata/MusicScanner.h index 1190cd1c40..fa2eee9baf 100644 --- a/src/libtomahawk/filemetadata/MusicScanner.h +++ b/src/libtomahawk/filemetadata/MusicScanner.h @@ -23,8 +23,6 @@ #include "TomahawkSettings.h" #include "database/DatabaseCommand.h" -#include "ScanManager.h" - /* taglib */ #include #include @@ -100,7 +98,10 @@ class MusicScanner : public QObject Q_OBJECT public: - MusicScanner( ScanManager::ScanMode scanMode, const QStringList& paths, quint32 bs = 0 ); + enum ScanMode { DirScan, FileScan }; + enum ScanType { None, Full, Normal, File }; + + MusicScanner( MusicScanner::ScanMode scanMode, const QStringList& paths, quint32 bs = 0 ); ~MusicScanner(); signals: @@ -125,7 +126,7 @@ private slots: private: void scanFilePaths(); - ScanManager::ScanMode m_scanMode; + MusicScanner::ScanMode m_scanMode; QStringList m_paths; QMap m_ext2mime; // eg: mp3 -> audio/mpeg unsigned int m_scanned; diff --git a/src/libtomahawk/filemetadata/ScanManager.cpp b/src/libtomahawk/filemetadata/ScanManager.cpp index 32a60e6fc9..ba804971b2 100644 --- a/src/libtomahawk/filemetadata/ScanManager.cpp +++ b/src/libtomahawk/filemetadata/ScanManager.cpp @@ -35,6 +35,35 @@ #include #include + +MusicScannerThreadController::MusicScannerThreadController( QObject* parent ) + : QThread( parent ) + , m_bs( 0 ) +{ + tDebug() << Q_FUNC_INFO; +} + + +MusicScannerThreadController::~MusicScannerThreadController() +{ + tDebug() << Q_FUNC_INFO; +} + + +void +MusicScannerThreadController::run() +{ + m_musicScanner = QPointer< MusicScanner >( new MusicScanner( m_mode, m_paths, m_bs ) ); + connect( m_musicScanner.data(), SIGNAL( finished() ), parent(), SLOT( scannerFinished() ), Qt::QueuedConnection ); + QMetaObject::invokeMethod( m_musicScanner.data(), "startScan", Qt::QueuedConnection ); + + exec(); + + if ( !m_musicScanner.isNull() ) + delete m_musicScanner.data(); +} + + ScanManager* ScanManager::s_instance = 0; @@ -50,7 +79,7 @@ ScanManager::ScanManager( QObject* parent ) , m_musicScannerThreadController( 0 ) , m_currScannerPaths() , m_cachedScannerDirs() - , m_queuedScanType( None ) + , m_queuedScanType( MusicScanner::None ) , m_updateGUI( true ) { s_instance = this; @@ -76,12 +105,11 @@ ScanManager::~ScanManager() { qDebug() << Q_FUNC_INFO; - if ( !m_scanner.isNull() ) + if ( m_musicScannerThreadController ) { m_musicScannerThreadController->quit(); m_musicScannerThreadController->wait( 60000 ); - delete m_scanner.data(); delete m_musicScannerThreadController; m_musicScannerThreadController = 0; } @@ -157,17 +185,17 @@ ScanManager::runNormalScan( bool manualFull ) tDebug( LOGVERBOSE ) << Q_FUNC_INFO; - if ( m_musicScannerThreadController || !m_scanner.isNull() ) //still running if these are not zero + if ( m_musicScannerThreadController ) //still running if these are not zero { - if ( m_queuedScanType != Full ) - m_queuedScanType = manualFull ? Full : Normal; + if ( m_queuedScanType != MusicScanner::Full ) + m_queuedScanType = manualFull ? MusicScanner::Full : MusicScanner::Normal; tDebug( LOGVERBOSE ) << "Could not run dir scan, old scan still running"; return; } m_scanTimer->stop(); - m_musicScannerThreadController = new QThread( this ); - m_currScanMode = DirScan; + m_musicScannerThreadController = new MusicScannerThreadController( this ); + m_currScanMode = MusicScanner::DirScan; if ( manualFull ) { @@ -204,17 +232,17 @@ ScanManager::runFileScan( const QStringList& paths, bool updateGUI ) foreach( const QString& path, paths ) m_currScannerPaths.insert( path ); - if ( m_musicScannerThreadController || !m_scanner.isNull() ) //still running if these are not zero + if ( m_musicScannerThreadController ) //still running if these are not zero { - if ( m_queuedScanType == None ) - m_queuedScanType = File; + if ( m_queuedScanType == MusicScanner::None ) + m_queuedScanType = MusicScanner::File; tDebug( LOGVERBOSE ) << "Could not run file scan, old scan still running"; return; } m_scanTimer->stop(); - m_musicScannerThreadController = new QThread( this ); - m_currScanMode = FileScan; + m_musicScannerThreadController = new MusicScannerThreadController( this ); + m_currScanMode = MusicScanner::FileScan; m_updateGUI = updateGUI; QMetaObject::invokeMethod( this, "runScan", Qt::QueuedConnection ); @@ -224,7 +252,7 @@ ScanManager::runFileScan( const QStringList& paths, bool updateGUI ) void ScanManager::fileMtimesCheck( const QMap< QString, QMap< unsigned int, unsigned int > >& mtimes ) { - if ( !mtimes.isEmpty() && m_currScanMode == DirScan && TomahawkSettings::instance()->scannerPaths().isEmpty() ) + if ( !mtimes.isEmpty() && m_currScanMode == MusicScanner::DirScan && TomahawkSettings::instance()->scannerPaths().isEmpty() ) { DatabaseCommand_DeleteFiles *cmd = new DatabaseCommand_DeleteFiles( SourceList::instance()->getLocal() ); connect( cmd, SIGNAL( finished() ), SLOT( filesDeleted() ) ); @@ -253,14 +281,9 @@ ScanManager::runScan() QStringList paths = m_currScannerPaths.empty() ? TomahawkSettings::instance()->scannerPaths() : m_currScannerPaths.toList(); - if ( m_musicScannerThreadController && m_scanner.isNull() ) - { - m_scanner = QPointer< MusicScanner >( new MusicScanner( m_currScanMode, paths ) ); - m_scanner.data()->moveToThread( m_musicScannerThreadController ); - connect( m_scanner.data(), SIGNAL( finished() ), SLOT( scannerFinished() ) ); - m_musicScannerThreadController->start( QThread::IdlePriority ); - QMetaObject::invokeMethod( m_scanner.data(), "startScan" ); - } + m_musicScannerThreadController->setScanMode( m_currScanMode ); + m_musicScannerThreadController->setPaths( paths ); + m_musicScannerThreadController->start( QThread::IdlePriority ); } @@ -268,14 +291,11 @@ void ScanManager::scannerFinished() { tLog( LOGVERBOSE ) << Q_FUNC_INFO; - if ( !m_scanner.isNull() || m_musicScannerThreadController ) + if ( m_musicScannerThreadController ) { m_musicScannerThreadController->quit(); m_musicScannerThreadController->wait( 60000 ); - if ( !m_scanner.isNull() ) - delete m_scanner.data(); - delete m_musicScannerThreadController; m_musicScannerThreadController = 0; } @@ -284,21 +304,21 @@ ScanManager::scannerFinished() m_updateGUI = true; emit finished(); - if ( m_queuedScanType != File ) + if ( m_queuedScanType != MusicScanner::File ) m_currScannerPaths.clear(); switch ( m_queuedScanType ) { - case Full: - case Normal: - QMetaObject::invokeMethod( this, "runNormalScan", Qt::QueuedConnection, Q_ARG( bool, m_queuedScanType == Full ) ); + case MusicScanner::Full: + case MusicScanner::Normal: + QMetaObject::invokeMethod( this, "runNormalScan", Qt::QueuedConnection, Q_ARG( bool, m_queuedScanType == MusicScanner::Full ) ); break; - case File: + case MusicScanner::File: QMetaObject::invokeMethod( this, "", Qt::QueuedConnection, Q_ARG( QStringList, QStringList() ) ); break; default: break; } - m_queuedScanType = None; + m_queuedScanType = MusicScanner::None; m_scanTimer->start(); } diff --git a/src/libtomahawk/filemetadata/ScanManager.h b/src/libtomahawk/filemetadata/ScanManager.h index 564b64f8de..fbae62b25e 100644 --- a/src/libtomahawk/filemetadata/ScanManager.h +++ b/src/libtomahawk/filemetadata/ScanManager.h @@ -23,26 +23,44 @@ #include "Typedefs.h" #include "DllMacro.h" -#include -#include -#include -#include -#include -#include - -class MusicScanner; -class QThread; +#include "MusicScanner.h" + +#include +#include +#include +#include +#include +#include +#include + class QFileSystemWatcher; class QTimer; +class MusicScannerThreadController : public QThread +{ + Q_OBJECT + +public: + MusicScannerThreadController( QObject* parent ); + virtual ~MusicScannerThreadController(); + + void setScanMode( MusicScanner::ScanMode mode ) { m_mode = mode; } + void setPaths( const QStringList& paths ) { m_paths = paths; } + void run(); + +private: + QPointer< MusicScanner > m_musicScanner; + MusicScanner::ScanMode m_mode; + QStringList m_paths; + quint32 m_bs; +}; + + class DLLEXPORT ScanManager : public QObject { Q_OBJECT public: - enum ScanMode { DirScan, FileScan }; - enum ScanType { None, Full, Normal, File }; - static ScanManager* instance(); explicit ScanManager( QObject* parent = 0 ); @@ -71,14 +89,13 @@ private slots: private: static ScanManager* s_instance; - ScanMode m_currScanMode; - QPointer< MusicScanner > m_scanner; - QThread* m_musicScannerThreadController; + MusicScanner::ScanMode m_currScanMode; + MusicScannerThreadController* m_musicScannerThreadController; QSet< QString > m_currScannerPaths; QStringList m_cachedScannerDirs; QTimer* m_scanTimer; - ScanType m_queuedScanType; + MusicScanner::ScanType m_queuedScanType; bool m_updateGUI; }; From b24d5e13cc52052c635abe1b4120bc1831150ca8 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 17 Jan 2013 11:34:20 -0500 Subject: [PATCH 295/310] Add area to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1f1b3966d8..05292b1c8b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +src/accounts/tomahawk *-build/* build/* .directory From 63144364921312da501cea93a4b961093dd24907 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 17 Jan 2013 14:00:05 -0500 Subject: [PATCH 296/310] Find TH account dir if available, and compile websocketpp --- CMakeLists.txt | 17 +++++++++++++++++ src/accounts/CMakeLists.txt | 6 +++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 81f0cd3c85..a92bc2a63a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,6 +228,23 @@ IF( WIN32 ) macro_log_feature(QTSPARKLE_FOUND "qtsparkle" "Library for creating auto updaters written in Qt" "https://github.com/davidsansome/qtsparkle" FALSE "" "") ENDIF( WIN32 ) +if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk/CMakeLists.tomahawk) + #set(CMAKE_MODULE_PATH_OLD ${CMAKE_MODULE_PATH}) + #set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk/cmake") + #macro_optional_find_package(WebSocketPP) + #macro_log_feature(WEBSOCKETPP_FOUND "WebSocket++ (WebSocketPP)" "Library for using websockets in C++ applications" "https://github.com/zaphoyd/websocketpp/" TRUE "" "") + #include_directories(${WEBSOCKETPP_INCLUDE_DIR}) + #set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH_OLD}) + message(STATUS "Tomahawk account directory found, building it") + find_package(Boost COMPONENTS regex thread filesystem random system REQUIRED) + find_package(OpenSSL REQUIRED) + set(TH_ACCOUNT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk") + set(WEBSOCKETPP_INCLUDE_DIR "${TH_ACCOUNT_DIR}/thirdparty/websocketpp/src/include") + set(WEBSOCKETPP_LIBRARY tomahawk_websocketpp) + set(WEBSOCKETPP_LIBRARIES ${WEBSOCKETPP_LIBRARY}) + add_subdirectory(${TH_ACCOUNT_DIR}/thirdparty/websocketpp/src) +endif() + #TODO: support external qxt set(QXTWEB_FOUND TRUE) set(QXTWEB_LIBRARIES qxtweb-standalone) diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index c73762cf23..a7a301461e 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -1,8 +1,8 @@ include(TomahawkAddPlugin) -file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") -foreach( SUBDIRECTORY ${SUBDIRECTORIES}) - if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" ) +set(SUBDIRECTORIES zeroconf twitter xmpp) +foreach(SUBDIRECTORY ${SUBDIRECTORIES}) + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt") if(SUBDIRECTORY STREQUAL "xmpp") if( JREEN_FOUND ) add_subdirectory( xmpp ) From fe4c7543cd415e6f4f097366b77d525d6376c76c Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Thu, 17 Jan 2013 21:21:42 +0100 Subject: [PATCH 297/310] Add testing framework --- CMakeLists.txt | 14 ++++++++++++-- tests/CMakeLists.txt | 4 ++++ tests/TestFoo.h | 36 +++++++++++++++++++++++++++++++++++ tests/main.cpp.in | 35 ++++++++++++++++++++++++++++++++++ tests/tomahawk_add_test.cmake | 20 +++++++++++++++++++ 5 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/TestFoo.h create mode 100644 tests/main.cpp.in create mode 100644 tests/tomahawk_add_test.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index a92bc2a63a..7e41f99cd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,8 @@ add_definitions( "-DQT_STRICT_ITERATORS" ) # build options option(BUILD_GUI "Build Tomahawk with GUI" ON) option(BUILD_RELEASE "Generate TOMAHAWK_VERSION without GIT info" OFF) +option(BUILD_TESTS "Build Tomahawk with unit tests" ON) + option(WITH_BREAKPAD "Build with breakpad integration" ON) option(WITH_CRASHREPORTER "Build with CrashReporter" ON) option(WITH_BINARY_ATTICA "Enable support for downloading binary resolvers automatically" ON) @@ -133,8 +135,11 @@ else() message(STATUS "Could not find Qt5, now searching for Qt4... you're better off this way!") set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork") - if(BUILD_GUI) - list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" "QtSvg" ) + if( BUILD_GUI ) + list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" "QtSvg") + endif() + if( BUILD_TESTS ) + list(APPEND NEEDED_QT4_COMPONENTS "QtTest") endif() macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} ) @@ -317,3 +322,8 @@ ADD_SUBDIRECTORY( thirdparty ) ADD_SUBDIRECTORY( src ) ADD_SUBDIRECTORY( src/libtomahawk ) ADD_SUBDIRECTORY( admin ) + +if( BUILD_TESTS ) + enable_testing() + add_subdirectory( tests ) +endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000000..50cfcdf1ee --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,4 @@ +include_directories(${CMAKE_CURRENT_LIST_DIR}/../src) +include(tomahawk_add_test.cmake) + +tomahawk_add_test(Foo) diff --git a/tests/TestFoo.h b/tests/TestFoo.h new file mode 100644 index 0000000000..fe44a10a66 --- /dev/null +++ b/tests/TestFoo.h @@ -0,0 +1,36 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2013, Dominik Schmidt + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + + +#ifndef TOMAHAWK_TESTFOO_H +#define TOMAHAWK_TESTFOO_H + +#include + +class TestFoo : public QObject +{ + Q_OBJECT + +private slots: + void testBar() + { + QVERIFY( true ); + } +}; + +#endif \ No newline at end of file diff --git a/tests/main.cpp.in b/tests/main.cpp.in new file mode 100644 index 0000000000..56780f275d --- /dev/null +++ b/tests/main.cpp.in @@ -0,0 +1,35 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2013, Dominik Schmidt + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#include +#include + +#include "Test@TOMAHAWK_TEST_CLASS@.h" +#include "moc_Test@TOMAHAWK_TEST_CLASS@.cpp" + +int main( int argc, char** argv) +{ + QCoreApplication app( argc, argv ); + + #define TEST( Type ) { \ + Type o; \ + if (int r = QTest::qExec( &o, argc, argv ) != 0) return r; } + + TEST( Test@TOMAHAWK_TEST_CLASS@ ); + return 0; +} \ No newline at end of file diff --git a/tests/tomahawk_add_test.cmake b/tests/tomahawk_add_test.cmake new file mode 100644 index 0000000000..a0d6f96c7a --- /dev/null +++ b/tests/tomahawk_add_test.cmake @@ -0,0 +1,20 @@ +macro(tomahawk_add_test test_class) + include_directories(${QT_INCLUDES} "${PROJECT_SOURCE_DIR}/src" ${CMAKE_CURRENT_BINARY_DIR}) + + set(TOMAHAWK_TEST_CLASS ${test_class}) + set(TOMAHAWK_TEST_TARGET ${TOMAHAWK_TEST_CLASS}Test) + configure_file(main.cpp.in Test${TOMAHAWK_TEST_CLASS}.cpp) + configure_file(Test${TOMAHAWK_TEST_CLASS}.h Test${TOMAHAWK_TEST_CLASS}.h) + + add_executable(${TOMAHAWK_TEST_CLASS}Test Test${TOMAHAWK_TEST_CLASS}.cpp) + + set_target_properties(${TOMAHAWK_TEST_TARGET} PROPERTIES AUTOMOC ON) + + target_link_libraries(${TOMAHAWK_TEST_TARGET} + ${TOMAHAWK_LIBRARIES} + ${QT_QTTEST_LIBRARY} + ${QT_QTCORE_LIBRARY} + ) + + add_test(NAME ${TOMAHAWK_TEST_TARGET} COMMAND ${TOMAHAWK_TEST_TARGET}) +endmacro() \ No newline at end of file From bfe59af38bdc325c62565517e52b8a08ed839051 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 17 Jan 2013 15:44:32 -0500 Subject: [PATCH 298/310] Update in-tree-building TH account stuff --- CMakeLists.txt | 7 +++---- src/accounts/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e41f99cd3..9ea2cf7d67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -200,7 +200,7 @@ macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://develo include( CheckTagLibFileName ) check_taglib_filename( COMPLEX_TAGLIB_FILENAME ) -macro_optional_find_package(Boost) +find_package(Boost COMPONENTS regex thread filesystem random system date_time REQUIRED) macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination macro_optional_find_package(QCA2) @@ -233,7 +233,7 @@ IF( WIN32 ) macro_log_feature(QTSPARKLE_FOUND "qtsparkle" "Library for creating auto updaters written in Qt" "https://github.com/davidsansome/qtsparkle" FALSE "" "") ENDIF( WIN32 ) -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk/CMakeLists.tomahawk) +if(EXISTS ${CMAKE_SOURCE_DIR}/src/accounts/tomahawk/CMakeLists.txt) #set(CMAKE_MODULE_PATH_OLD ${CMAKE_MODULE_PATH}) #set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk/cmake") #macro_optional_find_package(WebSocketPP) @@ -241,10 +241,9 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk/CMakeLists.tomahawk) #include_directories(${WEBSOCKETPP_INCLUDE_DIR}) #set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH_OLD}) message(STATUS "Tomahawk account directory found, building it") - find_package(Boost COMPONENTS regex thread filesystem random system REQUIRED) find_package(OpenSSL REQUIRED) set(TH_ACCOUNT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk") - set(WEBSOCKETPP_INCLUDE_DIR "${TH_ACCOUNT_DIR}/thirdparty/websocketpp/src/include") + set(WEBSOCKETPP_INCLUDE_DIR "${CMAKE_BINARY_DIR}/src/accounts/tomahawk/thirdparty/websocketpp/src/include") set(WEBSOCKETPP_LIBRARY tomahawk_websocketpp) set(WEBSOCKETPP_LIBRARIES ${WEBSOCKETPP_LIBRARY}) add_subdirectory(${TH_ACCOUNT_DIR}/thirdparty/websocketpp/src) diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index a7a301461e..080e7e55fd 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -1,6 +1,6 @@ include(TomahawkAddPlugin) -set(SUBDIRECTORIES zeroconf twitter xmpp) +file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") foreach(SUBDIRECTORY ${SUBDIRECTORIES}) if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt") if(SUBDIRECTORY STREQUAL "xmpp") From 83e3ed2c506ea0301b88d46f7fb4c806e68bb4bb Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Thu, 17 Jan 2013 16:10:33 -0500 Subject: [PATCH 299/310] Remove external TH account info --- CMakeLists.txt | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ea2cf7d67..2d940a642a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,22 +233,6 @@ IF( WIN32 ) macro_log_feature(QTSPARKLE_FOUND "qtsparkle" "Library for creating auto updaters written in Qt" "https://github.com/davidsansome/qtsparkle" FALSE "" "") ENDIF( WIN32 ) -if(EXISTS ${CMAKE_SOURCE_DIR}/src/accounts/tomahawk/CMakeLists.txt) - #set(CMAKE_MODULE_PATH_OLD ${CMAKE_MODULE_PATH}) - #set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk/cmake") - #macro_optional_find_package(WebSocketPP) - #macro_log_feature(WEBSOCKETPP_FOUND "WebSocket++ (WebSocketPP)" "Library for using websockets in C++ applications" "https://github.com/zaphoyd/websocketpp/" TRUE "" "") - #include_directories(${WEBSOCKETPP_INCLUDE_DIR}) - #set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH_OLD}) - message(STATUS "Tomahawk account directory found, building it") - find_package(OpenSSL REQUIRED) - set(TH_ACCOUNT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/accounts/tomahawk") - set(WEBSOCKETPP_INCLUDE_DIR "${CMAKE_BINARY_DIR}/src/accounts/tomahawk/thirdparty/websocketpp/src/include") - set(WEBSOCKETPP_LIBRARY tomahawk_websocketpp) - set(WEBSOCKETPP_LIBRARIES ${WEBSOCKETPP_LIBRARY}) - add_subdirectory(${TH_ACCOUNT_DIR}/thirdparty/websocketpp/src) -endif() - #TODO: support external qxt set(QXTWEB_FOUND TRUE) set(QXTWEB_LIBRARIES qxtweb-standalone) From 22c305162ce25872667f53e6a513a010b4f87224 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Fri, 18 Jan 2013 00:21:59 +0100 Subject: [PATCH 300/310] Create hopefully rather sane TomahawkConfig.cmake --- CMakeLists.txt | 42 +++++++++++++++++++ ...AddPlugin.cmake => TomahawkAddPlugin.cmake | 0 TomahawkBuildTreeSettings.cmake.in | 3 ++ TomahawkConfig.cmake.in | 21 ++++++++++ TomahawkConfigVersion.cmake.in | 12 ++++++ .../TomahawkUse.cmake => TomahawkUse.cmake | 6 ++- src/accounts/CMakeLists.txt | 2 +- src/libtomahawk/CMakeLists.txt | 12 +----- thirdparty/libportfwd/CMakeLists.txt | 1 + 9 files changed, 86 insertions(+), 13 deletions(-) rename CMakeModules/TomahawkAddPlugin.cmake => TomahawkAddPlugin.cmake (100%) create mode 100644 TomahawkBuildTreeSettings.cmake.in create mode 100644 TomahawkConfig.cmake.in create mode 100644 TomahawkConfigVersion.cmake.in rename src/libtomahawk/TomahawkUse.cmake => TomahawkUse.cmake (81%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d940a642a..6f0f02c89d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -310,3 +310,45 @@ if( BUILD_TESTS ) enable_testing() add_subdirectory( tests ) endif() + + +# Add all targets to the build-tree export set +set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Tomahawk" CACHE PATH "Installation directory for CMake files") +set(CMAKE_INSTALL_FULL_CMAKEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}") +export(TARGETS tomahawklib tomahawk_portfwd + FILE "${PROJECT_BINARY_DIR}/TomahawkLibraryDepends.cmake") + +# Export the package for use from the build-tree +# (this registers the build-tree with a global CMake-registry) +export(PACKAGE Tomahawk) + +# Create a TomahawkBuildTreeSettings.cmake file for the use from the build tree +configure_file(TomahawkBuildTreeSettings.cmake.in "${PROJECT_BINARY_DIR}/TomahawkBuildTreeSettings.cmake" @ONLY) + +# Create the TomahawkConfig.cmake and TomahawkConfigVersion files +file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_CMAKEDIR}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}") + +configure_file(TomahawkConfig.cmake.in "${PROJECT_BINARY_DIR}/TomahawkConfig.cmake" @ONLY) +configure_file(TomahawkConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/TomahawkConfigVersion.cmake" @ONLY) +file(COPY TomahawkUse.cmake DESTINATION "${PROJECT_BINARY_DIR}") +file(COPY TomahawkAddPlugin.cmake DESTINATION "${PROJECT_BINARY_DIR}") + + +# Install the cmake files +install( + FILES + "${PROJECT_BINARY_DIR}/TomahawkConfig.cmake" + "${PROJECT_BINARY_DIR}/TomahawkConfigVersion.cmake" + "${PROJECT_BINARY_DIR}/TomahawkUse.cmake" + "${PROJECT_BINARY_DIR}/TomahawkAddPlugin.cmake" + DESTINATION + "${CMAKE_INSTALL_CMAKEDIR}" +) + +# Install the export set for use with the install-tree +install( + EXPORT + TomahawkLibraryDepends + DESTINATION + "${CMAKE_INSTALL_CMAKEDIR}" +) diff --git a/CMakeModules/TomahawkAddPlugin.cmake b/TomahawkAddPlugin.cmake similarity index 100% rename from CMakeModules/TomahawkAddPlugin.cmake rename to TomahawkAddPlugin.cmake diff --git a/TomahawkBuildTreeSettings.cmake.in b/TomahawkBuildTreeSettings.cmake.in new file mode 100644 index 0000000000..7edf1df1e8 --- /dev/null +++ b/TomahawkBuildTreeSettings.cmake.in @@ -0,0 +1,3 @@ +set(TOMAHAWK_INCLUDE_DIRS + "@PROJECT_SOURCE_DIR@/src/libtomahawk" + "@PROJECT_BINARY_DIR@") \ No newline at end of file diff --git a/TomahawkConfig.cmake.in b/TomahawkConfig.cmake.in new file mode 100644 index 0000000000..b7e28de780 --- /dev/null +++ b/TomahawkConfig.cmake.in @@ -0,0 +1,21 @@ +# - Config file for the Tomahawk package +# It defines the following variables +# TOMAHAWK_INCLUDE_DIRS - include directories for Tomahawk +# TOMAHAWK_LIBRARIES - libraries to link against +# TOMAHAWK_EXECUTABLE - the bar executable + +# Compute paths +get_filename_component(TOMAHAWK_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +if(EXISTS "${TOMAHAWK_CMAKE_DIR}/CMakeCache.txt") + # In build tree + include("${TOMAHAWK_CMAKE_DIR}/TomahawkBuildTreeSettings.cmake") +else() + set(TOMAHAWK_INCLUDE_DIRS "${TOMAHAWK_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@/libtomahawk") +endif() + +# Our library dependencies (contains definitions for IMPORTED targets) +include("${TOMAHAWK_CMAKE_DIR}/TomahawkLibraryDepends.cmake") + +# These are IMPORTED targets created by TomahawkLibraryDepends.cmake +set(TOMAHAWK_LIBRARIES tomahawklib) +set(TOMAHAWK_USE_FILE "${TOMAHAWK_CMAKE_DIR}/TomahawkUse.cmake") \ No newline at end of file diff --git a/TomahawkConfigVersion.cmake.in b/TomahawkConfigVersion.cmake.in new file mode 100644 index 0000000000..0d356a1069 --- /dev/null +++ b/TomahawkConfigVersion.cmake.in @@ -0,0 +1,12 @@ +set(PACKAGE_VERSION "@TOMAHAWK_VERSION@") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + diff --git a/src/libtomahawk/TomahawkUse.cmake b/TomahawkUse.cmake similarity index 81% rename from src/libtomahawk/TomahawkUse.cmake rename to TomahawkUse.cmake index 0b28154294..503ba8d7d6 100644 --- a/src/libtomahawk/TomahawkUse.cmake +++ b/TomahawkUse.cmake @@ -27,4 +27,8 @@ macro(qt_add_translation) endmacro() -include( "${Tomahawk_CMAKE_DIR}/TomahawkAddPlugin.cmake" ) \ No newline at end of file +if(NOT TOMAHAWK_CMAKE_DIR) + set(TOMAHAWK_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR}) +endif() + +include( "${TOMAHAWK_CMAKE_DIR}/TomahawkAddPlugin.cmake" ) diff --git a/src/accounts/CMakeLists.txt b/src/accounts/CMakeLists.txt index 080e7e55fd..2dc81966af 100644 --- a/src/accounts/CMakeLists.txt +++ b/src/accounts/CMakeLists.txt @@ -1,4 +1,4 @@ -include(TomahawkAddPlugin) +include( ${CMAKE_CURRENT_LIST_DIR}/../../TomahawkAddPlugin.cmake ) file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") foreach(SUBDIRECTORY ${SUBDIRECTORIES}) diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 8a578d44f6..4aec4e9e92 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -465,22 +465,12 @@ TARGET_LINK_LIBRARIES( tomahawklib ) INSTALL( TARGETS tomahawklib + EXPORT TomahawkLibraryDepends RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) -# Install cmake config -install( FILES - TomahawkConfig.cmake - TomahawkUse.cmake - ${CMAKE_SOURCE_DIR}/CMakeModules/TomahawkAddPlugin.cmake - DESTINATION - ${CMAKE_INSTALL_LIBDIR}/cmake/Tomahawk -) - - - # Install header files file( GLOB rootHeaders "*.h" ) file( GLOB accountsHeaders "accounts/*.h" ) diff --git a/thirdparty/libportfwd/CMakeLists.txt b/thirdparty/libportfwd/CMakeLists.txt index d97f14ee8d..1025241835 100644 --- a/thirdparty/libportfwd/CMakeLists.txt +++ b/thirdparty/libportfwd/CMakeLists.txt @@ -47,6 +47,7 @@ IF(WIN32) ENDIF() INSTALL( TARGETS tomahawk_portfwd + EXPORT TomahawkLibraryDepends RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} From a30f1f94e2d95d8e524f8a59b7b8eb3087a18d95 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Fri, 18 Jan 2013 01:16:58 +0100 Subject: [PATCH 301/310] Automatic merge of Transifex translations --- lang/tomahawk_ar.ts | 12 +-- lang/tomahawk_bg.ts | 12 +-- lang/tomahawk_bn_IN.ts | 12 +-- lang/tomahawk_ca.ts | 12 +-- lang/tomahawk_cs.ts | 24 +++--- lang/tomahawk_da.ts | 171 ++++++++++++++++++++++------------------- lang/tomahawk_de.ts | 22 +++--- lang/tomahawk_el.ts | 12 +-- lang/tomahawk_en.ts | 12 +-- lang/tomahawk_es.ts | 20 ++--- lang/tomahawk_fi.ts | 12 +-- lang/tomahawk_fr.ts | 12 +-- lang/tomahawk_gl.ts | 12 +-- lang/tomahawk_hi_IN.ts | 12 +-- lang/tomahawk_hu.ts | 12 +-- lang/tomahawk_it.ts | 12 +-- lang/tomahawk_ja.ts | 12 +-- lang/tomahawk_lt.ts | 12 +-- lang/tomahawk_pl.ts | 12 +-- lang/tomahawk_pt_BR.ts | 12 +-- lang/tomahawk_ru.ts | 12 +-- lang/tomahawk_sv.ts | 12 +-- lang/tomahawk_tr.ts | 12 +-- lang/tomahawk_zh_CN.ts | 12 +-- lang/tomahawk_zh_TW.ts | 12 +-- 25 files changed, 249 insertions(+), 240 deletions(-) diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts index 64c89b4153..1de777b545 100644 --- a/lang/tomahawk_ar.ts +++ b/lang/tomahawk_ar.ts @@ -2030,32 +2030,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account أضف حساب - + Remove إزالة - + %1 downloads تحميل %1 - + Online متصل - + Connecting... جاري الاتصال... - + Offline غير متصل diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts index 98e832eaa8..0f45363c6f 100644 --- a/lang/tomahawk_bg.ts +++ b/lang/tomahawk_bg.ts @@ -2040,32 +2040,32 @@ Tomahawk създаде доклад относно това и изпращай Tomahawk::Accounts::AccountDelegate - + Add Account Добави регистрация - + Remove Премахни - + %1 downloads %1 сваляния - + Online На линия - + Connecting... Свързване... - + Offline Извън линия diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts index 3e0046440a..1a0c26034b 100644 --- a/lang/tomahawk_bn_IN.ts +++ b/lang/tomahawk_bn_IN.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account - + Remove - + %1 downloads - + Online - + Connecting... - + Offline diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts index 7d1b345ebc..96b3c83354 100644 --- a/lang/tomahawk_ca.ts +++ b/lang/tomahawk_ca.ts @@ -2028,32 +2028,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Afegeix un compte - + Remove Esborra - + %1 downloads %1 descàrregues - + Online En Línia - + Connecting... Connectant-se... - + Offline Fora de Línia diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts index c92156d8dc..d1e6aba422 100644 --- a/lang/tomahawk_cs.ts +++ b/lang/tomahawk_cs.ts @@ -109,13 +109,13 @@ se s vámi spojil?
&Listen Privately - Zapnout režim &sokromého poslechu + Zapnout režim &soukromého poslechu &Listen Publicly - Opustit režim so&kromého poslechu + Opustit režim sou&kromého poslechu @@ -195,7 +195,7 @@ se s vámi spojil?
Enter Full Screen - + Vstoupit do režimu na celou obrazovku @@ -1390,7 +1390,7 @@ se s vámi spojil?
Script Resolver Error: %1 %2 %3 %4 - + Chyba řešitele skriptu: %1 %2 %3 %4
@@ -2029,32 +2029,32 @@ se s vámi spojil? Tomahawk::Accounts::AccountDelegate - + Add Account Přidat účet - + Remove Odstranit - + %1 downloads %1 stažení - + Online Připojený - + Connecting... Připojuje se... - + Offline Nepřipojený @@ -3409,12 +3409,12 @@ služby Twitter zde zadejte tam zobrazené číslo PIN: Exit Full Screen - + Ukončit režim na celou obrazovku Enter Full Screen - + Vstoupit do režimu na celou obrazovku diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts index cc3e7d1c28..1ff1c63c16 100644 --- a/lang/tomahawk_da.ts +++ b/lang/tomahawk_da.ts @@ -2028,32 +2028,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account TIlføj konto - + Remove - + %1 downloads %1 downloads - + Online Online - + Connecting... Forbinder... - + Offline Offline @@ -2234,7 +2234,7 @@ connect and stream from you? Stop syncing with Spotify - + Stop med at synkronisere med Spotify @@ -2242,12 +2242,12 @@ connect and stream from you? Logging in... - + Logger ind... Failed: %1 - + Fejlede: %1 @@ -2263,7 +2263,7 @@ connect and stream from you? Log In - + Log ind @@ -2803,13 +2803,13 @@ Try tweaking the filters for a new set of songs to play. Artist Hotttnesss - + Kunstners Hottnesss Song Hotttnesss - + Sangs Hottnesss @@ -2866,18 +2866,18 @@ Try tweaking the filters for a new set of songs to play. only by ~%1 - + kun af ~%1 similar to ~%1 - + minder om ~%1 with genre ~%1 - + med genre ~%1 @@ -2948,12 +2948,12 @@ Try tweaking the filters for a new set of songs to play. about %n minute(s) long - + omkring %n minut langomkring %n minutter lang about %1 dB - + omkring %1 dB @@ -2973,17 +2973,17 @@ Try tweaking the filters for a new set of songs to play. sorted in %1 %2 order - + sorteret i %1 %2 orden with a %1 mood - + med en %1 stemning in a %1 style - + i en %1 stil @@ -3001,7 +3001,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Grooveshark information from the network! - + Fejlede i at få Grooveshark information fra netværket @@ -3009,22 +3009,22 @@ Try tweaking the filters for a new set of songs to play. Top Overall - + Samlet Top Artists - + Kunstnere Albums - + Albums Tracks - + Numre @@ -3089,7 +3089,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching iTunes information from the network! - + Fejl i at få iTunes information fra netværket @@ -3097,27 +3097,27 @@ Try tweaking the filters for a new set of songs to play. New Playlist - + Ny Spilleliste Failed to save tracks - + Fejlede i at gemme numre Some tracks in the playlist do not contain an artist and a title. They will be ignored. - + Nogle numre i spillelisten indeholder ikke en kunstner og en titel. Disse vil blive ignoreret XSPF Error - + XSPF Fejl This is not a valid XSPF playlist. - + Dette er ikke en gyldig XSPF spilleliste @@ -3173,7 +3173,7 @@ Try tweaking the filters for a new set of songs to play. %n other(s) - + %n anden%n andre @@ -3191,7 +3191,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Rdio information from the network! - + Fejl i at hente Rdio information fra netværket @@ -3199,7 +3199,7 @@ Try tweaking the filters for a new set of songs to play. Network error parsing shortened link! - + Netværksfejl ved hentning af forkortet link! @@ -3259,7 +3259,7 @@ Try tweaking the filters for a new set of songs to play. Error fetching Spotify information from the network! - + Fejl i at hente Spotify information fra netværket @@ -3283,7 +3283,7 @@ Try tweaking the filters for a new set of songs to play. Twitter PIN - + Twitter PIN @@ -3487,7 +3487,7 @@ enter the displayed PIN number here: %1 by %2 track, artist name - + %1 af %2 @@ -3572,7 +3572,7 @@ enter the displayed PIN number here: Sorry, your filter '%1' did not match any results. - + Beklager, din filter '%1' matchede ikke nogle resultater @@ -3641,7 +3641,7 @@ enter the displayed PIN number here: Status: No saved credentials - + Status: Ingen gemte oplysninger @@ -3651,7 +3651,7 @@ enter the displayed PIN number here: Twitter Connections - + Twitter Forbindelser @@ -3666,7 +3666,7 @@ You can re-send a sync message at any time simply by sending another tweet using Select the kind of tweet you would like, then press the button to post it: - + Vælg det tweet du kan lide og tryk på knappen for at poste det @@ -3676,22 +3676,22 @@ You can re-send a sync message at any time simply by sending another tweet using @Mention - + @Mention Direct Message - + Direkte Besked e.g. @tomahawk - + f.eks. @tomahawk Send Message - + Send Besked @@ -3722,12 +3722,12 @@ You can re-send a sync message at any time simply by sending another tweet using SuperCollection - + SuperSamling Combined libraries of all your online friends - + Alle dine venners kombineret bibliotek @@ -3750,17 +3750,17 @@ You can re-send a sync message at any time simply by sending another tweet using Recent Additions - + Nyligt tilføjede Newest Stations & Playlists - + Nyeste Stationer & Spillelister Recently Played Tracks - + Nyligt Afspillede Numre @@ -3770,12 +3770,12 @@ You can re-send a sync message at any time simply by sending another tweet using No recently created playlists in your network. - + Ingen nyligt oprettede spillelister i dit netværk Welcome to Tomahawk - + Velkommen til Tomahawk @@ -3783,7 +3783,7 @@ You can re-send a sync message at any time simply by sending another tweet using Charts - + Hitlister @@ -3791,7 +3791,7 @@ You can re-send a sync message at any time simply by sending another tweet using Wikipedia - + Wikipedia @@ -3801,19 +3801,23 @@ You can re-send a sync message at any time simply by sending another tweet using Terms for %1: - + +Betingelser for %1: + No terms found, sorry. - + Beklager, ingen betingelser fundet Hotttness for %1: %2 - + +Hottness for %1: %2 + @@ -3829,7 +3833,11 @@ Lyrics for "%1" by %2: %3 - + +Sangtekster for "%1" af %2: + +%3 + @@ -3852,7 +3860,7 @@ Lyrics for "%1" by %2: New Playlist - + Ny Spilleliste @@ -3860,23 +3868,23 @@ Lyrics for "%1" by %2: Xml stream console - + Xml stream konsol Filter - + Filter Save log - + Gem log Disabled - + Deaktiveret @@ -3896,17 +3904,17 @@ Lyrics for "%1" by %2: Visible stanzas - + Synlige stofer Information query - + Informations forespørgsel Message - + Besked @@ -3921,17 +3929,18 @@ Lyrics for "%1" by %2: Close - + Luk Save XMPP log to file - + Gem XMPP log til fil OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt) - + OpenDocument Format (*.odf);;HTML fil (*.html);; Ren tekst (*.txt) + @@ -3939,62 +3948,62 @@ Lyrics for "%1" by %2: Xmpp Configuration - + Xmpp Konfiguration Configure this Xmpp account - + Konfigurer denne Xmpp konto Enter your Xmpp login to connect with your friends using Tomahawk! - + Indtast dit Xmpp login for at forbinde med dine venner der bruger Tomahawk Login Information - + Login Information Xmpp ID: - + Xmpp ID: e.g. user@example.com - + f.eks. bruger@eksempel.dk Password: - + Kodeord: An account with this name already exists! - + En konto med det navn eksisterer allerede! Advanced Xmpp Settings - + Advancerede Xmpp Indstillinger Server: - + Server: Port: - + Port: Lots of servers don't support this (e.g. GTalk, jabber.org) - + Mange servere understøtter ikke dette (f.eks. GTalk, jabber.org) diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts index 1dc10034dc..ee236d16aa 100644 --- a/lang/tomahawk_de.ts +++ b/lang/tomahawk_de.ts @@ -1390,7 +1390,7 @@ erlauben sich mit dir zu verbinden? Script Resolver Error: %1 %2 %3 %4 - + Script Resolver Fehler: %1 %2 %3 %4 @@ -2029,32 +2029,32 @@ erlauben sich mit dir zu verbinden? Tomahawk::Accounts::AccountDelegate - + Add Account Konto hinzufügen - + Remove Entfernen - + %1 downloads %1 Downloads - + Online Verbunden - + Connecting... Verbinde... - + Offline Nicht Verbunden @@ -2851,22 +2851,22 @@ Versuch die Filter anzupassen für neue Lieder. is not - + ist nicht Studio - + Studio Live - + Live Christmas - + Weihnachten diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts index 69166c7a39..d81e7558b0 100644 --- a/lang/tomahawk_el.ts +++ b/lang/tomahawk_el.ts @@ -2028,32 +2028,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Προσθήκη Λογαριασμού - + Remove - + %1 downloads %1 λήψεις - + Online Συνεδεμένος - + Connecting... Σύνδεση... - + Offline Εκτός Σύνδεσης diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts index 0200da0afa..fc3904c069 100644 --- a/lang/tomahawk_en.ts +++ b/lang/tomahawk_en.ts @@ -2032,32 +2032,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Add Account - + Remove Remove - + %1 downloads %1 downloads - + Online Online - + Connecting... Connecting... - + Offline Offline diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts index 8aeb6e8a15..3ba96c6ea2 100644 --- a/lang/tomahawk_es.ts +++ b/lang/tomahawk_es.ts @@ -195,7 +195,7 @@ conectarse a usted y transmitir música? Enter Full Screen - + Modo a pantalla completa @@ -1390,7 +1390,7 @@ conectarse a usted y transmitir música? Script Resolver Error: %1 %2 %3 %4 - + Error del resolutor de script: %1 %2 %3 %4 @@ -2032,32 +2032,32 @@ y estaciones basadas en sus gustos personales. Tomahawk::Accounts::AccountDelegate - + Add Account Añadir cuenta - + Remove Eliminar - + %1 downloads %1 descargas - + Online Conectado - + Connecting... Conectando… - + Offline Desconectado @@ -3412,12 +3412,12 @@ introduzca su número PIN aquí: Exit Full Screen - + Salir de pantalla completa Enter Full Screen - + Modo a pantalla completa diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts index 9ec4f07728..f06b76b99a 100644 --- a/lang/tomahawk_fi.ts +++ b/lang/tomahawk_fi.ts @@ -2035,32 +2035,32 @@ napsauttamalla hiiren oikealla. Tomahawk::Accounts::AccountDelegate - + Add Account Lisää tili - + Remove Poista - + %1 downloads %1 latausta - + Online Verkossa - + Connecting... Yhdistetään... - + Offline Ei verkossa diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts index 77422be2a1..0cd8254020 100644 --- a/lang/tomahawk_fr.ts +++ b/lang/tomahawk_fr.ts @@ -2029,32 +2029,32 @@ de se connecter et streamer de vous? Tomahawk::Accounts::AccountDelegate - + Add Account Ajouter un compte - + Remove Supprimer - + %1 downloads %1 téléchargements - + Online En Ligne - + Connecting... Connexion en cours... - + Offline Hors ligne diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index b790f22d38..20f86a4412 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -2030,32 +2030,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Engadir unha conta - + Remove Eliminar - + %1 downloads %1 descargas - + Online Conectado - + Connecting... Conectando... - + Offline Desconectado diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts index e6947caf6c..8d473cea62 100644 --- a/lang/tomahawk_hi_IN.ts +++ b/lang/tomahawk_hi_IN.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account - + Remove - + %1 downloads - + Online - + Connecting... - + Offline diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts index 28c1f86711..70a6e8fb35 100644 --- a/lang/tomahawk_hu.ts +++ b/lang/tomahawk_hu.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Fiók hozzáadása - + Remove Eltávolítás - + %1 downloads - + Online Elérhető - + Connecting... Csatlakozás... - + Offline Nem elérhető diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts index c78cbd386e..49c79e30a6 100644 --- a/lang/tomahawk_it.ts +++ b/lang/tomahawk_it.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Aggiungi account - + Remove Rimuovi - + %1 downloads %1 download - + Online In linea - + Connecting... In collegamento... - + Offline Sconnesso diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts index 4e85a401d1..0551a7bc00 100644 --- a/lang/tomahawk_ja.ts +++ b/lang/tomahawk_ja.ts @@ -2032,32 +2032,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account アカウントを追加 - + Remove 削除 - + %1 downloads %1ダウンロード - + Online オンライン - + Connecting... 接続中... - + Offline ・オフライン diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts index 13e954301c..820a01d8a3 100644 --- a/lang/tomahawk_lt.ts +++ b/lang/tomahawk_lt.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Pridėti paskyrą - + Remove Pašalinti - + %1 downloads %1 atsisiuntimų - + Online Prisijungęs - + Connecting... Jungiamasi... - + Offline Atsijungęs diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts index ac1e2ce137..8cc709233d 100644 --- a/lang/tomahawk_pl.ts +++ b/lang/tomahawk_pl.ts @@ -2029,32 +2029,32 @@ połączyć się i strumieniować od ciebie? Tomahawk::Accounts::AccountDelegate - + Add Account Dodaj Konto - + Remove - + %1 downloads pobrań: %1 - + Online Online - + Connecting... Łączenie... - + Offline Offline diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts index a2d063f8c6..91e53cdea5 100644 --- a/lang/tomahawk_pt_BR.ts +++ b/lang/tomahawk_pt_BR.ts @@ -2029,32 +2029,32 @@ se conecte e faça o stream de você? Tomahawk::Accounts::AccountDelegate - + Add Account Adicionar Conta - + Remove Remover - + %1 downloads %1 downloads - + Online Online - + Connecting... Conectando... - + Offline Offline diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts index 8986852080..2420ae7e5e 100644 --- a/lang/tomahawk_ru.ts +++ b/lang/tomahawk_ru.ts @@ -2035,32 +2035,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account Добавить аккаунт - + Remove Удалить - + %1 downloads %1 загружено - + Online В сети - + Connecting... Соединяюсь... - + Offline Не в сети diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts index 7039f947b3..0ce47fb51d 100644 --- a/lang/tomahawk_sv.ts +++ b/lang/tomahawk_sv.ts @@ -2031,32 +2031,32 @@ och radiostationer baserat på din personliga profil Tomahawk::Accounts::AccountDelegate - + Add Account Lägg till konto - + Remove Ta bort - + %1 downloads %1 nedladdningar - + Online Uppkopplad - + Connecting... Ansluter… - + Offline Nedkopplad diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts index 5540fc1922..be7484273b 100644 --- a/lang/tomahawk_tr.ts +++ b/lang/tomahawk_tr.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account - + Remove - + %1 downloads - + Online - + Connecting... - + Offline diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts index 5dccce63c7..38bdc63711 100644 --- a/lang/tomahawk_zh_CN.ts +++ b/lang/tomahawk_zh_CN.ts @@ -2030,32 +2030,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account 添加账户 - + Remove 移除 - + %1 downloads %1 个下载 - + Online 在线 - + Connecting... 连接中... - + Offline 离线 diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts index 3f7aaf66f2..abc3f5bdb4 100644 --- a/lang/tomahawk_zh_TW.ts +++ b/lang/tomahawk_zh_TW.ts @@ -2027,32 +2027,32 @@ connect and stream from you? Tomahawk::Accounts::AccountDelegate - + Add Account 新增帳戶 - + Remove - + %1 downloads - + Online 線上 - + Connecting... 連接中... - + Offline 離線 From 79fff5ce0ec05d64c6fcfa77deaff7a6c0b34d08 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Fri, 18 Jan 2013 01:26:47 +0100 Subject: [PATCH 302/310] Set SOVERSION of libtomahawk to current Tomahawk version, we won't give any ABI guarantee in the foreseeable future --- CMakeLists.txt | 2 ++ src/libtomahawk/CMakeLists.txt | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f0f02c89d..a563ebd231 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,10 +62,12 @@ ENDIF() # base string used in release and unstable builds SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION_MAJOR}.${TOMAHAWK_VERSION_MINOR}.${TOMAHAWK_VERSION_PATCH} ) +SET(TOMAHAWK_VERSION_SHORT "${TOMAHAWK_VERSION}") IF( TOMAHAWK_VERSION_RC ) SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}rc${TOMAHAWK_VERSION_RC} ) ENDIF() + # additional info for non-release builds IF( NOT BUILD_RELEASE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git/" ) INCLUDE( CMakeDateStamp ) diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 4aec4e9e92..fe54f76c89 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -429,7 +429,15 @@ qt_wrap_ui(libUI_H ${libUI}) SET( libSources ${libSources} ${libUI_H} ) add_library( tomahawklib SHARED ${libSources}) -set_target_properties(tomahawklib PROPERTIES AUTOMOC TRUE) +set_target_properties( + tomahawklib + PROPERTIES + AUTOMOC TRUE + VERSION ${TOMAHAWK_VERSION_SHORT} + SOVERSION ${TOMAHAWK_VERSION_SHORT} +) + + qt5_use_modules(tomahawklib Widgets Network Sql WebKitWidgets Concurrent Xml UiTools Svg) IF(QCA2_FOUND) From 7e7ee84d9a39a5350c46e34c19aa8c413a8dfe7e Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Fri, 18 Jan 2013 01:28:37 +0100 Subject: [PATCH 303/310] Revert searching for specific Boost components --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a563ebd231..6b562c03ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,7 +202,7 @@ macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://develo include( CheckTagLibFileName ) check_taglib_filename( COMPLEX_TAGLIB_FILENAME ) -find_package(Boost COMPONENTS regex thread filesystem random system date_time REQUIRED) +find_package(Boost REQUIRED) macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination macro_optional_find_package(QCA2) From 62f540f4aa6a4ed3999242fdb7d9e810b1b4a6cc Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 18 Jan 2013 04:03:28 +0100 Subject: [PATCH 304/310] * Fixed comment typo. I can't get more pedantic than that, promised. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b562c03ac..19e6f0c0e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,7 +203,7 @@ include( CheckTagLibFileName ) check_taglib_filename( COMPLEX_TAGLIB_FILENAME ) find_package(Boost REQUIRED) -macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination +macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explanation macro_optional_find_package(QCA2) macro_log_feature(QCA2_FOUND "QCA2" "Provides encryption and signing functions required for Grooveshark resolver" "http://delta.affinix.com/qca/" TRUE "" "") From f56c9d7da5f22745d8f2b64e4f7e7e7521a2416f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 18 Jan 2013 10:36:01 +0100 Subject: [PATCH 305/310] * Don't crash after d&d operation. --- src/libtomahawk/playlist/TrackView.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp index 1a0bd68949..681d7479c1 100644 --- a/src/libtomahawk/playlist/TrackView.cpp +++ b/src/libtomahawk/playlist/TrackView.cpp @@ -623,7 +623,7 @@ TrackView::startDrag( Qt::DropActions supportedActions ) m_proxyModel->removeIndexes( pindexes ); } - delete drag; + // delete drag; FIXME? On OSX it doesn't seem to get deleted automatically. } From bf9701eb0197d7c140c4c4bc78709e16df791151 Mon Sep 17 00:00:00 2001 From: Tomahawk CI Date: Sat, 19 Jan 2013 01:16:40 +0100 Subject: [PATCH 306/310] Automatic merge of Transifex translations --- lang/tomahawk_gl.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts index 20f86a4412..93342f2bb9 100644 --- a/lang/tomahawk_gl.ts +++ b/lang/tomahawk_gl.ts @@ -194,7 +194,7 @@ connect and stream from you? Enter Full Screen - + Entrar na pantalla ao completo @@ -1389,7 +1389,7 @@ connect and stream from you? Script Resolver Error: %1 %2 %3 %4 - + Erro do solucionador de erros: %1 %2 %3 %4 @@ -3409,12 +3409,12 @@ enter the displayed PIN number here: Exit Full Screen - + Saír da pantalla ao completo Enter Full Screen - + Entrar na pantalla ao completo From 8ef825aba7cab99cadf6e2860ae8cc02b7318ff3 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 19 Jan 2013 13:33:23 +0100 Subject: [PATCH 307/310] * Style fixes for AccountManager. --- src/libtomahawk/accounts/AccountManager.cpp | 28 +++++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/libtomahawk/accounts/AccountManager.cpp b/src/libtomahawk/accounts/AccountManager.cpp index 320d4e9af6..8664099e2d 100644 --- a/src/libtomahawk/accounts/AccountManager.cpp +++ b/src/libtomahawk/accounts/AccountManager.cpp @@ -146,8 +146,9 @@ AccountManager::loadPluginFactories( const QStringList& paths ) bool AccountManager::hasPluginWithFactory( const QString& factory ) const { - foreach( Account* account, m_accounts ) { - if( factoryFromId( account->accountId() ) == factory ) + foreach ( Account* account, m_accounts ) + { + if ( factoryFromId( account->accountId() ) == factory ) return true; } return false; @@ -161,6 +162,7 @@ AccountManager::factoryFromId( const QString& accountId ) const return accountId.split( "_" ).first(); } + AccountFactory* AccountManager::factoryForAccount( Account* account ) const { @@ -230,7 +232,7 @@ void AccountManager::connectAll() { tDebug( LOGVERBOSE ) << Q_FUNC_INFO; - foreach( Account* acc, m_accounts ) + foreach ( Account* acc, m_accounts ) { if ( acc->enabled() ) { @@ -247,7 +249,7 @@ void AccountManager::disconnectAll() { tDebug( LOGVERBOSE ) << Q_FUNC_INFO; - foreach( Account* acc, m_enabledAccounts ) + foreach ( Account* acc, m_enabledAccounts ) acc->deauthenticate(); m_enabledAccounts.clear(); @@ -272,10 +274,10 @@ AccountManager::loadFromConfig() { QStringList accountIds = TomahawkSettings::instance()->accounts(); qDebug() << "LOADING ALL ACCOUNTS" << accountIds; - foreach( const QString& accountId, accountIds ) + foreach ( const QString& accountId, accountIds ) { QString pluginFactory = factoryFromId( accountId ); - if( m_accountFactories.contains( pluginFactory ) ) + if ( m_accountFactories.contains( pluginFactory ) ) { Account* account = loadPlugin( accountId ); addAccount( account ); @@ -283,11 +285,12 @@ AccountManager::loadFromConfig() } } + void AccountManager::initSIP() { tDebug() << Q_FUNC_INFO; - foreach( Account* account, accounts() ) + foreach ( Account* account, accounts() ) { hookupAndEnable( account, true ); } @@ -376,7 +379,7 @@ AccountManager::accountFromPath( const QString& accountPath ) } } - Q_ASSERT_X( false, "Shouldn't have had no account factory accepting a path.. at least ResolverAccount!!", ""); + Q_ASSERT_X( false, "Shouldn't have had no account factory accepting a path.. at least ResolverAccount!", "" ); return 0; } @@ -398,15 +401,16 @@ AccountManager::addAccountFactory( AccountFactory* factory ) Account* AccountManager::zeroconfAccount() const { - foreach( Account* account, accounts() ) + foreach ( Account* account, accounts() ) { - if( account->sipPlugin() && account->sipPlugin()->serviceName() == "zeroconf" ) + if ( account->sipPlugin() && account->sipPlugin()->serviceName() == "zeroconf" ) return account; } return 0; } + void AccountManager::hookupAccount( Account* account ) const { @@ -450,16 +454,18 @@ AccountManager::onError( int code, const QString& msg ) } } + void AccountManager::onSettingsChanged() { - foreach( Account* account, m_accounts ) + foreach ( Account* account, m_accounts ) { if ( account->types() & Accounts::SipType && account->sipPlugin() ) account->sipPlugin()->checkSettings(); } } + void AccountManager::onStateChanged( Account::ConnectionState state ) { From c3fb3df84012ec3f8fb78411a5f8478833ef366f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 18 Jan 2013 08:47:15 +0100 Subject: [PATCH 308/310] * Try to fix search field behaviour on OSX. --- .../thirdparty/Qocoa/qsearchfield.cpp | 5 ++ .../thirdparty/Qocoa/qsearchfield.h | 10 +-- .../thirdparty/Qocoa/qsearchfield_mac.mm | 83 ++++++++++--------- 3 files changed, 53 insertions(+), 45 deletions(-) diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield.cpp b/src/libtomahawk/thirdparty/Qocoa/qsearchfield.cpp index a1aa829e2c..bf77d088a2 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield.cpp +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield.cpp @@ -145,4 +145,9 @@ void QSearchField::resizeEvent(QResizeEvent* e) } +bool QSearchField::eventFilter(QObject *o, QEvent *e) +{ + return QWidget::eventFilter(o, e); +} + #include "qsearchfield.moc" diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield.h b/src/libtomahawk/thirdparty/Qocoa/qsearchfield.h index 0b429972fc..604a657a94 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield.h +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield.h @@ -10,19 +10,16 @@ class QSearchFieldPrivate; class DLLEXPORT QSearchField : public QWidget { Q_OBJECT - - Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText); - public: explicit QSearchField(QWidget *parent); QString text() const; QString placeholderText() const; - void setFocus(Qt::FocusReason); + void setFocus(Qt::FocusReason reason); public slots: void setText(const QString &text); - void setPlaceholderText(const QString& text); + void setPlaceholderText(const QString &text); void clear(); void selectAll(); void setFocus(); @@ -34,10 +31,13 @@ public slots: protected: void resizeEvent(QResizeEvent*); + bool eventFilter(QObject*, QEvent*); private: friend class QSearchFieldPrivate; QPointer pimpl; + + Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText); }; #endif // QSEARCHFIELD_H diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm index 54fafd83ca..9731ae1035 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm @@ -1,6 +1,5 @@ /* Copyright (C) 2011 by Mike McQuaid -Copyright (C) 2011 by Leo Franchi Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22,20 +21,16 @@ of this software and associated documentation files (the "Software"), to deal */ #include "qsearchfield.h" -#include "moc_qsearchfield.cpp" #include "qocoa_mac.h" -#import +#import "Foundation/NSAutoreleasePool.h" +#import "Foundation/NSNotification.h" +#import "AppKit/NSSearchField.h" #include #include -#define KEYCODE_A 0 -#define KEYCODE_X 7 -#define KEYCODE_C 8 -#define KEYCODE_V 9 - class QSearchFieldPrivate : public QObject { public: @@ -81,7 +76,6 @@ -(void)controlTextDidChange:(NSNotification*)notification { } -(void)controlTextDidEndEditing:(NSNotification*)notification { - Q_UNUSED(notification); // No Q_ASSERT here as it is called on destruction. if (pimpl) pimpl->textDidEndEditing(); @@ -91,6 +85,15 @@ -(void)controlTextDidEndEditing:(NSNotification*)notification { } @end +namespace { + +static const unsigned short kKeycodeA = 0; +static const unsigned short kKeycodeX = 7; +static const unsigned short kKeycodeC = 8; +static const unsigned short kKeycodeV = 9; + +} // namespace + @interface QocoaSearchField : NSSearchField -(BOOL)performKeyEquivalent:(NSEvent*)event; @end @@ -100,24 +103,24 @@ -(BOOL)performKeyEquivalent:(NSEvent*)event { if ([event type] == NSKeyDown && [event modifierFlags] & NSCommandKeyMask) { const unsigned short keyCode = [event keyCode]; - if (keyCode == KEYCODE_A) + if (keyCode == kKeycodeA) // Cmd+a { [self performSelector:@selector(selectText:)]; return YES; } - else if (keyCode == KEYCODE_C) + else if (keyCode == kKeycodeC) // Cmd+c { QClipboard* clipboard = QApplication::clipboard(); clipboard->setText(toQString([self stringValue])); return YES; } - else if (keyCode == KEYCODE_V) + else if (keyCode == kKeycodeV) // Cmd+v { QClipboard* clipboard = QApplication::clipboard(); [self setStringValue:fromQString(clipboard->text())]; return YES; } - else if (keyCode == KEYCODE_X) + else if (keyCode == kKeycodeX) // Cmd+x { QClipboard* clipboard = QApplication::clipboard(); clipboard->setText(toQString([self stringValue])); @@ -145,10 +148,8 @@ -(BOOL)performKeyEquivalent:(NSEvent*)event { setFixedHeight(24); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - layout()->setContentsMargins(2, 0, 2, 0); - setStyleSheet( "* { background: #DDE4EB; }" ); - [search release]; + [pool drain]; } @@ -163,7 +164,7 @@ -(BOOL)performKeyEquivalent:(NSEvent*)event { [pool drain]; } -void QSearchField::setPlaceholderText(const QString& text) +void QSearchField::setPlaceholderText(const QString &text) { Q_ASSERT(pimpl); if (!pimpl) @@ -174,59 +175,61 @@ -(BOOL)performKeyEquivalent:(NSEvent*)event { [pool drain]; } -void QSearchField::clear() -{ +QString QSearchField::placeholderText() const { Q_ASSERT(pimpl); - if (!pimpl) - return; - - [pimpl->nsSearchField setStringValue:@""]; - emit textChanged(QString()); + NSString* placeholder = [[pimpl->nsSearchField cell] placeholderString]; + return toQString(placeholder); } -void QSearchField::selectAll() +void QSearchField::setFocus(Qt::FocusReason reason) { Q_ASSERT(pimpl); if (!pimpl) return; - [pimpl->nsSearchField performSelector:@selector(selectText:)]; + if ([pimpl->nsSearchField acceptsFirstResponder]) + [[pimpl->nsSearchField window] makeFirstResponder: pimpl->nsSearchField]; } -QString QSearchField::text() const +void QSearchField::setFocus() { - Q_ASSERT(pimpl); - if (!pimpl) - return QString(); - - return toQString([pimpl->nsSearchField stringValue]); + setFocus(Qt::OtherFocusReason); } -QString QSearchField::placeholderText() const +void QSearchField::clear() { Q_ASSERT(pimpl); if (!pimpl) - return QString(); + return; - return toQString([[pimpl->nsSearchField cell] placeholderString]); + [pimpl->nsSearchField setStringValue:@""]; + emit textChanged(QString()); } -void QSearchField::setFocus(Qt::FocusReason reason) +void QSearchField::selectAll() { Q_ASSERT(pimpl); if (!pimpl) return; - if ([pimpl->nsSearchField acceptsFirstResponder]) - [[pimpl->nsSearchField window] makeFirstResponder: pimpl->nsSearchField]; + [pimpl->nsSearchField performSelector:@selector(selectText:)]; } -void QSearchField::setFocus() +QString QSearchField::text() const { - setFocus(Qt::OtherFocusReason); + Q_ASSERT(pimpl); + if (!pimpl) + return QString(); + + return toQString([pimpl->nsSearchField stringValue]); } void QSearchField::resizeEvent(QResizeEvent *resizeEvent) { QWidget::resizeEvent(resizeEvent); } + +bool QSearchField::eventFilter(QObject *o, QEvent *e) +{ + return QWidget::eventFilter(o, e); +} From 3737c251d4f5b0bed20a1b9f0fc3cd4dde029866 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 18 Jan 2013 09:06:10 +0100 Subject: [PATCH 309/310] * Fixed compiling on OSX. --- src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm index 9731ae1035..7a87b5bf09 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm @@ -21,6 +21,7 @@ of this software and associated documentation files (the "Software"), to deal */ #include "qsearchfield.h" +#include "moc_qsearchfield.cpp" #include "qocoa_mac.h" From 13bee7fad6db09f74cccbe8770c298fa4b130d54 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 18 Jan 2013 14:51:09 +0100 Subject: [PATCH 310/310] * Don't let NSSearchField grab Cmd + A. --- src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm index 7a87b5bf09..d6aa69dc29 100644 --- a/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm +++ b/src/libtomahawk/thirdparty/Qocoa/qsearchfield_mac.mm @@ -24,6 +24,7 @@ of this software and associated documentation files (the "Software"), to deal #include "moc_qsearchfield.cpp" #include "qocoa_mac.h" +#include "utils/Logger.h" #import "Foundation/NSAutoreleasePool.h" #import "Foundation/NSNotification.h" @@ -104,12 +105,12 @@ -(BOOL)performKeyEquivalent:(NSEvent*)event { if ([event type] == NSKeyDown && [event modifierFlags] & NSCommandKeyMask) { const unsigned short keyCode = [event keyCode]; - if (keyCode == kKeycodeA) // Cmd+a +/* if (keyCode == kKeycodeA) // Cmd+a { [self performSelector:@selector(selectText:)]; return YES; } - else if (keyCode == kKeycodeC) // Cmd+c + else*/ if (keyCode == kKeycodeC) // Cmd+c { QClipboard* clipboard = QApplication::clipboard(); clipboard->setText(toQString([self stringValue]));