diff --git a/CMakeModules/FindLucene++.cmake b/CMakeModules/FindLucene++.cmake
index b9f328d21..63046ac16 100644
--- a/CMakeModules/FindLucene++.cmake
+++ b/CMakeModules/FindLucene++.cmake
@@ -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}")
diff --git a/ChangeLog b/ChangeLog
index c175297e5..b51a7c186 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/README.md b/README.md
index 12020d4f6..1ac2dc403 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/lang/tomahawk_ar.ts b/lang/tomahawk_ar.ts
index 7d23a1ad2..4b2548050 100644
--- a/lang/tomahawk_ar.ts
+++ b/lang/tomahawk_ar.ts
@@ -349,7 +349,7 @@ connect and stream from you?
-
+
Albums
@@ -1112,7 +1112,7 @@ Password (OTP)
تقدم
-
+
Properties
خصائص
diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts
index 7141ccf0e..df6bc481d 100644
--- a/lang/tomahawk_bg.ts
+++ b/lang/tomahawk_bg.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1110,7 +1110,7 @@ Password (OTP)
Напред
-
+
Properties
Настройки
diff --git a/lang/tomahawk_bn_IN.ts b/lang/tomahawk_bn_IN.ts
index 2d84afd7a..bfbcd016e 100644
--- a/lang/tomahawk_bn_IN.ts
+++ b/lang/tomahawk_bn_IN.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts
index 8b1fe2534..d0309fc40 100644
--- a/lang/tomahawk_ca.ts
+++ b/lang/tomahawk_ca.ts
@@ -348,7 +348,7 @@ connect and stream from you?
Cançons
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
Endavant
-
+
Properties
Propietats
diff --git a/lang/tomahawk_ca@valencia.ts b/lang/tomahawk_ca@valencia.ts
index 87d35c97d..8fcdc3d31 100644
--- a/lang/tomahawk_ca@valencia.ts
+++ b/lang/tomahawk_ca@valencia.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
Avant
-
+
Properties
Propietats
diff --git a/lang/tomahawk_cs.ts b/lang/tomahawk_cs.ts
index a78cdb03d..1a79d640c 100644
--- a/lang/tomahawk_cs.ts
+++ b/lang/tomahawk_cs.ts
@@ -349,7 +349,7 @@ se s vámi spojil?
Písně
-
+
Albums
Alba
@@ -1111,7 +1111,7 @@ heslo
Vpřed
-
+
Properties
Vlastnosti
diff --git a/lang/tomahawk_da.ts b/lang/tomahawk_da.ts
index ba3459ee4..71b561939 100644
--- a/lang/tomahawk_da.ts
+++ b/lang/tomahawk_da.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts
index 6fe4d45ff..37f306e59 100644
--- a/lang/tomahawk_de.ts
+++ b/lang/tomahawk_de.ts
@@ -349,7 +349,7 @@ erlauben sich mit dir zu verbinden und von dir zu streamen?
Lieder
-
+
Albums
Alben
@@ -1111,7 +1111,7 @@ Password (OTP)
Vorwärts
-
+
Properties
Eigenschaften
diff --git a/lang/tomahawk_el.ts b/lang/tomahawk_el.ts
index 0eadddd46..1038ee391 100644
--- a/lang/tomahawk_el.ts
+++ b/lang/tomahawk_el.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1110,7 +1110,7 @@ Password (OTP)
Μπροστά
-
+
Properties
Ιδιότητες
diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts
index 5fb3f0a59..ac0bbf6ca 100644
--- a/lang/tomahawk_en.ts
+++ b/lang/tomahawk_en.ts
@@ -349,7 +349,7 @@ connect and stream from you?
Songs
-
+
Albums
Albums
@@ -1111,7 +1111,7 @@ Password (OTP)
Forward
-
+
Properties
Properties
diff --git a/lang/tomahawk_en_GB.ts b/lang/tomahawk_en_GB.ts
index 8ac5c2493..c320bd588 100644
--- a/lang/tomahawk_en_GB.ts
+++ b/lang/tomahawk_en_GB.ts
@@ -349,7 +349,7 @@ connect and stream from you?
-
+
Albums
@@ -1111,7 +1111,7 @@ Password (OTP)
Forward
-
+
Properties
Properties
diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts
index 5aea8901d..7e0740131 100644
--- a/lang/tomahawk_es.ts
+++ b/lang/tomahawk_es.ts
@@ -87,7 +87,7 @@ conectarse y transmitir música por usted?
&Follow in Real-Time
-
+ &Seguir en tiempo real
@@ -162,7 +162,7 @@ conectarse y transmitir música por usted?
Show Offline Friends
-
+ Mostrar amigos desconectados
@@ -247,7 +247,7 @@ conectarse y transmitir música por usted?
&Help
- &Ayuda
+ Ay&uda
@@ -349,7 +349,7 @@ conectarse y transmitir música por usted?
Canciones
-
+
Albums
Álbumes
@@ -489,7 +489,7 @@ conectarse y transmitir música por usted?
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í
@@ -566,7 +566,7 @@ conectarse y transmitir música por usted?
This playlist is currently empty. Add some tracks to it and enjoy the music!
-
+ Esta lista de reproducción está vacía. ¡Añada algunas pistas y disfrute de la música!
@@ -721,7 +721,7 @@ conectarse y transmitir música por usted?
Resolver installation from file %1 failed.
-
+ Falló la instalación del servicio a partir del archivo %1.
@@ -856,7 +856,7 @@ de un solo uso (OTP)
Inbox Details
-
+ Detalles de la Bandeja de entrada
@@ -869,7 +869,7 @@ de un solo uso (OTP)
Indexing Music Library
-
+ Indizando la fonoteca
@@ -985,12 +985,12 @@ de un solo uso (OTP)
Favorites
-
+ Favoritos
Sorry, we could not find any of your Favorites!
-
+ No se encontró ninguno de sus Favoritos.
@@ -1111,7 +1111,7 @@ de un solo uso (OTP)
Adelante
-
+
Properties
Propiedades
@@ -1513,7 +1513,7 @@ de un solo uso (OTP)
Queue Details
-
+ Datos de cola
@@ -1544,7 +1544,7 @@ de un solo uso (OTP)
Scanning Collection
-
+ Escaneando Colección
@@ -1626,17 +1626,17 @@ de un solo uso (OTP)
Sorry, we could not find any artists!
-
+ No se encontró ningún artista.
Sorry, we could not find any albums!
-
+ No se encontró ningún álbum.
Sorry, we could not find any songs!
-
+ No se encontró ninguna canción.
@@ -1735,7 +1735,7 @@ de un solo uso (OTP)
Filter by Capability:
-
+ Filtrar por Capacidad:
@@ -1763,7 +1763,7 @@ de un solo uso (OTP)
Host Settings...
-
+ Configuración del host ...
@@ -1798,12 +1798,12 @@ de un solo uso (OTP)
Send Tomahawk Crash Reports
-
+ Envíe informes de fallos a Tomahawk
Show Notifications on song change
-
+ Mostrar notificaciones de cambio de canción
@@ -1852,12 +1852,12 @@ y estaciones basadas en sus gustos personales.
Watch for changes (automatically update Collection)
-
+ Cuidado con los cambios (la Colección se actualiza automáticamente)
Time between scans (in seconds):
-
+ Tiempo entre escaneo (en segundos):
@@ -2077,7 +2077,7 @@ y estaciones basadas en sus gustos personales.
Source
-
+ Fuente
@@ -2102,22 +2102,22 @@ y estaciones basadas en sus gustos personales.
Cloud Collections
-
+ Colecciones de la nube
Discover
-
+ Descubre
Open Pages
-
+ Páginas abiertas
Your Music
-
+ Tu Música
@@ -2140,12 +2140,12 @@ y estaciones basadas en sus gustos personales.
Log In
- Iniciar sesión
+ Acceder
Right click on any Tomahawk playlist to sync it to Spotify.
- Haga click derecho en cualquier lista de Tomahawk para sincronizarla con Spotify.
+ Haga clic secundario en cualquier lista de Tomahawk para sincronizarla con Spotify.
@@ -2160,7 +2160,7 @@ y estaciones basadas en sus gustos personales.
High Quality Streams
- Streams de alta calidad
+ Transmisiones de alta calidad
@@ -2523,7 +2523,7 @@ y estaciones basadas en sus gustos personales.
Log In
- Iniciar sesión
+ Acceder
@@ -2603,7 +2603,7 @@ usuario@jabber.org
Automatically connect to Tomahawk users on the same local network.
-
+ Conectarse automáticamente a los usuarios de Tomahawk en la misma red local.
@@ -2760,7 +2760,7 @@ usuario@jabber.org
Save Settings
-
+ Guardar configuración
@@ -2829,12 +2829,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Similar To
-
+ Similar A
Limit To
-
+ Limitar a
@@ -2871,7 +2871,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Enter any combination of song name and artist here...
-
+ Introduzca cualquier combinación de nombre de la canción y del artista aquí...
@@ -3109,23 +3109,23 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Electric
Song type
-
+ Electrónica
Christmas
Song type: A christmas song
-
+ Navidad
At Least
-
+ Por lo menos
At Most
-
+ Como máximo
@@ -3152,7 +3152,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
You
-
+ Usted
@@ -3380,12 +3380,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Notify User
-
+ Notificar al usuario
Now Playing
-
+ Reproduciendo ahora
@@ -3412,14 +3412,14 @@ Intente ajustar los filtros para reproducir nuevas canciones.
%1%4 %2%3.
%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)
-
+ %1%4 %2%3.
by
preposition to link track and artist
-
+ por
@@ -3431,20 +3431,21 @@ Intente ajustar los filtros para reproducir nuevas canciones.
"%1" by %2%3.
%1 is a title, %2 is an artist and %3 is replaced by either the previous message or nothing
-
+ «%1» por %2%3.
%1 sent you
%2%4 %3.
%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)
-
+ %1 te envió
+%2%4 %3.
%1 sent you "%2" by %3.
%1 is a nickname, %2 is a title, %3 is an artist
-
+ %1 te envió "%2" de %3.
@@ -3502,7 +3503,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Your Collection
-
+ Tu colección
@@ -3624,7 +3625,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Charts
-
+ Listas de éxitos
@@ -3645,7 +3646,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Recently Played Tracks
-
+ Pistas reproducidas recientemente
@@ -3724,7 +3725,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
New Releases
-
+ Últimas novedades
@@ -3737,7 +3738,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
An overview of the changes and additions since 0.7.
-
+ Un resumen de los cambios y adiciones desde 0.7.
@@ -3753,17 +3754,17 @@ Intente ajustar los filtros para reproducir nuevas canciones.
You
-
+ usted
Tomahawk is updating the database. Please wait, this may take a minute!
-
+ Tomahawk está actualizando la base de datos. Espere un momento.
Tomahawk
-
+ Tomahawk
@@ -3917,7 +3918,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Love
-
+ Favorito
@@ -4004,7 +4005,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Search
-
+ Buscar
@@ -4049,12 +4050,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Marked as Favorite
-
+ Marcar como Favorito
Alternate Sources:
-
+ Fuentes alternas:
@@ -4082,7 +4083,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Top Hits
-
+ Grandes éxitos
@@ -4148,7 +4149,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Adventurousness
-
+ Audacia
@@ -4168,12 +4169,12 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Loudness
-
+ Volumen
Danceability
-
+ Bailabilidad
@@ -4183,17 +4184,17 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Artist Familiarity
-
+ Familiaridad del artista
Artist Hotttnesss
-
+ Popularidad del artista
Song Hotttnesss
-
+ Popularidad de la pista
@@ -4213,7 +4214,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Key
-
+ Tonalidad
@@ -4254,7 +4255,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
Inbox
-
+ Bandeja de Entrada
@@ -4269,7 +4270,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
<html><head/><body><p>Love that your friends and influencers are posting music links but hate that they are links for music services you don'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.</p></body></html>
-
+ <html><head/><body><p>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.</p></body></html>
@@ -4289,7 +4290,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
<html><head/><body><p>Google Music is another of our latest supported services - both for the music you'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.</p></body></html>
-
+ <html><head/><body><p>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.</p></body></html>
@@ -4304,7 +4305,7 @@ Intente ajustar los filtros para reproducir nuevas canciones.
<html><head/><body><p>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!</p></body></html>
-
+ <html><head/><body><p>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!</p></body></html>
@@ -4481,12 +4482,12 @@ Letras de «%1» por %2:
Configure this Jabber/XMPP account
-
+ Configurar esta cuenta Jabber/XMPP
Enter your XMPP login to connect with your friends using Tomahawk!
-
+ Introduzca sus datos de inicio de sesión de XMPP para conectarse son sus amigos que usen Tomahawk!
diff --git a/lang/tomahawk_fi.ts b/lang/tomahawk_fi.ts
index 4ee13925c..aba38f43b 100644
--- a/lang/tomahawk_fi.ts
+++ b/lang/tomahawk_fi.ts
@@ -349,7 +349,7 @@ yhdistää ja toistaa sinulta virtaa?
Kappaleet
-
+
Albums
Albumit
@@ -1111,7 +1111,7 @@ salasana (OTP)
Seuraava
-
+
Properties
Ominaisuudet
diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts
index a8ee68719..dec800907 100644
--- a/lang/tomahawk_fr.ts
+++ b/lang/tomahawk_fr.ts
@@ -349,7 +349,7 @@ de se connecter et streamer votre flux ?
Chansons
-
+
Albums
Albums
@@ -1110,7 +1110,7 @@ Password (OTP)
Avancer
-
+
Properties
Propriétés
@@ -2345,7 +2345,7 @@ Password (OTP)
Connect to Hatchet to capture your playback data, sync your playlists to Android and more.
- Connectez-vous à Hatchet pour récupérer votre informations de lecture, synchroniser vos collections vers Android, et plus.
+ Connectez-vous à Hatchet pour récupérer vos informations de lecture, synchroniser vos collections vers Android, et plus.
diff --git a/lang/tomahawk_gl.ts b/lang/tomahawk_gl.ts
index e27d6a471..0d96b1cf8 100644
--- a/lang/tomahawk_gl.ts
+++ b/lang/tomahawk_gl.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
Adiante
-
+
Properties
Propiedades
diff --git a/lang/tomahawk_hi_IN.ts b/lang/tomahawk_hi_IN.ts
index b81353492..73b9ee79f 100644
--- a/lang/tomahawk_hi_IN.ts
+++ b/lang/tomahawk_hi_IN.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_hu.ts b/lang/tomahawk_hu.ts
index 2f027efcb..5a9407274 100644
--- a/lang/tomahawk_hu.ts
+++ b/lang/tomahawk_hu.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
Előre
-
+
Properties
Tulajdonságok
diff --git a/lang/tomahawk_id.ts b/lang/tomahawk_id.ts
index d278b1968..70576eaf4 100644
--- a/lang/tomahawk_id.ts
+++ b/lang/tomahawk_id.ts
@@ -349,7 +349,7 @@ terhubung dan memutar secara langsung?
-
+
Albums
@@ -1110,7 +1110,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_it.ts b/lang/tomahawk_it.ts
index f43cc0322..3263f2e59 100644
--- a/lang/tomahawk_it.ts
+++ b/lang/tomahawk_it.ts
@@ -349,7 +349,7 @@ connettersi e condividere la tua musica?
Brani
-
+
Albums
Albums
@@ -1111,7 +1111,7 @@ temporanea (OTP)
Avanti
-
+
Properties
Proprietà
diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts
index 37cc8203d..bba5c82ec 100644
--- a/lang/tomahawk_ja.ts
+++ b/lang/tomahawk_ja.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
次へ
-
+
Properties
情報
diff --git a/lang/tomahawk_ka.ts b/lang/tomahawk_ka.ts
index 7ec17fc9d..1dc6bdd77 100644
--- a/lang/tomahawk_ka.ts
+++ b/lang/tomahawk_ka.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_lt.ts b/lang/tomahawk_lt.ts
index c39c8f357..784187058 100644
--- a/lang/tomahawk_lt.ts
+++ b/lang/tomahawk_lt.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
Pirmyn
-
+
Properties
diff --git a/lang/tomahawk_nb.ts b/lang/tomahawk_nb.ts
index 40a464e5c..1f2e2bfd4 100644
--- a/lang/tomahawk_nb.ts
+++ b/lang/tomahawk_nb.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_nl.ts b/lang/tomahawk_nl.ts
index 34b58707c..4d05ec870 100644
--- a/lang/tomahawk_nl.ts
+++ b/lang/tomahawk_nl.ts
@@ -349,7 +349,7 @@ te verbinden en te streamen vanuit jou?
Nummers
-
+
Albums
Albums
@@ -1111,7 +1111,7 @@ opgeven (OTP)
Vooruit
-
+
Properties
Eigenschappen
diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts
index 1cf8cbd5c..91a1902a5 100644
--- a/lang/tomahawk_pl.ts
+++ b/lang/tomahawk_pl.ts
@@ -349,7 +349,7 @@ połączyć się i strumieniować od ciebie?
Utwory
-
+
Albums
Albumy
@@ -1111,7 +1111,7 @@ jednorazowe (OTP)
Naprzód
-
+
Properties
Właściwości
diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts
index e02490a07..d72add7c8 100644
--- a/lang/tomahawk_pt_BR.ts
+++ b/lang/tomahawk_pt_BR.ts
@@ -349,7 +349,7 @@ se conecte e faça o stream de você?
Faixas
-
+
Albums
Álbuns
@@ -1110,7 +1110,7 @@ Password (OTP)
Avançar
-
+
Properties
Propriedades
diff --git a/lang/tomahawk_pt_PT.ts b/lang/tomahawk_pt_PT.ts
new file mode 100644
index 000000000..a41dae3fb
--- /dev/null
+++ b/lang/tomahawk_pt_PT.ts
@@ -0,0 +1,4648 @@
+
+
+ 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
+
+
+
+
+ AccountFactoryWrapperDelegate
+
+
+ Online
+
+
+
+
+ Connecting...
+
+
+
+
+ Offline
+
+
+
+
+ AccountListWidget
+
+
+ Connections
+
+
+
+
+
+ Connect &All
+
+
+
+
+ Disconnect &All
+
+
+
+
+ ActionCollection
+
+
+ &Listen Along
+
+
+
+
+ Stop &Listening Along
+
+
+
+
+ &Follow in Real-Time
+
+
+
+
+ &Listen Privately
+
+
+
+
+ &Load Playlist
+
+
+
+
+ &Load Station
+
+
+
+
+ &Rename Playlist
+
+
+
+
+ &Rename Station
+
+
+
+
+ &Copy Playlist Link
+
+
+
+
+ &Play
+
+
+
+
+ &Stop
+
+
+
+
+ &Previous Track
+
+
+
+
+ &Next Track
+
+
+
+
+ &Quit
+
+
+
+
+ U&pdate Collection
+
+
+
+
+ Fully &Rescan Collection
+
+
+
+
+ Import Playlist...
+
+
+
+
+ Show Offline Friends
+
+
+
+
+ &Configure Tomahawk...
+
+
+
+
+ Minimize
+
+
+
+
+ Zoom
+
+
+
+
+ Enter Full Screen
+
+
+
+
+ Hide Menu Bar
+
+
+
+
+ Diagnostics...
+
+
+
+
+ About &Tomahawk...
+
+
+
+
+ &Legal Information...
+
+
+
+
+ &View Logfile
+
+
+
+
+ Check For Updates...
+
+
+
+
+ 0.8
+
+
+
+
+ Report a Bug
+
+
+
+
+ Get Support
+
+
+
+
+ Help Us Translate
+
+
+
+
+ &Controls
+
+
+
+
+ &Settings
+
+
+
+
+ &Help
+
+
+
+
+
+ What's New in ...
+
+
+
+
+ &Window
+
+
+
+
+ Main Menu
+
+
+
+
+ AlbumInfoWidget
+
+
+ Top Hits
+
+
+
+
+ Album Details
+
+
+
+
+ AlbumModel
+
+
+
+ All albums from %1
+
+
+
+
+ All albums
+
+
+
+
+ ArtistInfoWidget
+
+
+ Top Albums
+
+
+
+
+ Top Hits
+
+
+
+
+
+ Show More
+
+
+
+
+
+ Biography
+
+
+
+
+
+ Related Artists
+
+
+
+
+ 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!
+
+
+
+
+ Music
+
+
+
+
+ Songs
+
+
+
+
+ Albums
+
+
+
+
+ AudioControls
+
+
+
+ Shuffle
+
+
+
+
+
+ Repeat
+
+
+
+
+ Time Elapsed
+
+
+
+
+ Time Remaining
+
+
+
+
+ Playing from %1
+
+
+
+
+ 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
+
+
+
+
+ CaptionLabel
+
+
+ Close
+
+
+
+
+ CategoryAddItem
+
+
+ Create new Playlist
+
+
+
+
+ Create new Station
+
+
+
+
+
+ New Station
+
+
+
+
+
+ %1 Station
+
+
+
+
+ CategoryItem
+
+
+ Playlists
+
+
+
+
+ Stations
+
+
+
+
+ ClearButton
+
+
+ Clear
+
+
+
+
+ CollectionItem
+
+
+ Collection
+
+
+
+
+ CollectionViewPage
+
+
+ Sorry, there are no albums in this collection!
+
+
+
+
+ Artists
+
+
+
+
+ Albums
+
+
+
+
+ Songs
+
+
+
+
+ After you have scanned your music collection you will find your tracks right here.
+
+
+
+
+ This collection is empty.
+
+
+
+
+ Cloud collections aren't supported in the flat view yet. We will have them covered soon. Switch to another view to navigate them.
+
+
+
+
+ ColumnItemDelegate
+
+
+ Unknown
+
+
+
+
+ ColumnView
+
+
+ Sorry, your filter '%1' did not match any results.
+
+
+
+
+ ColumnViewPreviewWidget
+
+
+ Composer:
+
+
+
+
+ Duration:
+
+
+
+
+ Bitrate:
+
+
+
+
+ Year:
+
+
+
+
+ Age:
+
+
+
+
+ %1 kbps
+
+
+
+
+ ContextView
+
+
+ Playlist Details
+
+
+
+
+ This playlist is currently empty.
+
+
+
+
+ This playlist is currently empty. Add some tracks to it and enjoy the music!
+
+
+
+
+ DelegateConfigWrapper
+
+
+ About
+
+
+
+
+ Delete Account
+
+
+
+
+ Config Error
+
+
+
+
+ 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
+
+
+
+
+ FilterHeader
+
+
+ Filter...
+
+
+
+
+ GlobalActionManager
+
+
+ Resolver installation from file %1 failed.
+
+
+
+
+ Install plug-in
+
+
+
+
+ <b>%1</b> %2<br/>by <b>%3</b><br/><br/>You are attempting to install a Tomahawk plug-in from an unknown source. Plug-ins from untrusted sources may put your data at risk.<br/>Do you want to install this plug-in?
+
+
+
+
+ HatchetAccountConfig
+
+
+ Connect to your Hatchet account
+
+
+
+
+ <html><head/><body><p><a href="http://blog.hatchet.is">Learn More</a> and/or <a href="http://hatchet.is/register"><span style=" text-decoration: underline; color:#0000ff;">Create Account</span></a></p></body></html>
+
+
+
+
+ Enter One-time
+Password (OTP)
+
+
+
+
+ Username
+
+
+
+
+ Hatchet username
+
+
+
+
+ Password:
+
+
+
+
+ Hatchet password
+
+
+
+
+ Login
+
+
+
+
+ HistoryWidget
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+
+
+
+ Sorry, we could not find any recent plays!
+
+
+
+
+ HostDialog
+
+
+ Host Settings
+
+
+
+
+ Configure your external IP address or host name here. Make sure to manually forward the selected port to this host on your router.
+
+
+
+
+ Static Host Name:
+
+
+
+
+ Static Port:
+
+
+
+
+ Automatically detect external IP address
+
+
+
+
+ InboxItem
+
+
+ Inbox
+
+
+
+
+ InboxJobItem
+
+
+ Sent %1 by %2 to %3.
+
+
+
+
+ %1 sent you %2 by %3.
+
+
+
+
+ InboxPage
+
+
+ Inbox Details
+
+
+
+
+ Your friends have not shared any recommendations with you yet. Connect with them and share your musical gems!
+
+
+
+
+ IndexingJobItem
+
+
+ Indexing Music Library
+
+
+
+
+ JSResolver
+
+
+
+
+
+ Script Resolver Warning: API call %1 returned data synchronously.
+
+
+
+
+ LastFmConfig
+
+
+ Scrobble tracks to Last.fm
+
+
+
+
+ Username:
+
+
+
+
+ Password:
+
+
+
+
+ Test Login
+
+
+
+
+ Import Playback History
+
+
+
+
+ Synchronize Loved Tracks
+
+
+
+
+ LatchedStatusItem
+
+
+ %1 is listening along with you!
+
+
+
+
+ LoadXSPF
+
+
+ Load XSPF
+
+
+
+
+ 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.
+
+
+
+
+ Playlist URL
+
+
+
+
+ Enter URL...
+
+
+
+
+ ...
+
+
+
+
+ Automatically Update (upon changes to hosted playlist)
+
+
+
+
+ To import a playlist from Spotify, Rdio, Beats, etc. - simply drag the link into Tomahawk.
+
+
+
+
+ LoadXSPFDialog
+
+
+ Load XSPF File
+
+
+
+
+ XSPF Files (*.xspf)
+
+
+
+
+ LovedTracksItem
+
+
+ Top Loved Tracks
+
+
+
+
+ Favorites
+
+
+
+
+ Sorry, we could not find any of your Favorites!
+
+
+
+
+ The most loved tracks from all your friends
+
+
+
+
+ All of your loved tracks
+
+
+
+
+ All of %1's 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
+
+
+
+
+ NetworkActivityWidget
+
+
+ Trending Tracks
+
+
+
+
+ Hot Playlists
+
+
+
+
+ Trending Artists
+
+
+
+
+ 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
+
+
+
+
+ Searching...
+
+
+
+
+
+ Name
+
+
+
+
+ PlaylistItemDelegate
+
+
+ played %1 by you
+
+
+
+
+ played %1 by %2
+
+
+
+
+ PlaylistModel
+
+
+ A playlist you created %1.
+
+
+
+
+
+ A playlist by %1, created %2.
+
+
+
+
+ All tracks by %1 on album %2
+
+
+
+
+ All tracks by %1
+
+
+
+
+ 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
+
+
+
+
+ Songs
+ Beginning of a sentence summary
+
+
+
+
+ No configured filters!
+
+
+
+
+ and
+ Inserted between items in a list of two
+
+
+
+
+
+
+
+ ,
+ Inserted between items in a list
+
+
+
+
+
+
+
+ .
+ Inserted when ending a sentence summary
+
+
+
+
+ , and
+ Inserted between the last two items in a list of more than two
+
+
+
+
+ and
+ Inserted before the last item in a list
+
+
+
+
+ and
+ Inserted before the sorting summary in a sentence summary
+
+
+
+
+ QSQLiteResult
+
+
+ No query
+
+
+
+
+ Parameter count mismatch
+
+
+
+
+ QueueItem
+
+
+ Queue
+
+
+
+
+ QueueView
+
+
+ Open Queue
+
+
+
+
+ Queue Details
+
+
+
+
+ Queue
+
+
+
+
+ The queue is currently empty. Drop something to enqueue it!
+
+
+
+
+ ResolverConfigDelegate
+
+
+ Not found: %1
+
+
+
+
+ Failed to load: %1
+
+
+
+
+ ScannerStatusItem
+
+
+ Scanning Collection
+
+
+
+
+ ScriptCollectionHeader
+
+
+ Reload Collection
+
+
+
+
+ ScriptEngine
+
+
+ Resolver Error: %1:%2 %3
+
+
+
+
+ SSL Error
+
+
+
+
+ You have asked Tomahawk to connect securely to <b>%1</b>, but we can't confirm that your connection is secure:<br><br><b>%2</b><br><br>Do you want to trust this connection?
+
+
+
+
+ Trust certificate
+
+
+
+
+ SearchLineEdit
+
+
+ Search
+
+
+
+
+ SearchWidget
+
+
+ Search: %1
+
+
+
+
+ Results for '%1'
+
+
+
+
+
+ Songs
+
+
+
+
+
+
+ Show More
+
+
+
+
+
+ Artists
+
+
+
+
+
+ Albums
+
+
+
+
+ Sorry, we could not find any artists!
+
+
+
+
+ Sorry, we could not find any albums!
+
+
+
+
+ Sorry, we could not find any songs!
+
+
+
+
+ Servent
+
+
+ Automatically detecting external IP failed: Could not parse JSON response.
+
+
+
+
+ Automatically detecting external IP failed: %1
+
+
+
+
+ SettingsDialog
+
+
+ Collection
+
+
+
+
+ Advanced
+
+
+
+
+ All
+
+
+
+
+ Install Plug-In...
+
+
+
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+
+ Configure the accounts and services used by Tomahawk to search and retrieve music, find your friends and update your status.
+
+
+
+
+ Plug-Ins
+
+
+
+
+ Manage how Tomahawk finds music on your computer.
+
+
+
+
+ Configure Tomahawk's advanced settings, including network connectivity settings, browser interaction and more.
+
+
+
+
+ Open Directory
+
+
+
+
+ Install resolver from file
+
+
+
+
+ Tomahawk Resolvers (*.axe *.js);;All files (*)
+
+
+
+
+ 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
+
+
+
+
+ Active (your host needs to be directly reachable)
+
+
+
+
+ UPnP / Automatic Port Forwarding (recommended)
+
+
+
+
+ Manual Port Forwarding
+
+
+
+
+ Host Settings...
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+
+
+
+ Proxy Settings...
+
+
+
+
+ Other Settings
+
+
+
+
+ Allow web browsers to interact with Tomahawk (recommended)
+
+
+
+
+ Allow other computers to interact with Tomahawk (not recommended yet)
+
+
+
+
+ Send Tomahawk Crash Reports
+
+
+
+
+ Show Notifications on song change
+
+
+
+
+ Clear All Access Control Entries
+
+
+
+
+ Settings_Collection
+
+
+ Folders to scan for music:
+
+
+
+
+ Due to the unique way Tomahawk works, your music files must at least have Artist & Title metadata/ID3 tags to be added to your Collection.
+
+
+
+
+ +
+
+
+
+
+ -
+
+
+
+
+ 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 info to enable personalized "User Radio"
+
+
+
+
+ Watch for changes (automatically update Collection)
+
+
+
+
+ Time between scans (in seconds):
+
+
+
+
+ SlideSwitchButton
+
+
+ On
+
+
+
+
+ Off
+
+
+
+
+ SocialWidget
+
+
+ Facebook
+
+
+
+
+ Twitter
+
+
+
+
+ Tweet
+
+
+
+
+ Listening to "%1" by %2. %3
+
+
+
+
+ Listening to "%1" by %2 on "%3". %4
+
+
+
+
+ %1 characters left
+
+
+
+
+ SourceDelegate
+
+
+ All available tracks
+
+
+
+
+ Drop to send tracks
+
+
+
+
+
+ Show
+
+
+
+
+
+ Hide
+
+
+
+
+ SourceInfoWidget
+
+
+ Recent Albums
+
+
+
+
+ Latest Additions
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ New Additions
+
+
+
+
+ My recent activity
+
+
+
+
+ Recent activity from %1
+
+
+
+
+ SourceItem
+
+
+
+ Latest Additions
+
+
+
+
+ History
+
+
+
+
+ SuperCollection
+
+
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Sorry, we could not find any recent additions!
+
+
+
+
+ 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
+
+
+
+
+ Source
+
+
+
+
+ Collection
+
+
+
+
+ Playlist
+
+
+
+
+ Automatic Playlist
+
+
+
+
+ Station
+
+
+
+
+ Cloud Collections
+
+
+
+
+ Discover
+
+
+
+
+ Open Pages
+
+
+
+
+ Your Music
+
+
+
+
+ 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
+
+
+
+
+ Use this to force Spotify to never announce listening data to Social Networks
+
+
+
+
+ Always run in Private Mode
+
+
+
+
+ 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
+
+
+
+
+ You may need to change your %1Google Account Settings%2 to login.
+ %1 is <a href>, %2 is </a>
+
+
+
+
+ Tomahawk::Accounts::GoogleWrapperFactory
+
+
+ Login to directly connect to your Google Talk contacts that also use Tomahawk.
+
+
+
+
+ Tomahawk::Accounts::GoogleWrapperSip
+
+
+ Enter Google Address
+
+
+
+
+ Add Friend
+
+
+
+
+ Enter Google Address:
+
+
+
+
+ Tomahawk::Accounts::HatchetAccountConfig
+
+
+ Logged in as: %1
+
+
+
+
+ Log out
+
+
+
+
+ Log in
+
+
+
+
+ Continue
+
+
+
+
+ Tomahawk::Accounts::HatchetAccountFactory
+
+
+ Connect to Hatchet to capture your playback data, sync your playlists to Android and more.
+
+
+
+
+ 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::ResolverAccountFactory
+
+
+ Resolver installation error: cannot open bundle.
+
+
+
+
+ Resolver installation error: incomplete bundle.
+
+
+
+
+ Resolver installation error: bad metadata in bundle.
+
+
+
+
+ Resolver installation error: platform mismatch.
+
+
+
+
+ Resolver installation error: Tomahawk %1 or newer is required.
+
+
+
+
+ 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::TelepathyConfigStorage
+
+
+ the KDE instant messaging framework
+
+
+
+
+ KDE Instant Messaging Accounts
+
+
+
+
+ Tomahawk::Accounts::XmppAccountFactory
+
+
+ Login to connect to your Jabber/XMPP contacts that also use Tomahawk.
+
+
+
+
+ Tomahawk::Accounts::XmppConfigWidget
+
+
+ Account provided by %1.
+
+
+
+
+ You forgot to enter your username!
+
+
+
+
+ Your Xmpp Id should look like an email address
+
+
+
+
+
+
+Example:
+username@jabber.org
+
+
+
+
+ Tomahawk::Accounts::ZeroconfAccount
+
+
+
+ Local Network
+
+
+
+
+ Tomahawk::Accounts::ZeroconfFactory
+
+
+ Local Network
+
+
+
+
+ Automatically connect to Tomahawk users on the same local network.
+
+
+
+
+ Tomahawk::Collection
+
+
+
+ Collection
+
+
+
+
+ Tomahawk::ContextMenu
+
+
+ &Play
+
+
+
+
+
+
+ Add to &Queue
+
+
+
+
+ Add to &Playlist
+
+
+
+
+ Send to &Friend
+
+
+
+
+ Continue Playback after this &Track
+
+
+
+
+ Stop Playback after this &Track
+
+
+
+
+
+ &Love
+
+
+
+
+ View Similar Tracks to "%1"
+
+
+
+
+
+ &Go to "%1"
+
+
+
+
+
+
+ Go to "%1"
+
+
+
+
+ &Copy Track Link
+
+
+
+
+ Mark as &Listened
+
+
+
+
+ &Remove Items
+
+
+
+
+ &Remove Item
+
+
+
+
+ Copy Album &Link
+
+
+
+
+ Copy Artist &Link
+
+
+
+
+ Un-&Love
+
+
+
+
+ Properties...
+
+
+
+
+ Tomahawk::DatabaseCommand_AllAlbums
+
+
+ Unknown
+
+
+
+
+ Tomahawk::DropJobNotifier
+
+
+ playlist
+
+
+
+
+ artist
+
+
+
+
+ track
+
+
+
+
+ album
+
+
+
+
+ Fetching %1 from database
+
+
+
+
+ Parsing %1 %2
+
+
+
+
+ Tomahawk::DynamicControlList
+
+
+ Save Settings
+
+
+
+
+ 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
+
+
+ Similar To
+
+
+
+
+ Limit To
+
+
+
+
+ Artist name
+
+
+
+
+
+
+
+
+
+
+ is
+
+
+
+
+ from user
+
+
+
+
+
+ No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings
+
+
+
+
+ similar to
+
+
+
+
+ Enter any combination of song name and artist here...
+
+
+
+
+
+
+
+
+
+
+ Less
+
+
+
+
+
+
+
+
+
+
+ More
+
+
+
+
+ 0 BPM
+
+
+
+
+ 500 BPM
+
+
+
+
+ 0 secs
+
+
+
+
+ 3600 secs
+
+
+
+
+ -100 dB
+
+
+
+
+ 100 dB
+
+
+
+
+
+ -180%1
+
+
+
+
+
+ 180%1
+
+
+
+
+ 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
+
+
+
+
+ is not
+
+
+
+
+ Studio
+ Song type: The song was recorded in a studio.
+
+
+
+
+ Live
+ Song type: The song was a life performance.
+
+
+
+
+ Acoustic
+ Song type
+
+
+
+
+ Electric
+ Song type
+
+
+
+
+ Christmas
+ Song type: A christmas song
+
+
+
+
+ At Least
+
+
+
+
+ At Most
+
+
+
+
+ only by ~%1
+
+
+
+
+
+ similar to ~%1
+
+
+
+
+ with genre ~%1
+
+
+
+
+
+ from no one
+
+
+
+
+ You
+
+
+
+
+ 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 genre is %1
+
+
+
+
+ where song type is %1
+
+
+
+
+ where song type is not %1
+
+
+
+
+ Tomahawk::GroovesharkParser
+
+
+ Error fetching Grooveshark information from the network!
+
+
+
+
+ Tomahawk::InfoSystem::ChartsPlugin
+
+
+ Artists
+
+
+
+
+ Albums
+
+
+
+
+ Tracks
+
+
+
+
+ Tomahawk::InfoSystem::FdoNotifyPlugin
+
+
+ on
+ 'on' is followed by an album name
+
+
+
+
+ %1%4 %2%3.
+ %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)
+
+
+
+
+
+ by
+ preposition to link track and artist
+
+
+
+
+ %1 sent you
+%2%4 %3.
+ %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)
+
+
+
+
+ %1 sent you "%2" by %3.
+ %1 is a nickname, %2 is a title, %3 is an artist
+
+
+
+
+ on "%1"
+ %1 is an album name
+
+
+
+
+ "%1" by %2%3.
+ %1 is a title, %2 is an artist and %3 is replaced by either the previous message or nothing
+
+
+
+
+ Tomahawk::InfoSystem::LastFmInfoPlugin
+
+
+ Top Tracks
+
+
+
+
+ Loved Tracks
+
+
+
+
+ Hyped Tracks
+
+
+
+
+ Top Artists
+
+
+
+
+ Hyped Artists
+
+
+
+
+ Tomahawk::InfoSystem::NewReleasesPlugin
+
+
+ Albums
+
+
+
+
+ Tomahawk::InfoSystem::SnoreNotifyPlugin
+
+
+ Notify User
+
+
+
+
+ Now Playing
+
+
+
+
+ Unresolved track
+
+
+
+
+ Playback Stopped
+
+
+
+
+ You received a Song recommendation
+
+
+
+
+ on
+ 'on' is followed by an album name
+
+
+
+
+ %1%4 %2%3.
+ %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)
+
+
+
+
+
+ by
+ preposition to link track and artist
+
+
+
+
+ on "%1"
+ %1 is an album name
+
+
+
+
+ "%1" by %2%3.
+ %1 is a title, %2 is an artist and %3 is replaced by either the previous message or nothing
+
+
+
+
+ %1 sent you
+%2%4 %3.
+ %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)
+
+
+
+
+ %1 sent you "%2" by %3.
+ %1 is a nickname, %2 is a title, %3 is an artist
+
+
+
+
+ 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::LocalCollection
+
+
+ Your Collection
+
+
+
+
+ Tomahawk::RemoteCollection
+
+
+ Collection of %1
+
+
+
+
+ Tomahawk::ScriptCollection
+
+
+ %1 Collection
+ Name of a collection based on a resolver, e.g. Subsonic Collection
+
+
+
+
+ Tomahawk::ShortenedLinkParser
+
+
+ Network error parsing shortened link!
+
+
+
+
+ Tomahawk::Source
+
+
+ Scanning (%L1 tracks)
+
+
+
+
+ Checking
+
+
+
+
+ Syncing
+
+
+
+
+ Importing
+
+
+
+
+ Saving (%1%)
+
+
+
+
+ Online
+
+
+
+
+ Offline
+
+
+
+
+ Tomahawk::SpotifyParser
+
+
+ Error fetching Spotify information from the network!
+
+
+
+
+ Tomahawk::Track
+
+
+ and
+
+
+
+
+ You
+
+
+
+
+ you
+
+
+
+
+ and
+
+
+
+
+ %n other(s)
+
+
+
+
+ %n people
+
+
+
+
+ loved this track
+
+
+
+
+ sent you this track %1
+
+
+
+
+ Tomahawk::Widgets::ChartsPage
+
+
+ Charts
+
+
+
+
+ Tomahawk::Widgets::Dashboard
+
+
+ Feed
+
+
+
+
+ An overview of your friends' recent activity
+
+
+
+
+ Tomahawk::Widgets::DashboardWidget
+
+
+ Recently Played Tracks
+
+
+
+
+ Feed
+
+
+
+
+ Tomahawk::Widgets::NetworkActivity
+
+
+ Trending
+
+
+
+
+ What's hot amongst your friends
+
+
+
+
+ Tomahawk::Widgets::NetworkActivityWidget
+
+
+ Charts
+
+
+
+
+ Last Week
+
+
+
+
+ Loved Tracks
+
+
+
+
+ Top Loved
+
+
+
+
+ Recently Loved
+
+
+
+
+ Sorry, we are still loading the charts.
+
+
+
+
+ Sorry, we couldn't find any trending tracks.
+
+
+
+
+ Last Month
+
+
+
+
+ Last Year
+
+
+
+
+ Overall
+
+
+
+
+ Tomahawk::Widgets::NewReleasesPage
+
+
+ New Releases
+
+
+
+
+ Tomahawk::Widgets::WhatsNew_0_8
+
+
+ What's new in 0.8?
+
+
+
+
+ An overview of the changes and additions since 0.7.
+
+
+
+
+ Tomahawk::XspfUpdater
+
+
+ Automatically update from XSPF
+
+
+
+
+ TomahawkApp
+
+
+ You
+
+
+
+
+ Tomahawk is updating the database. Please wait, this may take a minute!
+
+
+
+
+ Tomahawk
+
+
+
+
+ Updating database
+
+
+
+
+
+ Updating database
+%1
+
+
+
+
+ Automatically detecting external IP failed.
+
+
+
+
+ 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
+
+
+
+
+ TomahawkUtils
+
+
+ Configure Accounts
+
+
+
+
+ Invite
+
+
+
+
+ TomahawkWindow
+
+
+ Tomahawk
+
+
+
+
+
+ Back
+
+
+
+
+ Go back one page
+
+
+
+
+ Forward
+
+
+
+
+ Go forward one page
+
+
+
+
+
+ Hide Menu Bar
+
+
+
+
+
+ Show Menu Bar
+
+
+
+
+ &Main Menu
+
+
+
+
+
+
+ Play
+
+
+
+
+ Next
+
+
+
+
+
+
+ Love
+
+
+
+
+ Unlove
+
+
+
+
+ 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
+
+
+
+
+ Create New Playlist
+
+
+
+
+ Copyright 2010 - 2014
+
+
+
+
+
+ Pause
+
+
+
+
+ Search
+
+
+
+
+ &Play
+
+
+
+
+ %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>
+
+
+
+
+ Thanks to:
+
+
+
+
+ About Tomahawk
+
+
+
+
+ TrackDetailView
+
+
+ Marked as Favorite
+
+
+
+
+ Alternate Sources:
+
+
+
+
+ Unknown Release-Date
+
+
+
+
+ on %1
+
+
+
+
+ TrackInfoWidget
+
+
+ Similar Tracks
+
+
+
+
+ Sorry, but we could not find similar tracks for this song!
+
+
+
+
+ Top Hits
+
+
+
+
+ TrackView
+
+
+ Sorry, your filter '%1' did not match any results.
+
+
+
+
+ TransferStatusItem
+
+
+ from
+ streaming artist - track from friend
+
+
+
+
+ to
+ streaming artist - track to friend
+
+
+
+
+ Type selector
+
+
+ Artist
+
+
+
+
+ Artist Description
+
+
+
+
+ User Radio
+
+
+
+
+ Song
+
+
+
+
+ Genre
+
+
+
+
+ Mood
+
+
+
+
+ Style
+
+
+
+
+ Adventurousness
+
+
+
+
+ Variety
+
+
+
+
+ Tempo
+
+
+
+
+ Duration
+
+
+
+
+ Loudness
+
+
+
+
+ Danceability
+
+
+
+
+ Energy
+
+
+
+
+ Artist Familiarity
+
+
+
+
+ Artist Hotttnesss
+
+
+
+
+ Song Hotttnesss
+
+
+
+
+ Longitude
+
+
+
+
+ Latitude
+
+
+
+
+ Mode
+
+
+
+
+ Key
+
+
+
+
+ Sorting
+
+
+
+
+ Song Type
+
+
+
+
+ ViewManager
+
+
+ Inbox
+
+
+
+
+ Listening suggestions from your friends
+
+
+
+
+ WhatsNewWidget_0_8
+
+
+ WHAT'S NEW
+
+
+
+
+ If you are reading this it likely means you have already noticed the biggest change since our last release - a shiny new interface and design. New views, fonts, icons, header images and animations at every turn. Below you can find an overview of the functional changes and additions since 0.7 too:
+
+
+
+
+ Inbox
+
+
+
+
+ <html><head/><body><p>Send tracks to your friends just by dragging it onto their avatar in the Tomahawk sidebar. Check out what your friends think you should listen to in your inbox.</p></body></html>
+
+
+
+
+ Universal Link Support
+
+
+
+
+ <html><head/><body><p>Love that your friends and influencers are posting music links but hate that they are links for music services you don'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.</p></body></html>
+
+
+
+
+ Beats Music
+
+
+
+
+ <html><head/><body><p>Beats Music (recently aquired by Apple) is now supported. This means that Beats Music subscribers can also benefit by resolving other music service links so they stream from their Beats Music account. Welcome aboard!</p></body></html>
+
+
+
+
+ Google Music
+
+
+
+
+ <html><head/><body><p>Google Music is another of our latest supported services - both for the music you'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.</p></body></html>
+
+
+
+
+ <html><head/><body><p>Tomahawk for Android is now in beta! The majority of the same resolvers are supported in the Android app - plus a couple of additional ones in Rdio & Deezer. <a href="http://hatchet.is/register">Create a Hatchet account</a> to sync all of your playlists from your desktop to your mobile. Find current and future music influencers and follow them to discover and hear what they love. Just like on the desktop, Tomahawk on Android can open other music service links and play them from yours. Even when you are listening to other music apps, Tomahawk can capture all of that playback data and add it to your Hatchet profile.</p></body></html>
+
+
+
+
+ Connectivity
+
+
+
+
+ <html><head/><body><p>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!</p></body></html>
+
+
+
+
+ Android
+
+
+
+
+ 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
+
+
+
+
+ Login Information
+
+
+
+
+ Configure this Jabber/XMPP account
+
+
+
+
+ Enter your XMPP login to connect with your friends using Tomahawk!
+
+
+
+
+ XMPP ID:
+
+
+
+
+ e.g. user@jabber.org
+
+
+
+
+ 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)
+
+
+
+
+ Display 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_ro.ts b/lang/tomahawk_ro.ts
index f592b58c4..48e9f9096 100644
--- a/lang/tomahawk_ro.ts
+++ b/lang/tomahawk_ro.ts
@@ -349,7 +349,7 @@ se conecteze și să redea de la tine?
-
+
Albums
@@ -1111,7 +1111,7 @@ Password (OTP)
Înainte
-
+
Properties
Proprietăți
diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts
index e63314694..c0cbecb13 100644
--- a/lang/tomahawk_ru.ts
+++ b/lang/tomahawk_ru.ts
@@ -350,7 +350,7 @@ connect and stream from you?
Песни
-
+
Albums
Альбомы
@@ -1112,7 +1112,7 @@ Password (OTP)
Вперед
-
+
Properties
Свойства
diff --git a/lang/tomahawk_sq.ts b/lang/tomahawk_sq.ts
index 33f581f64..e4ad0dbd8 100644
--- a/lang/tomahawk_sq.ts
+++ b/lang/tomahawk_sq.ts
@@ -349,7 +349,7 @@ lidhuni dhe transmeto nga ju?
-
+
Albums
@@ -1110,7 +1110,7 @@ Password (OTP)
Përpara
-
+
Properties
Cilësimet
diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts
index f37a7f296..285947a7d 100644
--- a/lang/tomahawk_sv.ts
+++ b/lang/tomahawk_sv.ts
@@ -349,7 +349,7 @@ ansluta och strömma från dig?
Låtar
-
+
Albums
Album
@@ -1110,7 +1110,7 @@ Password (OTP)
Framåt
-
+
Properties
Egenskaper
diff --git a/lang/tomahawk_th.ts b/lang/tomahawk_th.ts
index f4ca1c964..1c62735fd 100644
--- a/lang/tomahawk_th.ts
+++ b/lang/tomahawk_th.ts
@@ -349,7 +349,7 @@ connect and stream from you?
เพลง
-
+
Albums
อัลบั้ม
@@ -1110,7 +1110,7 @@ Password (OTP)
เดินหน้า
-
+
Properties
คุณสมบัติ
diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts
index a29e3adc5..711adae38 100644
--- a/lang/tomahawk_tr.ts
+++ b/lang/tomahawk_tr.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_uk.ts b/lang/tomahawk_uk.ts
index 4c38d8cbb..62510b216 100644
--- a/lang/tomahawk_uk.ts
+++ b/lang/tomahawk_uk.ts
@@ -349,7 +349,7 @@ connect and stream from you?
Пісні
-
+
Albums
Альбоми
@@ -1111,7 +1111,7 @@ Password (OTP)
Вперед
-
+
Properties
Властивості
diff --git a/lang/tomahawk_uz@Latn.ts b/lang/tomahawk_uz@Latn.ts
index 7448a98aa..0b198f9a9 100644
--- a/lang/tomahawk_uz@Latn.ts
+++ b/lang/tomahawk_uz@Latn.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_vi.ts b/lang/tomahawk_vi.ts
index c3b88b44d..5be4b6e80 100644
--- a/lang/tomahawk_vi.ts
+++ b/lang/tomahawk_vi.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/lang/tomahawk_zh_CN.ts b/lang/tomahawk_zh_CN.ts
index 477ef4524..e03e6478b 100644
--- a/lang/tomahawk_zh_CN.ts
+++ b/lang/tomahawk_zh_CN.ts
@@ -348,7 +348,7 @@ connect and stream from you?
曲目
-
+
Albums
专辑
@@ -1110,7 +1110,7 @@ Password (OTP)
下一个
-
+
Properties
属性
diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts
index 0e2c2707e..d8974dd40 100644
--- a/lang/tomahawk_zh_TW.ts
+++ b/lang/tomahawk_zh_TW.ts
@@ -348,7 +348,7 @@ connect and stream from you?
-
+
Albums
@@ -1109,7 +1109,7 @@ Password (OTP)
-
+
Properties
diff --git a/src/libtomahawk/ActionCollection.cpp b/src/libtomahawk/ActionCollection.cpp
index 61eafd17f..3f4063621 100644
--- a/src/libtomahawk/ActionCollection.cpp
+++ b/src/libtomahawk/ActionCollection.cpp
@@ -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();
diff --git a/src/libtomahawk/ActionCollection.h b/src/libtomahawk/ActionCollection.h
index 5f0be10b2..9f08d0fcf 100644
--- a/src/libtomahawk/ActionCollection.h
+++ b/src/libtomahawk/ActionCollection.h
@@ -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 );
diff --git a/src/libtomahawk/TomahawkSettings.cpp b/src/libtomahawk/TomahawkSettings.cpp
index 0965a05ff..d94fcdcbc 100644
--- a/src/libtomahawk/TomahawkSettings.cpp
+++ b/src/libtomahawk/TomahawkSettings.cpp
@@ -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 );
}
diff --git a/src/libtomahawk/TomahawkSettings.h b/src/libtomahawk/TomahawkSettings.h
index c2ed91f72..f518dd759 100644
--- a/src/libtomahawk/TomahawkSettings.h
+++ b/src/libtomahawk/TomahawkSettings.h
@@ -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 );
diff --git a/src/libtomahawk/audio/AudioOutput.cpp b/src/libtomahawk/audio/AudioOutput.cpp
index 57da92714..daecb2d83 100644
--- a/src/libtomahawk/audio/AudioOutput.cpp
+++ b/src/libtomahawk/audio/AudioOutput.cpp
@@ -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);
diff --git a/src/libtomahawk/audio/MediaStream.cpp b/src/libtomahawk/audio/MediaStream.cpp
index d563a3a24..895f09870 100644
--- a/src/libtomahawk/audio/MediaStream.cpp
+++ b/src/libtomahawk/audio/MediaStream.cpp
@@ -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 );
}
diff --git a/src/libtomahawk/audio/MediaStream.h b/src/libtomahawk/audio/MediaStream.h
index 4d2b472f5..831e70a57 100644
--- a/src/libtomahawk/audio/MediaStream.h
+++ b/src/libtomahawk/audio/MediaStream.h
@@ -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:
diff --git a/src/libtomahawk/audio/Qnr_IoDeviceStream.cpp b/src/libtomahawk/audio/Qnr_IoDeviceStream.cpp
index b4b4d0b5a..b78888eb0 100644
--- a/src/libtomahawk/audio/Qnr_IoDeviceStream.cpp
+++ b/src/libtomahawk/audio/Qnr_IoDeviceStream.cpp
@@ -74,15 +74,13 @@ QNR_IODeviceStream::QNR_IODeviceStream( const QSharedPointer& 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();
}
diff --git a/src/libtomahawk/audio/Qnr_IoDeviceStream.h b/src/libtomahawk/audio/Qnr_IoDeviceStream.h
index 6a679c5f1..b295b8596 100644
--- a/src/libtomahawk/audio/Qnr_IoDeviceStream.h
+++ b/src/libtomahawk/audio/Qnr_IoDeviceStream.h
@@ -26,6 +26,7 @@
#include "DllMacro.h"
#include
+#include
#include
#include
@@ -52,6 +53,7 @@ private slots:
void readyRead();
private:
+ QMutex m_mutex;
QByteArray m_data;
QSharedPointer m_networkReply;
QTimer* m_timer;
diff --git a/src/libtomahawk/playlist/PlayableProxyModel.cpp b/src/libtomahawk/playlist/PlayableProxyModel.cpp
index 85729c42d..4a6f75d13 100644
--- a/src/libtomahawk/playlist/PlayableProxyModel.cpp
+++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp
@@ -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;
}
diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h
index 44245293f..82c63f85f 100644
--- a/src/libtomahawk/playlist/PlayableProxyModel.h
+++ b/src/libtomahawk/playlist/PlayableProxyModel.h
@@ -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 m_model;
diff --git a/src/libtomahawk/playlist/RecentlyPlayedModel.cpp b/src/libtomahawk/playlist/RecentlyPlayedModel.cpp
index 824e579c4..9184938cb 100644
--- a/src/libtomahawk/playlist/RecentlyPlayedModel.cpp
+++ b/src/libtomahawk/playlist/RecentlyPlayedModel.cpp
@@ -172,6 +172,7 @@ RecentlyPlayedModel::onPlaybackFinished( const Tomahawk::track_ptr& track, const
void
RecentlyPlayedModel::onTracksLoaded( QList tracks, QList logs )
{
+ finishLoading();
for ( int i = 0; i < tracks.count(); i++ )
{
onPlaybackFinished( tracks.at( i ), logs.at( i ) );
diff --git a/src/libtomahawk/playlist/TreeModel.cpp b/src/libtomahawk/playlist/TreeModel.cpp
index 56461e58c..bc7838181 100644
--- a/src/libtomahawk/playlist/TreeModel.cpp
+++ b/src/libtomahawk/playlist/TreeModel.cpp
@@ -216,8 +216,7 @@ TreeModel::addTracks( const album_ptr& album, const QModelIndex& parent, bool au
connect( album.data(), SIGNAL( tracksAdded( QList, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( onTracksFound( QList, 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& tracks, const QModel
QPair< int, int > crows;
int c = rowCount( parent );
+ removeRows( 0, c, parent );
+
crows.first = c;
crows.second = c + tracks.count() - 1;
diff --git a/src/libtomahawk/utils/M3uLoader.cpp b/src/libtomahawk/utils/M3uLoader.cpp
index ad3c4717a..c7c36ee68 100644
--- a/src/libtomahawk/utils/M3uLoader.cpp
+++ b/src/libtomahawk/utils/M3uLoader.cpp
@@ -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();
}
diff --git a/src/libtomahawk/utils/M3uLoader.h b/src/libtomahawk/utils/M3uLoader.h
index fa541e1b0..bc99a6da4 100644
--- a/src/libtomahawk/utils/M3uLoader.h
+++ b/src/libtomahawk/utils/M3uLoader.h
@@ -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;
diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp
index ebedf3e4f..9e9a1fe4f 100644
--- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp
+++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp
@@ -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
diff --git a/src/libtomahawk/viewpages/CollectionViewPage.cpp b/src/libtomahawk/viewpages/CollectionViewPage.cpp
index 12f09bfbf..252fa913a 100644
--- a/src/libtomahawk/viewpages/CollectionViewPage.cpp
+++ b/src/libtomahawk/viewpages/CollectionViewPage.cpp
@@ -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 )
{
diff --git a/src/tomahawk/CMakeLists.txt b/src/tomahawk/CMakeLists.txt
index 45dc696f7..47c9612ff 100644
--- a/src/tomahawk/CMakeLists.txt
+++ b/src/tomahawk/CMakeLists.txt
@@ -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
diff --git a/src/tomahawk/TomahawkWindow.cpp b/src/tomahawk/TomahawkWindow.cpp
index 542862209..9c2f29cf3 100644
--- a/src/tomahawk/TomahawkWindow.cpp
+++ b/src/tomahawk/TomahawkWindow.cpp
@@ -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();
}
diff --git a/src/tomahawk/TomahawkWindow.h b/src/tomahawk/TomahawkWindow.h
index 4ff770b04..95625f955 100644
--- a/src/tomahawk/TomahawkWindow.h
+++ b/src/tomahawk/TomahawkWindow.h
@@ -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 )
diff --git a/src/tomahawk/dialogs/LoadXSPFDialog.cpp b/src/tomahawk/dialogs/LoadPlaylistDialog.cpp
similarity index 58%
rename from src/tomahawk/dialogs/LoadXSPFDialog.cpp
rename to src/tomahawk/dialogs/LoadPlaylistDialog.cpp
index 2973e0eab..7bb12e17c 100644
--- a/src/tomahawk/dialogs/LoadXSPFDialog.cpp
+++ b/src/tomahawk/dialogs/LoadPlaylistDialog.cpp
@@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - ===
*
* Copyright 2010-2011, Leo Franchi
+ * Copyright 2014, 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
@@ -16,53 +17,70 @@
* along with Tomahawk. If not, see .
*/
-#include "LoadXSPFDialog.h"
-#include "ui_LoadXSPFDialog.h"
+#include "LoadPlaylistDialog.h"
+#include "ui_LoadPlaylistDialog.h"
#include "TomahawkSettings.h"
#include "Source.h"
#include
-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();
}
diff --git a/src/tomahawk/dialogs/LoadXSPFDialog.h b/src/tomahawk/dialogs/LoadPlaylistDialog.h
similarity index 67%
rename from src/tomahawk/dialogs/LoadXSPFDialog.h
rename to src/tomahawk/dialogs/LoadPlaylistDialog.h
index 47066286c..00aa891a1 100644
--- a/src/tomahawk/dialogs/LoadXSPFDialog.h
+++ b/src/tomahawk/dialogs/LoadPlaylistDialog.h
@@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - ===
*
* Copyright 2010-2011, Leo Franchi
+ * Copyright 2014, 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
@@ -16,28 +17,31 @@
* along with Tomahawk. If not, see .
*/
-#ifndef LOADXSPFDIALOG_H
-#define LOADXSPFDIALOG_H
+#ifndef LOADPLAYLISTDIALOG_H
+#define LOADPLAYLISTDIALOG_H
#include
-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
diff --git a/src/tomahawk/dialogs/LoadXSPFDialog.ui b/src/tomahawk/dialogs/LoadPlaylistDialog.ui
similarity index 87%
rename from src/tomahawk/dialogs/LoadXSPFDialog.ui
rename to src/tomahawk/dialogs/LoadPlaylistDialog.ui
index e8008fbc3..e7525e04b 100644
--- a/src/tomahawk/dialogs/LoadXSPFDialog.ui
+++ b/src/tomahawk/dialogs/LoadPlaylistDialog.ui
@@ -1,17 +1,17 @@
- LoadXSPF
-
+ LoadPlaylist
+
0
0
- 444
- 241
+ 481
+ 199
- Load XSPF
+ Load Playlist
-
@@ -19,6 +19,9 @@
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.
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
true
@@ -75,6 +78,9 @@
To import a playlist from Spotify, Rdio, Beats, etc. - simply drag the link into Tomahawk.
+
+ Qt::AlignCenter
+
true
@@ -97,7 +103,7 @@
buttonBox
accepted()
- LoadXSPF
+ LoadPlaylist
accept()
@@ -113,7 +119,7 @@
buttonBox
rejected()
- LoadXSPF
+ LoadPlaylist
reject()