1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-19 23:39:42 +01:00
This commit is contained in:
hansschmucker 2014-11-13 15:58:19 +01:00
commit 50e910b350
64 changed files with 4996 additions and 257 deletions

View File

@ -69,7 +69,7 @@ ENDIF (LUCENEPP_INCLUDE_DIR)
SET(LUCENEPP_GOOD_VERSION TRUE)
FIND_PATH(LUCENEPP_LIBRARY_DIR
NAMES liblucene++.dylib liblucene++.so liblucene++.dll.a
NAMES liblucene++.dylib liblucene++.so liblucene++.dll.a lucene++
PATHS ${TRIAL_LIBRARY_PATHS} ${TRIAL_INCLUDE_PATHS} NO_DEFAULT_PATH)
IF (LUCENEPP_LIBRARY_DIR)
MESSAGE(STATUS "Found Lucene++ library dir: ${LUCENEPP_LIBRARY_DIR}")

View File

@ -2,6 +2,8 @@ Version 0.9.0:
* Resolved playback issues by switching to a new audio engine.
Version 0.8.1:
* Fixed importing M3U playlists.
* Sort album grids by artist name.
* Fixed painting issue on 'More Albums' grid.
* Fixed crash when editing/saving track tags.

View File

@ -51,8 +51,8 @@ You can download one of our nightly or stable builds:
| *BUILD* | MAC / OSX | WINDOWS | LINUX |
|:-------:|:---------:|:-------:|:-----:|
|**NIGHTLY** | [**latest**](http://download.tomahawk-player.org/nightly/mac/Tomahawk-latest.dmg) | [**latest**](http://download.tomahawk-player.org/nightly/windows/tomahawk-latest.exe) | *N/A* |
|**STABLE** | [**0.7**](http://download.tomahawk-player.org/Tomahawk-0.7.0.dmg) | [**0.7**](http://download.tomahawk-player.org/tomahawk-0.7.0.exe) | [**0.7**](http://www.tomahawk-player.org/download.html#linux) (various distros) |
|**NIGHTLY** | [**latest**](http://download.tomahawk-player.org/nightly/mac/Tomahawk-latest.dmg) | [**latest**](http://download.tomahawk-player.org/nightly/windows/tomahawk-latest.exe) | [**latest**] (https://launchpad.net/~tomahawk/+archive/ubuntu/nightly) (Ubuntu) |
|**STABLE** | [**0.8**](http://download.tomahawk-player.org/Tomahawk-0.8.0.dmg) | [**0.8**](http://download.tomahawk-player.org/tomahawk-0.8.0.exe) | [**0.8**](http://www.tomahawk-player.org/#page-about) (various distros) |
## BUILD TOMAHAWK

View File

@ -349,7 +349,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1112,7 +1112,7 @@ Password (OTP)</source>
<translation>تقدم</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>خصائص</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation>Напред</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Настройки</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation>Cançons</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation>Endavant</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Propietats</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation>Avant</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Propietats</translation>
</message>

View File

@ -349,7 +349,7 @@ se s vámi spojil?</translation>
<translation>Písně</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Alba</translation>
</message>
@ -1111,7 +1111,7 @@ heslo</translation>
<translation>Vpřed</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Vlastnosti</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -349,7 +349,7 @@ erlauben sich mit dir zu verbinden und von dir zu streamen?</translation>
<translation>Lieder</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Alben</translation>
</message>
@ -1111,7 +1111,7 @@ Password (OTP)</source>
<translation>Vorwärts</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Eigenschaften</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation>Μπροστά</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Ιδιότητες</translation>
</message>

View File

@ -349,7 +349,7 @@ connect and stream from you?</translation>
<translation>Songs</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Albums</translation>
</message>
@ -1111,7 +1111,7 @@ Password (OTP)</translation>
<translation>Forward</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Properties</translation>
</message>

View File

@ -349,7 +349,7 @@ connect and stream from you?</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1111,7 +1111,7 @@ Password (OTP)</translation>
<translation>Forward</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Properties</translation>
</message>

View File

@ -87,7 +87,7 @@ conectarse y transmitir música por usted?</translation>
<message>
<location filename="../src/libtomahawk/ActionCollection.cpp" line="72"/>
<source>&amp;Follow in Real-Time</source>
<translation type="unfinished"/>
<translation>&amp;Seguir en tiempo real</translation>
</message>
<message>
<location filename="../src/libtomahawk/ActionCollection.cpp" line="77"/>
@ -162,7 +162,7 @@ conectarse y transmitir música por usted?</translation>
<message>
<location filename="../src/libtomahawk/ActionCollection.cpp" line="114"/>
<source>Show Offline Friends</source>
<translation type="unfinished"/>
<translation>Mostrar amigos desconectados</translation>
</message>
<message>
<location filename="../src/libtomahawk/ActionCollection.cpp" line="116"/>
@ -247,7 +247,7 @@ conectarse y transmitir música por usted?</translation>
<message>
<location filename="../src/libtomahawk/ActionCollection.cpp" line="179"/>
<source>&amp;Help</source>
<translation>&amp;Ayuda</translation>
<translation>Ay&amp;uda</translation>
</message>
<message>
<location filename="../src/libtomahawk/ActionCollection.cpp" line="188"/>
@ -349,7 +349,7 @@ conectarse y transmitir música por usted?</translation>
<translation>Canciones</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Álbumes</translation>
</message>
@ -489,7 +489,7 @@ conectarse y transmitir música por usted?</translation>
<message>
<location filename="../src/libtomahawk/viewpages/CollectionViewPage.cpp" line="379"/>
<source>After you have scanned your music collection you will find your tracks right here.</source>
<translation type="unfinished"/>
<translation>Después de escanear su colección de música encontrará sus pistas aquí</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/CollectionViewPage.cpp" line="382"/>
@ -566,7 +566,7 @@ conectarse y transmitir música por usted?</translation>
<message>
<location filename="../src/libtomahawk/playlist/ContextView.cpp" line="246"/>
<source>This playlist is currently empty. Add some tracks to it and enjoy the music!</source>
<translation type="unfinished"/>
<translation>Esta lista de reproducción está vacía. ¡Añada algunas pistas y disfrute de la música!</translation>
</message>
</context>
<context>
@ -721,7 +721,7 @@ conectarse y transmitir música por usted?</translation>
<message>
<location filename="../src/libtomahawk/GlobalActionManager.cpp" line="189"/>
<source>Resolver installation from file %1 failed.</source>
<translation type="unfinished"/>
<translation>Falló la instalación del servicio a partir del archivo %1.</translation>
</message>
<message>
<location filename="../src/libtomahawk/GlobalActionManager.cpp" line="197"/>
@ -856,7 +856,7 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/libtomahawk/playlist/InboxView.cpp" line="84"/>
<source>Inbox Details</source>
<translation type="unfinished"/>
<translation>Detalles de la Bandeja de entrada</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/InboxView.cpp" line="93"/>
@ -869,7 +869,7 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/libtomahawk/jobview/IndexingJobItem.cpp" line="33"/>
<source>Indexing Music Library</source>
<translation type="unfinished"/>
<translation>Indizando la fonoteca</translation>
</message>
</context>
<context>
@ -985,12 +985,12 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/tomahawk/sourcetree/items/LovedTracksItem.cpp" line="60"/>
<source>Favorites</source>
<translation type="unfinished"/>
<translation>Favoritos</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/items/LovedTracksItem.cpp" line="86"/>
<source>Sorry, we could not find any of your Favorites!</source>
<translation type="unfinished"/>
<translation>No se encontró ninguno de sus Favoritos.</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/items/LovedTracksItem.cpp" line="89"/>
@ -1111,7 +1111,7 @@ de un solo uso (OTP)</translation>
<translation>Adelante</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Propiedades</translation>
</message>
@ -1513,7 +1513,7 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/libtomahawk/playlist/QueueView.cpp" line="39"/>
<source>Queue Details</source>
<translation type="unfinished"/>
<translation>Datos de cola</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/QueueView.cpp" line="49"/>
@ -1544,7 +1544,7 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/libtomahawk/jobview/ScannerStatusItem.cpp" line="55"/>
<source>Scanning Collection</source>
<translation type="unfinished"/>
<translation>Escaneando Colección</translation>
</message>
</context>
<context>
@ -1626,17 +1626,17 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/libtomahawk/viewpages/SearchViewPage.cpp" line="65"/>
<source>Sorry, we could not find any artists!</source>
<translation type="unfinished"/>
<translation>No se encontró ningún artista.</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/SearchViewPage.cpp" line="86"/>
<source>Sorry, we could not find any albums!</source>
<translation type="unfinished"/>
<translation>No se encontró ningún álbum.</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/SearchViewPage.cpp" line="108"/>
<source>Sorry, we could not find any songs!</source>
<translation type="unfinished"/>
<translation>No se encontró ninguna canción.</translation>
</message>
</context>
<context>
@ -1735,7 +1735,7 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Accounts.ui" line="57"/>
<source>Filter by Capability:</source>
<translation type="unfinished"/>
<translation>Filtrar por Capacidad:</translation>
</message>
</context>
<context>
@ -1763,7 +1763,7 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Advanced.ui" line="82"/>
<source>Host Settings...</source>
<translation type="unfinished"/>
<translation>Configuración del host ...</translation>
</message>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Advanced.ui" line="110"/>
@ -1798,12 +1798,12 @@ de un solo uso (OTP)</translation>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Advanced.ui" line="206"/>
<source>Send Tomahawk Crash Reports</source>
<translation type="unfinished"/>
<translation>Envíe informes de fallos a Tomahawk</translation>
</message>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Advanced.ui" line="216"/>
<source>Show Notifications on song change</source>
<translation type="unfinished"/>
<translation>Mostrar notificaciones de cambio de canción</translation>
</message>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Advanced.ui" line="244"/>
@ -1852,12 +1852,12 @@ y estaciones basadas en sus gustos personales.</translation>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Collection.ui" line="128"/>
<source>Watch for changes (automatically update Collection)</source>
<translation type="unfinished"/>
<translation>Cuidado con los cambios (la Colección se actualiza automáticamente)</translation>
</message>
<message>
<location filename="../src/tomahawk/dialogs/Settings_Collection.ui" line="137"/>
<source>Time between scans (in seconds):</source>
<translation type="unfinished"/>
<translation>Tiempo entre escaneo (en segundos):</translation>
</message>
</context>
<context>
@ -2077,7 +2077,7 @@ y estaciones basadas en sus gustos personales.</translation>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="99"/>
<source>Source</source>
<translation type="unfinished"/>
<translation>Fuente</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="102"/>
@ -2102,22 +2102,22 @@ y estaciones basadas en sus gustos personales.</translation>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="312"/>
<source>Cloud Collections</source>
<translation type="unfinished"/>
<translation>Colecciones de la nube</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="300"/>
<source>Discover</source>
<translation type="unfinished"/>
<translation>Descubre</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="301"/>
<source>Open Pages</source>
<translation type="unfinished"/>
<translation>Páginas abiertas</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="303"/>
<source>Your Music</source>
<translation type="unfinished"/>
<translation>Tu Música</translation>
</message>
<message>
<location filename="../src/tomahawk/sourcetree/SourcesModel.cpp" line="311"/>
@ -2140,12 +2140,12 @@ y estaciones basadas en sus gustos personales.</translation>
<message>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui" line="129"/>
<source>Log In</source>
<translation>Iniciar sesión</translation>
<translation>Acceder</translation>
</message>
<message>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui" line="136"/>
<source>Right click on any Tomahawk playlist to sync it to Spotify.</source>
<translation>Haga click derecho en cualquier lista de Tomahawk para sincronizarla con Spotify.</translation>
<translation>Haga clic secundario en cualquier lista de Tomahawk para sincronizarla con Spotify.</translation>
</message>
<message>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui" line="153"/>
@ -2160,7 +2160,7 @@ y estaciones basadas en sus gustos personales.</translation>
<message>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui" line="179"/>
<source>High Quality Streams</source>
<translation>Streams de alta calidad</translation>
<translation>Transmisiones de alta calidad</translation>
</message>
<message>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.ui" line="196"/>
@ -2523,7 +2523,7 @@ y estaciones basadas en sus gustos personales.</translation>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp" line="302"/>
<location filename="../src/libtomahawk/accounts/spotify/SpotifyAccountConfig.cpp" line="314"/>
<source>Log In</source>
<translation>Iniciar sesión</translation>
<translation>Acceder</translation>
</message>
</context>
<context>
@ -2603,7 +2603,7 @@ usuario@jabber.org</translation>
<message>
<location filename="../src/accounts/zeroconf/ZeroconfAccount.h" line="46"/>
<source>Automatically connect to Tomahawk users on the same local network.</source>
<translation type="unfinished"/>
<translation>Conectarse automáticamente a los usuarios de Tomahawk en la misma red local.</translation>
</message>
</context>
<context>
@ -2760,7 +2760,7 @@ usuario@jabber.org</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp" line="84"/>
<source>Save Settings</source>
<translation type="unfinished"/>
<translation>Guardar configuración</translation>
</message>
</context>
<context>
@ -2829,12 +2829,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="165"/>
<source>Similar To</source>
<translation type="unfinished"/>
<translation>Similar A</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="166"/>
<source>Limit To</source>
<translation type="unfinished"/>
<translation>Limitar a</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="170"/>
@ -2871,7 +2871,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="246"/>
<source>Enter any combination of song name and artist here...</source>
<translation type="unfinished"/>
<translation>Introduzca cualquier combinación de nombre de la canción y del artista aquí...</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="267"/>
@ -3109,23 +3109,23 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="498"/>
<source>Electric</source>
<comment>Song type</comment>
<translation type="unfinished"/>
<translation>Electrónica</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="499"/>
<source>Christmas</source>
<comment>Song type: A christmas song</comment>
<translation type="unfinished"/>
<translation>Navidad</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="526"/>
<source>At Least</source>
<translation type="unfinished"/>
<translation>Por lo menos</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="527"/>
<source>At Most</source>
<translation type="unfinished"/>
<translation>Como máximo</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="879"/>
@ -3152,7 +3152,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="897"/>
<source>You</source>
<translation type="unfinished"/>
<translation>Usted</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp" line="898"/>
@ -3380,12 +3380,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="87"/>
<source>Notify User</source>
<translation type="unfinished"/>
<translation>Notificar al usuario</translation>
</message>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="88"/>
<source>Now Playing</source>
<translation type="unfinished"/>
<translation>Reproduciendo ahora</translation>
</message>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="89"/>
@ -3412,14 +3412,14 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="204"/>
<source>%1%4 %2%3.</source>
<comment>%1 is a title, %2 is an artist and %3 is replaced by either the previous message or nothing, %4 is the preposition used to link track and artist ('by' in english)</comment>
<translation type="unfinished"/>
<translation>%1%4 %2%3.</translation>
</message>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="208"/>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="270"/>
<source>by</source>
<comment>preposition to link track and artist</comment>
<translation type="unfinished"/>
<translation>por</translation>
</message>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="217"/>
@ -3431,20 +3431,21 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="219"/>
<source>&quot;%1&quot; by %2%3.</source>
<comment>%1 is a title, %2 is an artist and %3 is replaced by either the previous message or nothing</comment>
<translation type="unfinished"/>
<translation>«%1» por %2%3.</translation>
</message>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="266"/>
<source>%1 sent you
%2%4 %3.</source>
<comment>%1 is a nickname, %2 is a title, %3 is an artist, %4 is the preposition used to link track and artist ('by' in english)</comment>
<translation type="unfinished"/>
<translation>%1 te envió
%2%4 %3.</translation>
</message>
<message>
<location filename="../src/infoplugins/generic/snorenotify/SnoreNotifyPlugin.cpp" line="277"/>
<source>%1 sent you &quot;%2&quot; by %3.</source>
<comment>%1 is a nickname, %2 is a title, %3 is an artist</comment>
<translation type="unfinished"/>
<translation>%1 te envió &quot;%2&quot; de %3.</translation>
</message>
</context>
<context>
@ -3502,7 +3503,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/database/LocalCollection.cpp" line="42"/>
<source>Your Collection</source>
<translation type="unfinished"/>
<translation>Tu colección</translation>
</message>
</context>
<context>
@ -3624,7 +3625,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/charts/ChartsWidget.h" line="130"/>
<source>Charts</source>
<translation type="unfinished"/>
<translation>Listas de éxitos</translation>
</message>
</context>
<context>
@ -3645,7 +3646,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/dashboard/Dashboard.cpp" line="78"/>
<source>Recently Played Tracks</source>
<translation type="unfinished"/>
<translation>Pistas reproducidas recientemente</translation>
</message>
<message>
<location filename="../src/viewpages/dashboard/Dashboard.cpp" line="72"/>
@ -3724,7 +3725,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/newreleases/NewReleasesWidget.h" line="120"/>
<source>New Releases</source>
<translation type="unfinished"/>
<translation>Últimas novedades</translation>
</message>
</context>
<context>
@ -3737,7 +3738,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNew_0_8.h" line="90"/>
<source>An overview of the changes and additions since 0.7.</source>
<translation type="unfinished"/>
<translation>Un resumen de los cambios y adiciones desde 0.7.</translation>
</message>
</context>
<context>
@ -3753,17 +3754,17 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/tomahawk/TomahawkApp.cpp" line="517"/>
<source>You</source>
<translation type="unfinished"/>
<translation>usted</translation>
</message>
<message>
<location filename="../src/tomahawk/TomahawkApp.cpp" line="604"/>
<source>Tomahawk is updating the database. Please wait, this may take a minute!</source>
<translation type="unfinished"/>
<translation>Tomahawk está actualizando la base de datos. Espere un momento.</translation>
</message>
<message>
<location filename="../src/tomahawk/TomahawkApp.cpp" line="611"/>
<source>Tomahawk</source>
<translation type="unfinished"/>
<translation>Tomahawk</translation>
</message>
<message>
<location filename="../src/tomahawk/TomahawkApp.cpp" line="712"/>
@ -3917,7 +3918,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<location filename="../src/tomahawk/TomahawkWindow.cpp" line="1014"/>
<location filename="../src/tomahawk/TomahawkWindow.cpp" line="1021"/>
<source>Love</source>
<translation type="unfinished"/>
<translation>Favorito</translation>
</message>
<message>
<location filename="../src/tomahawk/TomahawkWindow.cpp" line="1009"/>
@ -4004,7 +4005,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/tomahawk/TomahawkWindow.cpp" line="332"/>
<source>Search</source>
<translation type="unfinished"/>
<translation>Buscar</translation>
</message>
<message>
<location filename="../src/tomahawk/TomahawkWindow.cpp" line="1353"/>
@ -4049,12 +4050,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/TrackDetailView.cpp" line="79"/>
<source>Marked as Favorite</source>
<translation type="unfinished"/>
<translation>Marcar como Favorito</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/TrackDetailView.cpp" line="97"/>
<source>Alternate Sources:</source>
<translation type="unfinished"/>
<translation>Fuentes alternas:</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/TrackDetailView.cpp" line="175"/>
@ -4082,7 +4083,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/viewpages/TrackViewPage.ui" line="60"/>
<source>Top Hits</source>
<translation type="unfinished"/>
<translation>Grandes éxitos</translation>
</message>
</context>
<context>
@ -4148,7 +4149,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="78"/>
<source>Adventurousness</source>
<translation type="unfinished"/>
<translation>Audacia</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="79"/>
@ -4168,12 +4169,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="80"/>
<source>Loudness</source>
<translation type="unfinished"/>
<translation>Volumen</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="81"/>
<source>Danceability</source>
<translation type="unfinished"/>
<translation>Bailabilidad</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="81"/>
@ -4183,17 +4184,17 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="82"/>
<source>Artist Familiarity</source>
<translation type="unfinished"/>
<translation>Familiaridad del artista</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="82"/>
<source>Artist Hotttnesss</source>
<translation type="unfinished"/>
<translation>Popularidad del artista</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="83"/>
<source>Song Hotttnesss</source>
<translation type="unfinished"/>
<translation>Popularidad de la pista</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="83"/>
@ -4213,7 +4214,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="85"/>
<source>Key</source>
<translation type="unfinished"/>
<translation>Tonalidad</translation>
</message>
<message>
<location filename="../src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp" line="85"/>
@ -4254,7 +4255,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="174"/>
<source>Inbox</source>
<translation type="unfinished"/>
<translation>Bandeja de Entrada</translation>
</message>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="213"/>
@ -4269,7 +4270,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="253"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Love that your friends and influencers are posting music links but hate that they are links for music services you don&apos;t use? Just drag Rdio, Deezer, Beats or other music service URLs into your Tomahawk queue or playlists and have them automatically play from your preferred source.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Me encanta que sus amigos y personas influyentes estén publicando enlaces de música pero odias que son enlaces para servicios de música que no usas? Sólo tienes que arrastrar Rdio, Deezer, Beats u otras URLs de servicios de música en la cola de Tomahawk o a las listas de reproducción y hacer que se reproduzcan automáticamente de su fuente preferida.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="270"/>
@ -4289,7 +4290,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="336"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Google Music is another of our latest supported services - both for the music you&apos;ve uploaded to Google Music as well as their full streaming catalog for Google Play Music All Access subscribers. Not only is all of your Google Play Music a potential source for streaming - your entire online collection is browseable too.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Google Music es otro de nuestros últimos servicios soportados - así como su catálogo completo en streaming de Google Play Music, Sólo con acceso de subscripción. No sólo toda tu música de su Google Play Music una fuente potencial para el streaming - toda su colección en línea es navegable también.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="376"/>
@ -4304,7 +4305,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.</translation>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="419"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tomahawk now supports IPv6 and multiple local IP addresses. This improves the discoverability and connection between Tomahawk users - particularly large local networks often found in work and university settings. The more friends, the more music, the more playlists and the more curation from those people whose musical tastes you value. Sit back and just Listen Along!&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tomahawk ahora es compatible con IPv6 y múltiples direcciones IP locales. Esto mejora la capacidad de descubrimiento y conexión entre los usuarios Tomahawk - particularmente grandes redes locales a menudo se encuentran en los entornos de trabajo y de la universidad. Cuantos más amigos, más música, más listas y más de curación de aquellas personas cuyos gustos musicales valoras. Siéntese y simplemente escuchar a lo alrgo de un buen tiempo!&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/viewpages/whatsnew_0_8/WhatsNewWidget_0_8.ui" line="353"/>
@ -4481,12 +4482,12 @@ Letras de «%1» por %2:
<message>
<location filename="../src/accounts/xmpp/XmppConfigWidget.ui" line="58"/>
<source>Configure this Jabber/XMPP account</source>
<translation type="unfinished"/>
<translation>Configurar esta cuenta Jabber/XMPP</translation>
</message>
<message>
<location filename="../src/accounts/xmpp/XmppConfigWidget.ui" line="104"/>
<source>Enter your XMPP login to connect with your friends using Tomahawk!</source>
<translation type="unfinished"/>
<translation>Introduzca sus datos de inicio de sesión de XMPP para conectarse son sus amigos que usen Tomahawk!</translation>
</message>
<message>
<location filename="../src/accounts/xmpp/XmppConfigWidget.ui" line="231"/>

View File

@ -349,7 +349,7 @@ yhdistää ja toistaa sinulta virtaa?</translation>
<translation>Kappaleet</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Albumit</translation>
</message>
@ -1111,7 +1111,7 @@ salasana (OTP)</translation>
<translation>Seuraava</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Ominaisuudet</translation>
</message>

View File

@ -349,7 +349,7 @@ de se connecter et streamer votre flux ?</translation>
<translation>Chansons</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Albums</translation>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation>Avancer</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Propriétés</translation>
</message>
@ -2345,7 +2345,7 @@ Password (OTP)</source>
<message>
<location filename="../src/accounts/hatchet/account/HatchetAccount.h" line="51"/>
<source>Connect to Hatchet to capture your playback data, sync your playlists to Android and more.</source>
<translation>Connectez-vous à Hatchet pour récupérer votre informations de lecture, synchroniser vos collections vers Android, et plus.</translation>
<translation>Connectez-vous à Hatchet pour récupérer vos informations de lecture, synchroniser vos collections vers Android, et plus.</translation>
</message>
</context>
<context>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation>Adiante</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Propiedades</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation>Előre</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Tulajdonságok</translation>
</message>

View File

@ -349,7 +349,7 @@ terhubung dan memutar secara langsung?</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -349,7 +349,7 @@ connettersi e condividere la tua musica?</translation>
<translation>Brani</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Albums</translation>
</message>
@ -1111,7 +1111,7 @@ temporanea (OTP)</translation>
<translation>Avanti</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Proprietà</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation></translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation></translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation>Pirmyn</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -349,7 +349,7 @@ te verbinden en te streamen vanuit jou?</translation>
<translation>Nummers</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Albums</translation>
</message>
@ -1111,7 +1111,7 @@ opgeven (OTP)</translation>
<translation>Vooruit</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Eigenschappen</translation>
</message>

View File

@ -349,7 +349,7 @@ połączyć się i strumieniować od ciebie?</translation>
<translation>Utwory</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Albumy</translation>
</message>
@ -1111,7 +1111,7 @@ jednorazowe (OTP)</translation>
<translation>Naprzód</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Właściwości</translation>
</message>

View File

@ -349,7 +349,7 @@ se conecte e faça o stream de você?</translation>
<translation>Faixas</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Álbuns</translation>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation>Avançar</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Propriedades</translation>
</message>

4648
lang/tomahawk_pt_PT.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@ -349,7 +349,7 @@ se conecteze și să redea de la tine?</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1111,7 +1111,7 @@ Password (OTP)</translation>
<translation>Înainte</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Proprietăți</translation>
</message>

View File

@ -350,7 +350,7 @@ connect and stream from you?</source>
<translation>Песни</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Альбомы</translation>
</message>
@ -1112,7 +1112,7 @@ Password (OTP)</source>
<translation>Вперед</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Свойства</translation>
</message>

View File

@ -349,7 +349,7 @@ lidhuni dhe transmeto nga ju?</translation>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation>Përpara</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Cilësimet</translation>
</message>

View File

@ -349,7 +349,7 @@ ansluta och strömma från dig?</translation>
<translation>Låtar</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Album</translation>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation>Framåt</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Egenskaper</translation>
</message>

View File

@ -349,7 +349,7 @@ connect and stream from you?</source>
<translation></translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation></translation>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation></translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation></translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -349,7 +349,7 @@ connect and stream from you?</source>
<translation>Пісні</translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation>Альбоми</translation>
</message>
@ -1111,7 +1111,7 @@ Password (OTP)</source>
<translation>Вперед</translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation>Властивості</translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation></translation>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation></translation>
</message>
@ -1110,7 +1110,7 @@ Password (OTP)</source>
<translation></translation>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation></translation>
</message>

View File

@ -348,7 +348,7 @@ connect and stream from you?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="200"/>
<location filename="../src/libtomahawk/viewpages/ArtistViewPage.cpp" line="201"/>
<source>Albums</source>
<translation type="unfinished"/>
</message>
@ -1109,7 +1109,7 @@ Password (OTP)</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="376"/>
<location filename="../src/libtomahawk/filemetadata/MetadataEditor.cpp" line="381"/>
<source>Properties</source>
<translation type="unfinished"/>
</message>

View File

@ -108,7 +108,7 @@ ActionCollection::initActions()
connect( m_actionCollection[ "nextTrack" ], SIGNAL( triggered() ), ae, SLOT( next() ), Qt::UniqueConnection );
// main menu actions
m_actionCollection[ "loadXSPF" ] = new QAction( tr( "Import Playlist..." ), this );
m_actionCollection[ "importPlaylist" ] = new QAction( tr( "Import Playlist..." ), 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 Friends" ), this );
@ -163,7 +163,7 @@ ActionCollection::createMenuBar( QWidget *parent )
controlsMenu->addAction( m_actionCollection[ "togglePrivacy" ] );
controlsMenu->addAction( m_actionCollection[ "showOfflineSources" ] );
controlsMenu->addSeparator();
controlsMenu->addAction( m_actionCollection[ "loadXSPF" ] );
controlsMenu->addAction( m_actionCollection[ "importPlaylist" ] );
controlsMenu->addAction( m_actionCollection[ "updateCollection" ] );
controlsMenu->addAction( m_actionCollection[ "rescanCollection" ] );
controlsMenu->addSeparator();
@ -226,7 +226,7 @@ ActionCollection::createMenuBar( QWidget *parent )
QMenu*
ActionCollection::createCompactMenu( QWidget *parent )
ActionCollection::createCompactMenu( QWidget* parent )
{
QMenu* compactMenu = new QMenu( tr( "Main Menu" ), parent );
compactMenu->setFont( TomahawkUtils::systemFont() );
@ -238,7 +238,7 @@ ActionCollection::createCompactMenu( QWidget *parent )
compactMenu->addAction( m_actionCollection[ "togglePrivacy" ] );
compactMenu->addAction( m_actionCollection[ "showOfflineSources" ] );
compactMenu->addSeparator();
compactMenu->addAction( m_actionCollection[ "loadXSPF" ] );
compactMenu->addAction( m_actionCollection[ "importPlaylist" ] );
compactMenu->addAction( m_actionCollection[ "updateCollection" ] );
compactMenu->addAction( m_actionCollection[ "rescanCollection" ] );
compactMenu->addSeparator();

View File

@ -39,7 +39,7 @@ public:
static ActionCollection* instance();
ActionCollection( QObject *parent );
ActionCollection( QObject* parent );
~ActionCollection();
void initActions();
@ -47,7 +47,7 @@ public:
/**
* This method returns a main menu bar, suitable for Windows, Mac and X11.
*/
QMenuBar *createMenuBar( QWidget *parent );
QMenuBar* createMenuBar( QWidget* parent );
/**
* Returns a QMenu with all the entries that would normally be in the main menu,
@ -55,7 +55,7 @@ public:
* and fairly little sense on Unity and other X11 desktop configurations which pull
* out the menu bar from the window.
*/
QMenu *createCompactMenu( QWidget *parent );
QMenu* createCompactMenu( QWidget* parent );
QAction* getAction( const QString& name );
QList< QAction* > getAction( ActionDestination category );

View File

@ -1545,19 +1545,19 @@ TomahawkSettings::updateIndex()
QString
TomahawkSettings::importXspfPath() const
TomahawkSettings::importPlaylistPath() const
{
if ( contains( "importXspfPath" ) )
return value( "importXspfPath" ).toString();
if ( contains( "importPlaylistPath" ) )
return value( "importPlaylistPath" ).toString();
else
return QDir::homePath();
}
void
TomahawkSettings::setImportXspfPath( const QString& path )
TomahawkSettings::setImportPlaylistPath( const QString& path )
{
setValue( "importXspfPath", path );
setValue( "importPlaylistPath", path );
}

View File

@ -216,8 +216,8 @@ public:
PrivateListeningMode privateListeningMode() const;
void setPrivateListeningMode( PrivateListeningMode mode );
void setImportXspfPath( const QString& path );
QString importXspfPath() const;
void setImportPlaylistPath( const QString& path );
QString importPlaylistPath() const;
Tomahawk::SerializedUpdaters playlistUpdaters() const;
void setPlaylistUpdaters( const Tomahawk::SerializedUpdaters& updaters );

View File

@ -173,6 +173,21 @@ AudioOutput::setCurrentSource( QIODevice* stream )
}
int readCallback ( void* data, const char* cookie, int64_t* dts, int64_t* pts, unsigned* flags, size_t* bufferSize, void** buffer )
{
MediaStream* mediaStream = static_cast< MediaStream * >( data );
return mediaStream->readCallback( cookie, dts, pts, flags, bufferSize, buffer );
}
int
readDoneCallback ( void *data, const char *cookie, size_t bufferSize, void *buffer )
{
MediaStream* mediaStream = static_cast< MediaStream * >( data );
return mediaStream->readDoneCallback( cookie, bufferSize, buffer );
}
void
AudioOutput::setCurrentSource( MediaStream* stream )
{
@ -248,9 +263,9 @@ AudioOutput::setCurrentSource( MediaStream* stream )
libvlc_media_add_option_flag(m_vlcMedia, "imem-cat=4", libvlc_media_option_trusted);
const char* imemData = QString( "imem-data=%1" ).arg( (uintptr_t)stream ).toLatin1().constData();
libvlc_media_add_option_flag(m_vlcMedia, imemData, libvlc_media_option_trusted);
const char* imemGet = QString( "imem-get=%1" ).arg( (uintptr_t)&MediaStream::readCallback ).toLatin1().constData();
const char* imemGet = QString( "imem-get=%1" ).arg( (uintptr_t)&readCallback ).toLatin1().constData();
libvlc_media_add_option_flag(m_vlcMedia, imemGet, libvlc_media_option_trusted);
const char* imemRelease = QString( "imem-release=%1" ).arg( (uintptr_t)&MediaStream::readDoneCallback ).toLatin1().constData();
const char* imemRelease = QString( "imem-release=%1" ).arg( (uintptr_t)&readDoneCallback ).toLatin1().constData();
libvlc_media_add_option_flag(m_vlcMedia, imemRelease, libvlc_media_option_trusted);
const char* imemSeek = QString( "imem-seek=%1" ).arg( (uintptr_t)&MediaStream::seekCallback ).toLatin1().constData();
libvlc_media_add_option_flag(m_vlcMedia, imemSeek, libvlc_media_option_trusted);

View File

@ -98,38 +98,43 @@ MediaStream::bufferingFinished()
int
MediaStream::readCallback ( void* data, const char* cookie, int64_t* dts, int64_t* pts, unsigned* flags, size_t* bufferSize, void** buffer )
MediaStream::readCallback ( const char* cookie, int64_t* dts, int64_t* pts, unsigned* flags, size_t* bufferSize, void** buffer )
{
Q_UNUSED(cookie);
Q_UNUSED(dts);
Q_UNUSED(pts);
Q_UNUSED(flags);
MediaStream* that = static_cast < MediaStream * > ( data );
qint64 bufsize = 0;
*bufferSize = 0;
if ( that->m_eos == true ) {
if ( m_eos == true )
{
return -1;
}
if ( that->m_type == Stream ) {
bufsize = that->needData(buffer);
if ( m_type == Stream )
{
bufsize = needData( buffer );
}
else if ( that->m_type == IODevice ) {
bufsize = that->m_ioDevice->read( that->m_buffer, BLOCK_SIZE );
*buffer = that->m_buffer;
else if ( m_type == IODevice )
{
bufsize = m_ioDevice->read( m_buffer, BLOCK_SIZE );
*buffer = m_buffer;
}
if ( bufsize > 0 ) {
that->m_started = true;
if ( bufsize > 0 )
{
m_started = true;
}
if ( that->m_type == IODevice && bufsize == 0 && that->m_started && that->m_bufferingFinished == true ) {
that->m_eos = true;
if ( m_type == IODevice && bufsize == 0 && m_started && m_bufferingFinished == true )
{
m_eos = true;
return -1;
}
if ( bufsize < 0 ) {
that->m_eos = true;
if ( bufsize < 0 )
{
m_eos = true;
return -1;
}
@ -139,14 +144,12 @@ MediaStream::readCallback ( void* data, const char* cookie, int64_t* dts, int64_
int
MediaStream::readDoneCallback ( void *data, const char *cookie, size_t bufferSize, void *buffer )
MediaStream::readDoneCallback ( const char *cookie, size_t bufferSize, void *buffer )
{
Q_UNUSED(cookie);
Q_UNUSED(bufferSize);
MediaStream* that = static_cast < MediaStream * > ( data );
if ( ( that->m_type == Stream ) && buffer != 0 && bufferSize > 0 ) {
if ( ( m_type == Stream ) && buffer != nullptr && bufferSize > 0 ) {
delete static_cast< char* >( buffer );
}

View File

@ -54,8 +54,8 @@ public:
virtual void seekStream( qint64 offset ) { (void)offset; }
virtual qint64 needData ( void** buffer ) { (void)buffer; return 0; }
static int readCallback ( void* data, const char* cookie, int64_t* dts, int64_t* pts, unsigned* flags, size_t* bufferSize, void** buffer );
static int readDoneCallback ( void *data, const char *cookie, size_t bufferSize, void *buffer );
int readCallback( const char* cookie, int64_t* dts, int64_t* pts, unsigned* flags, size_t* bufferSize, void** buffer );
int readDoneCallback ( const char *cookie, size_t bufferSize, void *buffer );
static int seekCallback ( void *data, const uint64_t pos );
public slots:

View File

@ -74,15 +74,13 @@ QNR_IODeviceStream::QNR_IODeviceStream( const QSharedPointer<QNetworkReply>& rep
QNR_IODeviceStream::~QNR_IODeviceStream()
{
tDebug() << Q_FUNC_INFO;
}
void
QNR_IODeviceStream::seekStream( qint64 offset )
{
tDebug() << Q_FUNC_INFO;
QMutexLocker locker( &m_mutex );
m_pos = offset;
}
@ -90,6 +88,7 @@ QNR_IODeviceStream::seekStream( qint64 offset )
qint64
QNR_IODeviceStream::needData ( void** buffer )
{
QMutexLocker locker( &m_mutex );
QByteArray data = m_data.mid( m_pos, BLOCK_SIZE );
m_pos += data.size();
if ( ( data.size() == 0 ) && m_networkReply->atEnd() && m_networkReply->isFinished() )
@ -101,13 +100,13 @@ QNR_IODeviceStream::needData ( void** buffer )
*buffer = new char[data.size()];
memcpy(*buffer, data.data(), data.size());
// tDebug() << Q_FUNC_INFO << " Returning buffer with size " << data.size();
return data.size();
}
void
QNR_IODeviceStream::readyRead()
{
QMutexLocker locker( &m_mutex );
m_data += m_networkReply->readAll();
}

View File

@ -26,6 +26,7 @@
#include "DllMacro.h"
#include <QByteArray>
#include <QMutex>
#include <QNetworkReply>
#include <QSharedPointer>
@ -52,6 +53,7 @@ private slots:
void readyRead();
private:
QMutex m_mutex;
QByteArray m_data;
QSharedPointer<QNetworkReply> m_networkReply;
QTimer* m_timer;

View File

@ -384,15 +384,8 @@ PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const T
const unsigned int albumpos2 = t2->albumpos();
const unsigned int discnumber1 = t1->discnumber();
const unsigned int discnumber2 = t2->discnumber();
qint64 id1 = 0, id2 = 0;
// This makes it a stable sorter and prevents items from randomly jumping about.
// FIXME: This always true.
if ( id1 == id2 )
{
id1 = (qint64)&q1;
id2 = (qint64)&q2;
}
const qint64 id1 = (qint64)&q1;
const qint64 id2 = (qint64)&q2;
if ( column == PlayableModel::Artist ) // sort by artist
{
@ -566,6 +559,18 @@ PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const T
}
bool
PlayableProxyModel::lessThan( const Tomahawk::album_ptr& album1, const Tomahawk::album_ptr& album2 ) const
{
if ( album1->artist() == album2->artist() )
{
return QString::localeAwareCompare( album1->sortname(), album2->sortname() ) < 0;
}
return QString::localeAwareCompare( album1->artist()->sortname(), album2->artist()->sortname() ) < 0;
}
bool
PlayableProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) const
{
@ -581,6 +586,10 @@ PlayableProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right
{
return lessThan( left.column(), p1->query(), p2->query() );
}
if ( p1->album() && p2->album() )
{
return lessThan( p1->album(), p2->album() );
}
return QString::localeAwareCompare( sourceModel()->data( left ).toString(), sourceModel()->data( right ).toString() ) < 0;
}

View File

@ -135,7 +135,9 @@ private:
bool nameFilterAcceptsRow( int sourceRow, PlayableItem* pi, const QModelIndex& sourceParent ) const;
bool dupeFilterAcceptsRow( int sourceRow, PlayableItem* pi, const QModelIndex& sourceParent, PlayableProxyModelFilterMemo& memo ) const;
bool visibilityFilterAcceptsRow( int sourceRow, const QModelIndex& sourceParent, PlayableProxyModelFilterMemo& memo ) const;
bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const;
bool lessThan( const Tomahawk::album_ptr& album1, const Tomahawk::album_ptr& album2 ) const;
QPointer<PlayableModel> m_model;

View File

@ -172,6 +172,7 @@ RecentlyPlayedModel::onPlaybackFinished( const Tomahawk::track_ptr& track, const
void
RecentlyPlayedModel::onTracksLoaded( QList<Tomahawk::track_ptr> tracks, QList<Tomahawk::PlaybackLog> logs )
{
finishLoading();
for ( int i = 0; i < tracks.count(); i++ )
{
onPlaybackFinished( tracks.at( i ), logs.at( i ) );

View File

@ -216,8 +216,7 @@ TreeModel::addTracks( const album_ptr& album, const QModelIndex& parent, bool au
connect( album.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( onTracksFound( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ) );
if ( !album->tracks( m_mode, m_collection ).isEmpty() )
onTracksAdded( album->tracks( m_mode, m_collection ), parent );
onTracksAdded( album->tracks( m_mode, m_collection ), parent );
}
@ -305,6 +304,8 @@ TreeModel::onTracksAdded( const QList<Tomahawk::query_ptr>& tracks, const QModel
QPair< int, int > crows;
int c = rowCount( parent );
removeRows( 0, c, parent );
crows.first = c;
crows.second = c + tracks.count() - 1;

View File

@ -111,7 +111,7 @@ M3uLoader::parseLine( const QString& line, const QFile& file )
{
QFileInfo tmpFile( QUrl::fromUserInput( QString( line.simplified() ) ).toLocalFile() );
if( tmpFile.exists() )
if ( tmpFile.exists() )
{
getTags( tmpFile );
}
@ -190,6 +190,7 @@ M3uLoader::parseM3u( const QString& fileLink )
}
else
emit tracks( m_tracks );
m_tracks.clear();
}

View File

@ -47,6 +47,7 @@ public:
public slots:
void parse();
private slots:
void playlistCreated();
@ -57,7 +58,7 @@ signals:
private:
void parseM3u( const QString& track );
void getTags( const QFileInfo& info );
void parseLine(const QString& line , const QFile &file);
void parseLine(const QString& line , const QFile& file);
QList< query_ptr > m_tracks;
QString m_title, m_info, m_creator;
bool m_single;

View File

@ -295,6 +295,7 @@ tomahawkWindow()
void
bringToFront()
{
#if QT_VERSION < QT_VERSION_CHECK( 5, 0, 0 )
#if defined(Q_WS_X11)
{
qDebug() << Q_FUNC_INFO;
@ -348,6 +349,20 @@ bringToFront()
}
}
#endif
#endif
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
{
qDebug() << Q_FUNC_INFO;
QWidget* widget = tomahawkWindow();
if ( !widget )
return;
widget->show();
widget->activateWindow();
widget->raise();
}
#endif
}
#endif

View File

@ -71,7 +71,6 @@ CollectionViewPage::CollectionViewPage( const Tomahawk::collection_ptr& collecti
m_albumView->setItemWidth( TomahawkUtils::DpiScaler::scaledX( this, 170 ) );
m_albumView->delegate()->setWordWrapping( true );
m_albumView->proxyModel()->sort( -1 );
m_albumView->setEmptyTip( tr( "Sorry, there are no albums in this collection!" ) );
TomahawkStyle::stylePageFrame( m_albumView );
@ -186,6 +185,7 @@ CollectionViewPage::setAlbumModel( PlayableModel* model )
m_albumModel = model;
m_albumView->setPlayableModel( model );
m_albumView->proxyModel()->sort( PlayableModel::Artist, Qt::AscendingOrder );
if ( oldModel )
{

View File

@ -34,7 +34,7 @@ ENDIF( LIBLASTFM_FOUND )
SET( tomahawkSourcesGui ${tomahawkSourcesGui}
dialogs/DiagnosticsDialog.cpp
dialogs/LoadXSPFDialog.cpp
dialogs/LoadPlaylistDialog.cpp
dialogs/SettingsDialog.cpp
sourcetree/SourcesModel.cpp
@ -74,7 +74,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
SET( tomahawkUI ${tomahawkUI}
dialogs/DiagnosticsDialog.ui
dialogs/HostDialog.ui
dialogs/LoadXSPFDialog.ui
dialogs/LoadPlaylistDialog.ui
dialogs/ProxyDialog.ui
dialogs/Settings_Accounts.ui
dialogs/Settings_Advanced.ui

View File

@ -48,6 +48,7 @@
#include "utils/ProxyStyle.h"
#include "utils/WidgetDragFilter.h"
#include "utils/NetworkAccessManager.h"
#include "utils/M3uLoader.h"
#include "widgets/AccountsToolButton.h"
#include "widgets/AnimatedSplitter.h"
#include "widgets/ContainedMenuButton.h"
@ -79,7 +80,7 @@
#include "SourceList.h"
#include "TomahawkTrayIcon.h"
#include "TomahawkApp.h"
#include "dialogs/LoadXSPFDialog.h"
#include "dialogs/LoadPlaylistDialog.h"
#include "utils/ImageRegistry.h"
#include "utils/Logger.h"
@ -679,7 +680,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( "importPlaylist" ), SIGNAL( triggered() ), SLOT( loadPlaylist() ) );
connect( ac->getAction( "whatsnew_0_8" ), SIGNAL( triggered() ), SLOT( showWhatsNew_0_8() ) );
connect( ac->getAction( "aboutTomahawk" ), SIGNAL( triggered() ), SLOT( showAboutTomahawk() ) );
connect( ac->getAction( "quit" ), SIGNAL( triggered() ), qApp, SLOT( quit() ) );
@ -1166,46 +1167,54 @@ TomahawkWindow::fullScreenExited()
void
TomahawkWindow::loadSpiff()
TomahawkWindow::loadPlaylist()
{
LoadXSPFDialog* diag = new LoadXSPFDialog( this, Qt::Sheet );
LoadPlaylistDialog* diag = new LoadPlaylistDialog( this, Qt::Sheet );
#ifdef Q_OS_MAC
connect( diag, SIGNAL( finished( int ) ), this, SLOT( loadXspfFinished( int ) ) );
connect( diag, SIGNAL( finished( int ) ), this, SLOT( loadPlaylistFinished( int ) ) );
diag->show();
#else
QPointer< LoadXSPFDialog > safe( diag );
QPointer< LoadPlaylistDialog > safe( diag );
int ret = diag->exec();
if ( !safe.isNull() && ret == QDialog::Accepted )
{
QUrl url = QUrl::fromUserInput( safe.data()->xspfUrl() );
bool autoUpdate = safe.data()->autoUpdate();
XSPFLoader* loader = new XSPFLoader( true, autoUpdate );
connect( loader, SIGNAL( error( XSPFLoader::XSPFErrorCode ) ), SLOT( onXSPFError( XSPFLoader::XSPFErrorCode ) ) );
connect( loader, SIGNAL( ok( Tomahawk::playlist_ptr ) ), SLOT( onXSPFOk( Tomahawk::playlist_ptr ) ) );
loader->load( url );
importPlaylist( safe->url(), safe->autoUpdate() );
}
#endif
}
void
TomahawkWindow::loadXspfFinished( int ret )
TomahawkWindow::loadPlaylistFinished( int ret )
{
LoadXSPFDialog* d = qobject_cast< LoadXSPFDialog* >( sender() );
LoadPlaylistDialog* d = qobject_cast< LoadPlaylistDialog* >( sender() );
Q_ASSERT( d );
if ( ret == QDialog::Accepted )
{
QUrl url = QUrl::fromUserInput( d->xspfUrl() );
bool autoUpdate = d->autoUpdate();
importPlaylist( d->url(), d->autoUpdate() );
}
d->deleteLater();
}
void
TomahawkWindow::importPlaylist( const QString& url, bool autoUpdate )
{
const QUrl u = QUrl::fromUserInput( url );
if ( u.toString().toLower().endsWith( ".m3u" ) )
{
M3uLoader* loader = new M3uLoader( u.toString(), true );
loader->parse();
}
else
{
XSPFLoader* loader = new XSPFLoader( true, autoUpdate );
connect( loader, SIGNAL( error( XSPFLoader::XSPFErrorCode ) ), SLOT( onXSPFError( XSPFLoader::XSPFErrorCode ) ) );
connect( loader, SIGNAL( ok( Tomahawk::playlist_ptr ) ), SLOT( onXSPFOk( Tomahawk::playlist_ptr ) ) );
loader->load( url );
loader->load( u );
}
d->deleteLater();
}

View File

@ -99,7 +99,7 @@ protected:
public slots:
void createStation();
void createPlaylist();
void loadSpiff();
void loadPlaylist();
void showSettingsDialog();
void showDiagnosticsDialog();
void legalInfo();
@ -137,7 +137,7 @@ private slots:
void onSearch( const QString& search );
void onFilterEdited();
void loadXspfFinished( int );
void loadPlaylistFinished( int );
void minimize();
void maximize();
@ -166,6 +166,8 @@ private:
void setupShortcuts();
void setupUpdateCheck();
void importPlaylist( const QString& url, bool autoUpdate );
#ifdef Q_OS_WIN
bool setupWindowsButtons();
#if QT_VERSION < QT_VERSION_CHECK( 5, 2, 0 )

View File

@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2014, Christian Muehlhaeuser <muesli@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -16,53 +17,70 @@
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "LoadXSPFDialog.h"
#include "ui_LoadXSPFDialog.h"
#include "LoadPlaylistDialog.h"
#include "ui_LoadPlaylistDialog.h"
#include "TomahawkSettings.h"
#include "Source.h"
#include <QFileDialog>
LoadXSPFDialog::LoadXSPFDialog( QWidget* parent, Qt::WindowFlags f )
LoadPlaylistDialog::LoadPlaylistDialog( QWidget* parent, Qt::WindowFlags f )
: QDialog( parent, f )
, m_ui( new Ui_LoadXSPF )
, m_ui( new Ui_LoadPlaylist )
{
m_ui->setupUi( this );
#ifdef Q_OS_MAC
m_ui->horizontalLayout->setContentsMargins( 0, 0, 0, 0 );
m_ui->horizontalLayout->setSpacing( 5 );
m_ui->verticalLayout->setContentsMargins( 0, 10, 0, 0 );
m_ui->verticalLayout->setSpacing( 0 );
#endif
setMinimumSize( sizeHint() );
m_ui->autoUpdate->setEnabled( false );
connect( m_ui->navigateButton, SIGNAL( clicked( bool ) ), this, SLOT( getLocalFile() ) );
connect( m_ui->lineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( onUrlChanged() ) );
}
LoadXSPFDialog::~LoadXSPFDialog()
LoadPlaylistDialog::~LoadPlaylistDialog()
{
}
void
LoadXSPFDialog::getLocalFile()
LoadPlaylistDialog::getLocalFile()
{
const QString path = TomahawkSettings::instance()->importXspfPath();
QString url = QFileDialog::getOpenFileName( this, tr( "Load XSPF File" ), path, tr( "XSPF Files (*.xspf)" ) );
const QString path = TomahawkSettings::instance()->importPlaylistPath();
QString url = QFileDialog::getOpenFileName( this, tr( "Load Playlist" ), path, tr( "Playlists (*.xspf *.m3u)" ) );
if ( !url.isEmpty() )
TomahawkSettings::instance()->setImportXspfPath( QFileInfo( url ).absoluteDir().absolutePath() );
{
const QFileInfo fi( url );
TomahawkSettings::instance()->setImportPlaylistPath( fi.absoluteDir().absolutePath() );
}
m_ui->lineEdit->setText( url );
}
void
LoadPlaylistDialog::onUrlChanged()
{
m_ui->autoUpdate->setEnabled( m_ui->lineEdit->text().trimmed().startsWith( "http://" ) );
}
QString
LoadXSPFDialog::xspfUrl() const
LoadPlaylistDialog::url() const
{
return m_ui->lineEdit->text();
}
bool
LoadXSPFDialog::autoUpdate() const
LoadPlaylistDialog::autoUpdate() const
{
return m_ui->autoUpdate->isChecked();
}

View File

@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2014, Christian Muehlhaeuser <muesli@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -16,28 +17,31 @@
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LOADXSPFDIALOG_H
#define LOADXSPFDIALOG_H
#ifndef LOADPLAYLISTDIALOG_H
#define LOADPLAYLISTDIALOG_H
#include <QDialog>
class Ui_LoadXSPF;
class Ui_LoadPlaylist;
class LoadXSPFDialog : public QDialog
class LoadPlaylistDialog : public QDialog
{
Q_OBJECT
public:
explicit LoadXSPFDialog( QWidget* parent = 0, Qt::WindowFlags f = 0 );
virtual ~LoadXSPFDialog();
explicit LoadPlaylistDialog( QWidget* parent = 0, Qt::WindowFlags f = 0 );
virtual ~LoadPlaylistDialog();
QString xspfUrl() const;
QString url() const;
bool autoUpdate() const;
public slots:
void getLocalFile();
private slots:
void onUrlChanged();
private:
Ui_LoadXSPF* m_ui;
Ui_LoadPlaylist* m_ui;
};
#endif // LOADXSPFDIALOG_H
#endif // LOADPLAYLISTDIALOG_H

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LoadXSPF</class>
<widget class="QDialog" name="LoadXSPF">
<class>LoadPlaylist</class>
<widget class="QDialog" name="LoadPlaylist">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>444</width>
<height>241</height>
<width>481</width>
<height>199</height>
</rect>
</property>
<property name="windowTitle">
<string>Load XSPF</string>
<string>Load Playlist</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@ -19,6 +19,9 @@
<property name="text">
<string>Enter the URL of the hosted playlist (e.g. .xspf format) or click the button to select a local M3U of XSPF playlist to import.</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
@ -75,6 +78,9 @@
<property name="text">
<string>To import a playlist from Spotify, Rdio, Beats, etc. - simply drag the link into Tomahawk.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
@ -97,7 +103,7 @@
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>LoadXSPF</receiver>
<receiver>LoadPlaylist</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
@ -113,7 +119,7 @@
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>LoadXSPF</receiver>
<receiver>LoadPlaylist</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">