diff --git a/data/images/add.png b/data/images/add.png
index 59fa7fb1d..1c16968fc 100644
Binary files a/data/images/add.png and b/data/images/add.png differ
diff --git a/data/images/album-icon.png b/data/images/album-icon.png
index 51c54e8ca..88b103f27 100644
Binary files a/data/images/album-icon.png and b/data/images/album-icon.png differ
diff --git a/data/images/album-placeholder-grid.png b/data/images/album-placeholder-grid.png
new file mode 100644
index 000000000..5e986a666
Binary files /dev/null and b/data/images/album-placeholder-grid.png differ
diff --git a/data/images/apply-check.png b/data/images/apply-check.png
index 0f3153c4b..b17894dfe 100644
Binary files a/data/images/apply-check.png and b/data/images/apply-check.png differ
diff --git a/data/images/artist-icon.png b/data/images/artist-icon.png
index 87d8fd48e..3a11c7085 100644
Binary files a/data/images/artist-icon.png and b/data/images/artist-icon.png differ
diff --git a/data/images/artist-placeholder-grid.png b/data/images/artist-placeholder-grid.png
new file mode 100644
index 000000000..c47a989ee
Binary files /dev/null and b/data/images/artist-placeholder-grid.png differ
diff --git a/data/images/automatic-playlist.png b/data/images/automatic-playlist.png
index a33bfb9c8..0dfa254e4 100644
Binary files a/data/images/automatic-playlist.png and b/data/images/automatic-playlist.png differ
diff --git a/data/images/avatar-dude-plus.png b/data/images/avatar-dude-plus.png
deleted file mode 100644
index 961b05000..000000000
Binary files a/data/images/avatar-dude-plus.png and /dev/null differ
diff --git a/data/images/avatar-dude.png b/data/images/avatar-dude.png
deleted file mode 100644
index f1c2ebca8..000000000
Binary files a/data/images/avatar-dude.png and /dev/null differ
diff --git a/data/images/charts.png b/data/images/charts.png
index 6e56456a2..50c6f3dfa 100644
Binary files a/data/images/charts.png and b/data/images/charts.png differ
diff --git a/data/images/collapse.png b/data/images/collapse.png
deleted file mode 100644
index b92bc558f..000000000
Binary files a/data/images/collapse.png and /dev/null differ
diff --git a/data/images/collection.png b/data/images/collection.png
index abc20d3ca..cc5c16b87 100644
Binary files a/data/images/collection.png and b/data/images/collection.png differ
diff --git a/data/images/create-playlist.png b/data/images/create-playlist.png
deleted file mode 100644
index 0ea11f467..000000000
Binary files a/data/images/create-playlist.png and /dev/null differ
diff --git a/data/images/dashboard.png b/data/images/dashboard.png
index 7f14a454f..47c962012 100644
Binary files a/data/images/dashboard.png and b/data/images/dashboard.png differ
diff --git a/data/images/home.png b/data/images/home.png
deleted file mode 100644
index f6f5703b8..000000000
Binary files a/data/images/home.png and /dev/null differ
diff --git a/data/images/itunes.png b/data/images/itunes.png
index e0f2711da..3692962d2 100644
Binary files a/data/images/itunes.png and b/data/images/itunes.png differ
diff --git a/data/images/jump-link.png b/data/images/jump-link.png
new file mode 100644
index 000000000..ca7845b47
Binary files /dev/null and b/data/images/jump-link.png differ
diff --git a/data/images/loved_playlist.png b/data/images/loved_playlist.png
index 79c488e8e..b6b9ca2b3 100644
Binary files a/data/images/loved_playlist.png and b/data/images/loved_playlist.png differ
diff --git a/data/images/music-icon.png b/data/images/music-icon.png
index daf8e7d13..13b3d5ecc 100644
Binary files a/data/images/music-icon.png and b/data/images/music-icon.png differ
diff --git a/data/images/new-additions.png b/data/images/new-additions.png
index 3b7ef64d0..772e7034c 100644
Binary files a/data/images/new-additions.png and b/data/images/new-additions.png differ
diff --git a/data/images/new-releases.png b/data/images/new-releases.png
index 05252d24e..36c53619b 100644
Binary files a/data/images/new-releases.png and b/data/images/new-releases.png differ
diff --git a/data/images/playlist-icon.png b/data/images/playlist-icon.png
index ccbbef4b5..41d0f9a59 100644
Binary files a/data/images/playlist-icon.png and b/data/images/playlist-icon.png differ
diff --git a/data/images/post.png b/data/images/post.png
deleted file mode 100644
index 808a0737d..000000000
Binary files a/data/images/post.png and /dev/null differ
diff --git a/data/images/recently-played.png b/data/images/recently-played.png
index 0c1161af0..22ee8faea 100644
Binary files a/data/images/recently-played.png and b/data/images/recently-played.png differ
diff --git a/data/images/search-icon.png b/data/images/search-icon.png
index 05ea58db8..55770c844 100644
Binary files a/data/images/search-icon.png and b/data/images/search-icon.png differ
diff --git a/data/images/share.png b/data/images/share.png
index 7cd3e0023..501752c4d 100644
Binary files a/data/images/share.png and b/data/images/share.png differ
diff --git a/data/images/station.png b/data/images/station.png
index 9680fe8a1..a3b384e8c 100644
Binary files a/data/images/station.png and b/data/images/station.png differ
diff --git a/data/images/supercollection.png b/data/images/supercollection.png
index cefead535..13b3d5ecc 100644
Binary files a/data/images/supercollection.png and b/data/images/supercollection.png differ
diff --git a/data/images/track-icon.png b/data/images/track-icon.png
new file mode 100644
index 000000000..2851e5b3f
Binary files /dev/null and b/data/images/track-icon.png differ
diff --git a/data/images/track-placeholder.png b/data/images/track-placeholder.png
index 2976d36d7..2851e5b3f 100644
Binary files a/data/images/track-placeholder.png and b/data/images/track-placeholder.png differ
diff --git a/data/images/user-avatar.png b/data/images/user-avatar.png
index 32a4b3895..a2fc3fbd8 100644
Binary files a/data/images/user-avatar.png and b/data/images/user-avatar.png differ
diff --git a/lang/tomahawk_bg.ts b/lang/tomahawk_bg.ts
index 9c1cbbbba..c5c6f3761 100644
--- a/lang/tomahawk_bg.ts
+++ b/lang/tomahawk_bg.ts
@@ -4,12 +4,12 @@
Dialog
- Диалогов
+ Description goes here
- Описанието идва тук
+
@@ -55,17 +55,17 @@ connect and stream from you?
&Listen Along
- &Слушай заедно
+ &Слушай заедно сStop &Listening Along
- Спри & да слушаш заедно
+ Спри &да слушаш заедно с&Follow in real-time
- &Последвай
+ &Следвай в реално време
@@ -125,7 +125,7 @@ connect and stream from you?
Form
- Форма
+
@@ -136,24 +136,28 @@ connect and stream from you?
Click to show Official Tracks
- Покажи само официалните песни
+ Покажи само официалните песни
+/Албумите означени като "Официални" в БД на Misicbrainz, Rovi, и др.п./Click to show SuperCollection Tracks
- Покажи песните от супер колекцията
+ Покажи песните от супер колекцията
+/Сборен излед от локалните и наличните в колекциите на приятелите ти/Click to show SuperCollection Albums
- Покажи албумите от супер колекцията
+ Покажи албумите от супер колекцията
+/Сборен излед от локалните и наличните в колекциите на приятелите ти/Click to show Official Albums
- Покажи само официалните албуми
+ Покажи само официалните албуми
+/Албумите означени като "Официални" в БД на Misicbrainz, Rovi, и др.п./
@@ -183,14 +187,14 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.След като бъде сканирана музикалната ти колекция, ще откриеш тук най-скоро добавените албуми.
-
+ This collection doesn't have any recent albums.
- В тази колекция все още няма добавени наскоро албуми
+ В тази колекция все още няма добавени наскоро албуми.
@@ -198,7 +202,7 @@ connect and stream from you?
Form
- Форма
+
@@ -219,12 +223,14 @@ connect and stream from you?
Click to show SuperCollection Albums
- Покажи албумите от супер колекцията
+ Покажи албумите от супер колекцията
+/Сборен излед от локалните и наличните в колекциите на приятелите ти/Click to show Official Albums
- Покажи само официалните албуми
+ Покажи само официалните албуми
+/Албумите означени като "Официални" в БД на Misicbrainz, Rovi, и др.п./
@@ -419,8 +425,7 @@ connect and stream from you?
<p><b>Sorry!</b> Tomahawk crashed. Information about the crash is now being sent to Tomahawk HQ so that we can fix the bug.</p>
- <p><b>Извинявай</b>!
- Tomahawk спря да работи. Информация относно проблемът се изпраща към нашата централа, за да можем да го отстраним.
+ <p><b>Извинявай</b> Tomahawk спря да работи. Информация относно проблемът се изпраща към нашата централа, за да можем да го отстраним.</p>
@@ -435,7 +440,7 @@ connect and stream from you?
Uploaded %L1 of %L2 KB.
- Качени %L1 от %В2 КБ
+ Качени %L1 от %В2 КБ.
@@ -446,7 +451,7 @@ connect and stream from you?
Sent! <b>Many thanks</b>.
- Изпращането приключи. Благодарим ви за отзивчивостта! :)
+ Изпращането приключи. <b>Благодарим ви за отзивчивостта!</b>.
@@ -511,7 +516,7 @@ connect and stream from you?
Form
- Форма
+
@@ -558,7 +563,7 @@ connect and stream from you?
Form
- Форма
+
@@ -656,7 +661,7 @@ connect and stream from you?
Enter a title for the new playlist:
- Въведи име за новият списък
+ Въведи име за новият списък:
@@ -671,7 +676,7 @@ connect and stream from you?
&Create Playlist
- Създай списък
+ &Създай списък
@@ -723,7 +728,7 @@ connect and stream from you?
A playlist by %1, created %2
- A playlist by %1, created %2
+ Списък - създател %1, от %2
@@ -751,7 +756,7 @@ connect and stream from you?
Just a regular old playlist... Give it a name, drag in some tracks, and go!
- Обикновен списък. Име, няколко песни и си ти на ход! ;)
+ Обикновен списък. Име, няколко песни и си ти на ход! ;-)
@@ -766,7 +771,7 @@ connect and stream from you?
New Playlist...
- Нов списък
+ Нов списък...
@@ -795,58 +800,53 @@ connect and stream from you?
Proxy настройки
-
+ Hostname of proxy serverАдрес на proxy сървър
-
+ HostАдрес
-
+ PortПорт
-
+ Proxy loginНастройка на влизане
-
+ UserПотребител
-
+ PasswordПарола
-
+ Proxy passwordПарола за proxy
-
- Type
- Тип
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)Без адреси за Proxy (Отменя системните настройки)
-
+ localhost *.example.com (space separated)localhost *.example.com (отделени с интервал)
-
+ Use proxy for DNS lookups?Използване на Proxy за DNS заявки?
@@ -1006,40 +1006,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionКолекция
-
+ AdvancedРазширени
-
+ AllВсички
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+ Някои промени няма да имат ефект, докато програмата не бъде рестартирана.
+
+
+ ServicesУслуги
-
+ Install resolver from fileИнсталирай услиги за търсене от файл
-
+ InformationИнформация
-
-
- Changing this setting requires a restart of Tomahawk!
- Промяната на тази настройка(и) изисква рестартиране на програмата!
- SocialPlaylistWidget
@@ -1199,6 +1199,7 @@ connect and stream from you?
+ Latest AdditionsПоследно добавени
@@ -1215,7 +1216,33 @@ connect and stream from you?
SuperCollection
- Супер колекция
+ Супер колекция
+/Сборен излед от локалните и наличните в колекциите на приятелите ти/
+
+
+
+ Latest additions to your collection
+ Последно добавени към колекцията
+
+
+
+ Latest additions to %1's collection
+ Последно добавени в колекцията на %1
+
+
+
+ Recently Played Tracks
+ Наскоро изпълнени песни
+
+
+
+ Your recently played tracks
+ Наскоро изпълнени песни от теб
+
+
+
+ %1's recently played tracks
+ Наскоро изпълнените песни от %1
@@ -1291,7 +1318,8 @@ connect and stream from you?
SuperCollection
- Супер колекция
+ Супер колекция
+/Сборен излед от локалните и наличните в колекциите на приятелите ти/
@@ -1329,7 +1357,7 @@ connect and stream from you?
Form
- Форма
+
@@ -1349,7 +1377,7 @@ connect and stream from you?
Right click on any Tomahawk playlist to sync it to Spotify.
- Щракни с десен бутон върху, който и да е списък в Tomahawk, за да го добавиш и в Spotify
+ Щракни с десен бутон върху, който и да е списък в Tomahawk, за да го добавиш и в Spotify.
@@ -1369,7 +1397,7 @@ connect and stream from you?
Username:
- Потребителско име
+ Потребителско име:
@@ -1433,6 +1461,46 @@ connect and stream from you?
Time between scans, in seconds:Време между две сканирания, в секунди
+
+
+ Advanced Settings
+ Разширени настройки
+
+
+
+ Remote Peer Connection Method
+ Начин за свързване
+
+
+
+ None (outgoing connections only)
+ Без. (само изходящи връзки)
+
+
+
+ Use UPnP to establish port forward (recommended)
+ Ползвай UPnP (препоръчително)
+
+
+
+ Use static external IP address/host name and port
+ Ползвай статичен IP адрес/име и порт
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+ Настрой тук, своят външен IP адрес или име. Моля увери се, че си настроил прехвърляне на избраният порт, към адресът ти от локалната мрежа.
+
+
+
+ SOCKS Proxy
+ SOCKS Proxy
+
+
+
+ Use SOCKS Proxy
+ Ползвай SOCKS Proxy
+ Internet Services
@@ -1449,50 +1517,35 @@ connect and stream from you?
Филтрирай по възможности:
-
- Advanced Network Settings
- Разширени мрежови настройки
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Ако изпитваш затруднения при свързването, пробвай да настроиш тук твоят външен IP адрес или име на хост.
-
-
-
+ Static Host Name:Статичен адрес:
-
+ Static Port:Статичен порт:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Винаги ползвай статичен порт. (Това ще премахне настройките зададени от UPnP)
-
-
-
+ Proxy Settings...Настройка на Proxy:
-
- Send reports after Tomahawk crashed
- Изпрати сервизна информация след забиване.
+
+ Other Settings
+ Други настройки
-
+
+ Send reports after Tomahawk crashed
+ Изпрати сервизна информация след счупването на програмата.
+
+
+ Allow web browsers to interact with Tomahawk (recommended)Позволи на браузърите да работят съвместно с Tomahawk (препоръчително)
-
-
- Use UPnP to establish port forward
- Ползвай UPnP за настройка на прехвърляне на портове.
- Tomahawk::Accounts::AccountDelegate
@@ -1542,7 +1595,7 @@ connect and stream from you?
Enter your Google login to connect with your friends using Tomahawk!
- Въведи твоята Google регистрация за да можеш да се свържеш с твоите приятели, ползващи Tomahawk
+ Въведи твоята Google регистрация за да можеш да се свържеш с твоите приятели, ползващи Tomahawk!
@@ -1681,7 +1734,7 @@ connect and stream from you?
Status: Credentials saved for %1
- Няма запазени данни за вход
+ Статус: данните са запаметени за %1
@@ -1725,7 +1778,7 @@ You may wish to try re-authenticating.
Send Message!
- Чурулик!
+ Изпрати съобщението!
@@ -1735,7 +1788,7 @@ You may wish to try re-authenticating.
Send Mention!
- Чурулик!
+ Изпрати споменаването!
@@ -1782,7 +1835,7 @@ You may wish to try re-authenticating.
Your message has been posted!
- Съобщението беще побликувано.
+ Съобщението беще побликувано!
@@ -2060,72 +2113,72 @@ Try tweaking the filters for a new set of songs to play.
Major
- Major
+ МажорMinor
- Minor
+ МинорC
- C
+ доC Sharp
- C#
+ до#D
-
+ реE Flat
-
+ ре \flat E
-
+ миF
-
+ фаF Sharp
-
+ фа#G
-
+ солA Flat
-
+ ла \flat A
-
+ лаB Flat
-
+ си \flat B
-
+ си
@@ -2185,7 +2238,7 @@ Try tweaking the filters for a new set of songs to play.
Key
- Бутон
+ Ключ
@@ -2422,31 +2475,31 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
- Най-актуални песни
+ Най-слушани песни
-
+ Loved Tracks
- Харесвани песни
+ Харесани песни
-
+ Hyped Tracks
- Песни слушани най-често
+ Песни, изпъкващи сред останалите
-
+ Top ArtistsНай-слушани артисти
-
+ Hyped Artists
- Артисти слушани най-често
+ Изпълнители, изпъкващи сред останалите
@@ -2518,37 +2571,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and и
-
+ YouТи
-
+ youти
-
+ andи
-
+ %n other(s)%n друг%n други
-
+ %1 people%1 хора
-
+ loved this trackхареса тази песен
@@ -2645,41 +2698,41 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
- Спри възпроизвеждането след текущата песен
+ &Спри възпроизвеждането след текущата песен
-
-
+
+ Hide Tomahawk WindowСкрий главният прозорец
-
+ Show Tomahawk WindowПокажи главният прозорец
-
+ Currently not playing.В момента не се изпълнява нищо
-
+ PlayИзпълни
-
+ PauseПауза
-
+ &Continue Playback after current Track
- Продължи възпроизвеждането след текущата песен
+ &Продължи възпроизвеждането след текущата песен
@@ -2772,7 +2825,7 @@ enter the displayed PIN number here:
Create New &Station
- Създай нова станция
+ Създай нова &Станция
@@ -2821,7 +2874,7 @@ enter the displayed PIN number here:
-
+ PlayИзпълни
@@ -2852,129 +2905,129 @@ enter the displayed PIN number here:
Провери за обновления...
-
-
-
+
+
+ Connect To PeerСвържи се с друг потребител
-
+ Enter peer address:
- Въведи адресът на отдалеченият потребител
+ Въведи адресът на отдалеченият потребител:
-
+ Enter peer port:Въведи порт:
-
+ Enter peer key:Въведи ключът за удостоверяване:
-
+ XSPF ErrorXSPF Грешка
-
+ This is not a valid XSPF playlist.Това не е валиден XSPF списък
-
+ Failed to save tracksНе мога да запазя списъкът с песни
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Някои от песните в този списък нямат артист и заглавие.
Те ще бъдат игнорирани.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.Съжалявам. Има проблем с достъпа до твоето аудио-устройство или до избраната песен - тя ще бъде прескочена.
Моля, увери се, че са инсталирани подходящ Phonon и приставки.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.Съжалявам.
Има проблем с достъпа до твоето аудио устройство или избраната песен. Тя ще бъде пропусната.
-
+ Create New StationСъздай нова станция
-
+ Name:Име:
-
+ New StationНова станция
-
+ New PlaylistНов списък
-
+ PauseПауза
-
+ Go &offlineИзлез &извън линия
-
+ Go &onlineСвържи &се
-
+ Authentication ErrorГрешка при удостоверяване
-
+ %1 by %2track, artist name%1 от %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2><h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2><h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve RobertsonВсички права запазени 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/> Благодарности на: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About TomahawkОтносно Tomahawk
@@ -2984,7 +3037,7 @@ enter the displayed PIN number here:
Form
- Форма
+
@@ -3050,6 +3103,79 @@ enter the displayed PIN number here:
Най-слушани
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+ Обложка
+
+
+
+ Track
+ Песен
+
+
+
+ by
+ от
+
+
+
+ Artist
+ Изпълнител
+
+
+
+ from
+ от
+
+
+
+ Album
+ Албум
+
+
+
+ Statistics
+ Статистика
+
+
+
+ Similar Tracks
+ Подобни песни
+
+
+
+ You've listened to this track %n time(s).
+ Ти си слушал тази песен %n път(и)Ти си слушал тази песен %n път(и)
+
+
+
+ You've never listened to this track before.
+ Никога не си слушал тази песен преди
+
+
+
+ You first listened to it on %1.
+ Първоначално си я слушал на %1
+
+
+
+ You've listened to %1 %n time(s).
+ Слушал си %1 път(и)Слушал си %1 %n път(и)
+
+
+
+ You've never listened to %1 before.
+ Никога не си слушал %1 преди
+
+TrackModel
@@ -3279,20 +3405,31 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollection
- Супер колекция
+ Супер колекция
+/Сборен излед от локалните и наличните в колекциите на приятелите ти/
-
+ Combined libraries of all your online friendsКомбинирани библиотеки от всичките ми приятели на линия
-
+ All available albumsВсички налични албуми
+
+
+ Recently Played Tracks
+ Наскоро изпълени песни
+
+
+
+ Recently played tracks from all your friends
+ Наскоро изпълнени песни от всичките ти приятели
+ WelcomeWidget
@@ -3345,7 +3482,7 @@ You can re-send a sync message at any time simply by sending another tweet using
Terms for %1:
- Условия за %1
+ Условия за %1:
@@ -3668,7 +3805,7 @@ Lyrics for "%1" by %2:
Form
- Форма
+
diff --git a/lang/tomahawk_ca.ts b/lang/tomahawk_ca.ts
new file mode 100644
index 000000000..d55c54742
--- /dev/null
+++ b/lang/tomahawk_ca.ts
@@ -0,0 +1,3814 @@
+
+
+ AccountFactoryWrapper
+
+
+ Dialog
+ Diàleg
+
+
+
+ Description goes here
+ Aquí va la descripció
+
+
+
+ Add Account
+ Afegiu un compte
+
+
+
+ AccountFactoryWrapperDelegate
+
+
+ Online
+ En línia
+
+
+
+ Connecting...
+ Connectant-se...
+
+
+
+ Offline
+ Fora de línia
+
+
+
+ AclJobDelegate
+
+
+ Error displaying ACL info
+ Error en mostrar la informació ACL
+
+
+
+
+ Allow %1 to
+connect and stream from you?
+ Voleu permetre que %1 s'us connecti i transmetre-li la vostra música?
+
+
+
+ ActionCollection
+
+
+ &Listen Along
+ &Escolta a la vegada
+
+
+
+ Stop &Listening Along
+ Deixa d'&escoltar a la vegada
+
+
+
+ &Follow in real-time
+ &Segueix en temps real
+
+
+
+
+ &Listen Privately
+ &Escolta privada
+
+
+
+
+ &Listen Publicly
+ &Escolta Pública
+
+
+
+ &Load Playlist
+ &Carrega la llista de reproducció
+
+
+
+ &Rename Playlist
+ &Reanomena la llista de reproducció
+
+
+
+ &Copy Playlist Link
+ &Copia l'enllaç a la llista de reproducció
+
+
+
+ &Play
+ &Reprodueix
+
+
+
+ &Stop
+ &Atura
+
+
+
+ &Previous Track
+ Cançó &Anterior
+
+
+
+ &Next Track
+ Cançó &Següent
+
+
+
+ &Quit
+ &Surt
+
+
+
+ AlbumInfoWidget
+
+
+ Form
+ Formulari
+
+
+
+ Other Albums by Artist
+ Altres Àlbums de l'Artista
+
+
+
+
+ Click to show Official Tracks
+ Cliqueu per mostrar les Cançons Oficials
+
+
+
+
+ Click to show SuperCollection Tracks
+ Clique per mostrar les Cançons de la SuperCol·lecció
+
+
+
+
+ Click to show SuperCollection Albums
+ Clique per mostrar els Àlbums de la SuperCol·lecció
+
+
+
+ Click to show Official Albums
+ Cliqueu per mostrar els Àlbums Oficials
+
+
+
+ Other Albums by %1
+ Altres Àlbums de %1
+
+
+
+ AlbumModel
+
+
+ Album
+ Àlbum
+
+
+
+
+ All albums from %1
+ Tots els Àlbums de %1
+
+
+
+ All albums
+ Tots els Àlbums
+
+
+
+ AlbumView
+
+
+ After you have scanned your music collection you will find your latest album additions right here.
+ Després d'escanejar la vostra col·lecció musical, aquí trobareu els àlbums afegits últimament.
+
+
+
+ This collection doesn't have any recent albums.
+ Aquesta col·lecció no té àlbums recents.
+
+
+
+ ArtistInfoWidget
+
+
+ Form
+ Formulari
+
+
+
+ Top Hits
+ Grans Èxits
+
+
+
+ Related Artists
+ Artistes Relacionats
+
+
+
+ Albums
+ Àlbums
+
+
+
+
+ Click to show SuperCollection Albums
+ Cliqueu per mostrar els Àlbums de la SuperCol·lecció
+
+
+
+ Click to show Official Albums
+ Cliqueu per mostrar els Àlbums Oficials
+
+
+
+ ArtistView
+
+
+ After you have scanned your music collection you will find your tracks right here.
+ Després d'escanejar la vostra col·lecció musical, aquí trobareu les cançons afegides últimament.
+
+
+
+ This collection is currently empty.
+ Aquesta col·lecció es troba buida actualment.
+
+
+
+ Sorry, your filter '%1' did not match any results.
+ El filtre '%1' no ha obtingut cap resultat.
+
+
+
+ AudioControls
+
+
+ Prev
+ Anterior
+
+
+
+ Play
+ Reprodueix
+
+
+
+ Pause
+ Pausa
+
+
+
+ Next
+ Següent
+
+
+
+ Artist
+ Artista
+
+
+
+ Album
+ Àlbum
+
+
+
+ Owner
+ Propietari
+
+
+
+ social
+ social
+
+
+
+ love
+ M'encanta
+
+
+
+ Time
+ Temps
+
+
+
+ Time Left
+ Temps Restant
+
+
+
+ Shuffle
+ Mescla
+
+
+
+ Repeat
+ Repeteix
+
+
+
+ Low
+ Baix
+
+
+
+ High
+ Alt
+
+
+
+ CategoryAddItem
+
+
+
+ New Playlist
+ Nova llista de reproducció
+
+
+
+
+
+
+ New Station
+ Nova Emissora
+
+
+
+
+
+ %1 Station
+ Emissora %1
+
+
+
+ CategoryItem
+
+
+ Playlists
+ Llistes de reproducció
+
+
+
+ Stations
+ Emissores
+
+
+
+ ClearButton
+
+
+ Clear
+ Suprimeix
+
+
+
+ CollectionFlatModel
+
+
+ My Collection
+ La meva Col·lecció
+
+
+
+ Collection of %1
+ Col·lecció de %1
+
+
+
+ CollectionView
+
+
+ This collection is empty.
+ Aquesta col·lecció és buida.
+
+
+
+ ContextWidget
+
+
+ InfoBar
+ Barra d'Informació
+
+
+
+
+ Show Footnotes
+ Mostra les Notes al peu
+
+
+
+ Hide Footnotes
+ Amaga les Notes al peu
+
+
+
+ CrashReporter
+
+
+ Tomahawk Crash Reporter
+ Enviament de Fallades de Tomahawk
+
+
+
+ <p><b>Sorry!</b> Tomahawk crashed. Information about the crash is now being sent to Tomahawk HQ so that we can fix the bug.</p>
+ <p>Tomahak ha fallat. La informació sobre la fallada s'està enviant a Tomahawk HQ per poder-ho solucionar.</p>
+
+
+
+ Abort
+ Interromp
+
+
+
+ You can disable sending crash reports in the configuration dialog.
+ Podeu deshabilitar l'enviament d'informació sobre les fallades des del diàleg de configuració.
+
+
+
+ Uploaded %L1 of %L2 KB.
+ %L1 de %L2 KB carregats.
+
+
+
+
+ Close
+ Tanca
+
+
+
+ Sent! <b>Many thanks</b>.
+ Enviat! <b>Moltes gràcies</b>.
+
+
+
+ Failed to send crash info.
+ S'ha produït un error en enviar la informació sobre la fallada.
+
+
+
+ DatabaseCommand_AllAlbums
+
+
+ Unknown
+ Desconegut
+
+
+
+ DelegateConfigWrapper
+
+
+ About
+ Quant a
+
+
+
+ Delete Account
+ Esborra el Compte
+
+
+
+ About this Account
+ Quant a aquest compte
+
+
+
+ DiagnosticsDialog
+
+
+ Tomahawk Diagnostics
+ Diagnòstics de Tomahawk
+
+
+
+ Update
+ Actualitza
+
+
+
+ Copy to Clipboard
+ Copia al Porta-retalls
+
+
+
+ DropJob
+
+
+ No tracks found for given %1
+ No s'han trobat cançons per %1
+
+
+
+ GlobalSearchWidget
+
+
+ Form
+ Formulari
+
+
+
+ IndexingJobItem
+
+
+ Indexing database
+ S'està indexant la base de dades
+
+
+
+ InfoBar
+
+
+ InfoBar
+ Barra d'Informació
+
+
+
+ Filter...
+ Filtra...
+
+
+
+ JobStatusView
+
+
+ Searching For
+ Cercant
+
+
+
+ Pending
+ Pendent
+
+
+
+ Idle
+ Inactiu
+
+
+
+ LastFmConfig
+
+
+ Form
+ Formulari
+
+
+
+ Scrobble tracks to Last.fm
+ Fes scrobbling de les cançons a Last.fm
+
+
+
+ Username:
+ Nom d'usuari:
+
+
+
+ Password:
+ Contrasenya:
+
+
+
+ Test Login
+ Comprova l'autenticació
+
+
+
+ LastfmContext
+
+
+ Last.fm
+ Last.fm
+
+
+
+ LatchedStatusItem
+
+
+ %1 is listening along to you!
+ %1 us està escoltant a la vegada!
+
+
+
+ LoadXSPF
+
+
+ Load XSPF
+ Carrega una XSPF
+
+
+
+ Playlist URL
+ URL de la llista de reproduccó
+
+
+
+ Enter URL...
+ Introduïu l'URL...
+
+
+
+ ...
+ ...
+
+
+
+ Automatically update
+ Actualitza automàticament
+
+
+
+ LoadXSPFDialog
+
+
+ Load XSPF File
+ Carrega un fitxer XSPF
+
+
+
+ XSPF Files (*.xspf)
+ Fitxers XSPF (*.xspf)
+
+
+
+ LocalCollection
+
+
+ Bookmarks
+ Preferits
+
+
+
+ Saved tracks
+ Cançons desades
+
+
+
+ NewPlaylistWidget
+
+
+ Enter a title for the new playlist:
+ Introduïu un títol per la nova llista de reproducció:
+
+
+
+ Tomahawk offers a variety of ways to help you create playlists and find music you enjoy!
+ Tomahawk us ofereix diverses formes per ajudar-vos a crear llistes de reproducció i trobar la música que us agrada!
+
+
+
+ Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist:
+ Introduïu el nom d'un gènere o una etiqueta i Tomahawk us suggerirà unes quantes cançons per començar la nova llista:
+
+
+
+ &Create Playlist
+ &Crea la Llista de Reproducció
+
+
+
+ Create a new playlist
+ Crea una nova llista de reproducció
+
+
+
+ NewReleasesWidget
+
+
+ New Releases
+ Nous llançaments
+
+
+
+ PlaylistItemDelegate
+
+
+ played %1 by you
+ reproduït %1
+
+
+
+ played %1 by %2
+ reproduït %1 per %2
+
+
+
+ PlaylistLargeItemDelegate
+
+
+ played %1 by you
+ reproduït %1
+
+
+
+ played %1 by %2
+ reproduït %1 per %2
+
+
+
+ added %1
+ afegit %1
+
+
+
+ PlaylistModel
+
+
+ A playlist by %1, created %2
+ Una llista de reproduccó de %1, creada %2
+
+
+
+ you
+
+
+
+
+ All tracks by %1 on album %2
+ Totes les cançons de %1 a l'àlbum %2
+
+
+
+ All tracks by %1
+ Totes les cançons de %1
+
+
+
+ PlaylistTypeSelectorDlg
+
+
+ New Playlist
+ Nova Llista de Reproducció
+
+
+
+ Just a regular old playlist... Give it a name, drag in some tracks, and go!
+ Una llista vella i regular... Poseu-li un nom, arrossegueu-hi algunes cançons i llestos!
+
+
+
+ Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you!
+ No sabeu exactament què voleu? Doneu-li unes indicacions a Tomahawk i deixeu que us faci la llista!
+
+
+
+ Name:
+ Nom:
+
+
+
+ New Playlist...
+ Nova Llista de Reproducció...
+
+
+
+ Create Manual Playlist
+ Crea una Llista de Reproducció Manual
+
+
+
+ Create Automatic Playlist
+ Crea una Llista de Reproducció Automàtica
+
+
+
+ PlaylistView
+
+
+ This playlist is currently empty. Add some tracks to it and enjoy the music!
+ Aquesta llista es troba buida. Afegiu-hi algunes cançons i gaudiu de la música!
+
+
+
+ ProxyDialog
+
+
+ Proxy Settings
+ Paràmetres del proxy
+
+
+
+ Hostname of proxy server
+ Nom del proxy
+
+
+
+ Host
+ Ordinador central
+
+
+
+ Port
+ Port
+
+
+
+ Proxy login
+ Dades d'inici de sessió del proxy
+
+
+
+ User
+ Usuari
+
+
+
+ Password
+ Contrasenya
+
+
+
+ Proxy password
+ Contrasenya del proxy
+
+
+
+ No Proxy Hosts:
+(Overrides system proxy)
+ Cap proxy:
+(Sobreescriu el proxy del sistema)
+
+
+
+ localhost *.example.com (space separated)
+ localhost *.exemple.com (separats per espais)
+
+
+
+ Use proxy for DNS lookups?
+ Voleu emprar un proxy per cercar les DNS?
+
+
+
+ QObject
+
+
+ %n year(s) ago
+ fa %n anyfa %n anys
+
+
+
+ %n year(s)
+ %n any%n anys
+
+
+
+ %n month(s) ago
+ fa %n mesfa %n mesos
+
+
+
+ %n month(s)
+ %n mes%n mesos
+
+
+
+ %n week(s) ago
+ fa %n setmanafa %n setmanes
+
+
+
+ %n week(s)
+ %n setmana%n setmanes
+
+
+
+ %n day(s) ago
+ fa %n diafa %n dies
+
+
+
+ %n day(s)
+ %n dia%n dies
+
+
+
+ %n hour(s) ago
+ fa %n horafa %n hores
+
+
+
+ %n hour(s)
+ %n hora%n hores
+
+
+
+ %1 minutes ago
+ fa %1 minut
+
+
+
+ %1 minutes
+ %1 minuts
+
+
+
+ just now
+ ara mateix
+
+
+
+ Friend Finders
+ Cercadors d'Amics
+
+
+
+ Music Finders
+ Cercadors de Música
+
+
+
+ Status Updaters
+ Actualitzadors d'Estat
+
+
+
+ QuaZipFilePrivate
+
+
+ ZIP/UNZIP API error %1
+ Error %1 de l'API ZIP/UNZIP
+
+
+
+ QueueView
+
+
+ InfoBar
+ Barra d'Informació
+
+
+
+
+ Show Queue
+ Mostra la Cua
+
+
+
+ Hide Queue
+ Amaga la Cua
+
+
+
+ RelatedArtistsContext
+
+
+ Related Artists
+ Artistes Relacionats
+
+
+
+ ResolverConfigDelegate
+
+
+ Not found: %1
+ No trobades: %1
+
+
+
+ Failed to load: %1
+ Fallades a carregar: %1
+
+
+
+ SearchLineEdit
+
+
+ Search
+ Cerca
+
+
+
+ SearchWidget
+
+
+ Search: %1
+ Cerca: %1
+
+
+
+ Results for '%1'
+ Resultats per '%1'
+
+
+
+ SettingsDialog
+
+
+ Collection
+ Col·lecció
+
+
+
+ Advanced
+ Avançat
+
+
+
+ All
+ Tot
+
+
+
+ Some changed settings will not take effect until Tomahawk is restarted
+ Alguns paràmetres no tindran efecte fins que no reinicieu Tomahawk
+
+
+
+ Services
+ Serveis
+
+
+
+ Install resolver from file
+ Instal·la un Resolver des d'un fitxer
+
+
+
+ Information
+ Informació
+
+
+
+ SocialPlaylistWidget
+
+
+ Popular New Albums From Your Friends
+ Àlbums Populars dels Vostres Amics
+
+
+
+ Most Played Playlists
+ Llistes de Reproducció Més Escoltades
+
+
+
+ Most Played Tracks You Don't Have
+ Cançons Més Escoltades que encara no heu Reproduït
+
+
+
+ SocialWidget
+
+
+ Form
+ Formulari
+
+
+
+ Facebook
+ Facebook
+
+
+
+ Twitter
+ Twitter
+
+
+
+ Cover
+ Cover
+
+
+
+ TextLabel
+ TextLabel
+
+
+
+ Listening to "%1" by %2 and loving it! %3
+ Estic escoltant "%1" de "%2" i m'encanta!%3
+
+
+
+ Listening to "%1" by %2 on "%3" and loving it! %4
+ Estic escoltant "%1" de "%2" a "%3" i m'encanta!%4
+
+
+
+ %1 characters left
+ %1 caràcters restants
+
+
+
+ SourceDelegate
+
+
+ Track
+ Cançó
+
+
+
+ Album
+ Àlbum
+
+
+
+ Artist
+ Artista
+
+
+
+ Local
+ Local
+
+
+
+ Top 10
+ Top 10
+
+
+
+ Offline
+ Fora de Línia
+
+
+
+ All available tracks
+ Totes les cançons disponibles
+
+
+
+ Online
+ En Línia
+
+
+
+
+ Show
+ Mostra
+
+
+
+
+ Hide
+ Amaga
+
+
+
+ SourceInfoWidget
+
+
+ Recent Albums
+ Àlbums Recents
+
+
+
+ Latest Additions
+ Cançons Recents
+
+
+
+ Recently Played Tracks
+ Cançons Escoltades Recentment
+
+
+
+ New Additions
+ Novetats
+
+
+
+ My recent activity
+ La meva activitat recent
+
+
+
+ Recent activity from %1
+ Activitat recent de %1
+
+
+
+ SourceItem
+
+
+ Collection
+ Col·lecció
+
+
+
+
+ Latest Additions
+ Darreres Novetats
+
+
+
+ Recently Played
+ Escoltades Recentment
+
+
+
+ Loved Tracks
+ Cançons Preferides
+
+
+
+ SuperCollection
+ SuperCol·lecció
+
+
+
+ Latest additions to your collection
+ Darreres novetats a la vostra col·lecció
+
+
+
+ Latest additions to %1's collection
+ Darreres novetats a la col·lecció de %1
+
+
+
+ Recently Played Tracks
+ Cançons Escoltades Recentment
+
+
+
+ Your recently played tracks
+ Cançons Escoltades Recentment
+
+
+
+ %1's recently played tracks
+ Cançons Escoltades Recentment per %1
+
+
+
+ SourceTreeView
+
+
+ &Copy Link
+ &Copia l'Enllaç
+
+
+
+ &Delete %1
+ &Esborra %1
+
+
+
+ &Export Playlist
+ E&xporta la Llista de Reproducció
+
+
+
+ Save XSPF
+ Desa com XSPF
+
+
+
+ Playlists (*.xspf)
+ Llistes de reproducció (*.xspf)
+
+
+
+ SourcesModel
+
+
+ Group
+ Grup
+
+
+
+ Collection
+ Col·lecció
+
+
+
+ Playlist
+ Llista de Reproducció
+
+
+
+ Automatic Playlist
+ Llista de Reproducció Automàtica
+
+
+
+ Station
+ Emissora
+
+
+
+ Browse
+ Cerca
+
+
+
+ Search History
+ Historial de Cerca
+
+
+
+ My Music
+ La Meva Música
+
+
+
+ SuperCollection
+ SuperCol·lecció
+
+
+
+ Top Loved Tracks
+ Top de Cançons Preferides
+
+
+
+ Dashboard
+ Presentació
+
+
+
+ Recently Played
+ Escoltades Recentment
+
+
+
+ Charts
+ Llistes
+
+
+
+ New Releases
+ Nous Llançaments
+
+
+
+ Friends
+ Amics
+
+
+
+ SpotifyConfig
+
+
+ Form
+ Formulari
+
+
+
+ Configure your Spotify account
+ Configureu el compte Spotify
+
+
+
+ Username or Facebook Email
+ Nom d'usuari o adreça de Facebook
+
+
+
+ Log In
+ Inicia Sessió
+
+
+
+ Right click on any Tomahawk playlist to sync it to Spotify.
+ Feu click dret a qualsevol llista de reproducció de Tomahawk per sincronitzar-la amb Spotify.
+
+
+
+ High Quality Streams
+ Fluxos d'Alta Qualitat
+
+
+
+ Spotify playlists to keep in sync:
+ Llistes de reproducció de Spotify per mantenir sincronitzades:
+
+
+
+ Delete Tomahawk playlist when removing synchronization
+ Esborra les llistes de Tomahawk quan es tregui la sincronització
+
+
+
+ Username:
+ Usuari:
+
+
+
+ Password:
+ Contrasenya:
+
+
+
+ SpotifyPlaylistUpdater
+
+
+ Delete in Spotify?
+ Voleu esborrar-ho de Spotify?
+
+
+
+ Would you like to delete the corresponding Spotify playlist as well?
+ Voleu esborrar les llistes de Spotify, també?
+
+
+
+ StackedSettingsDialog
+
+
+ Tomahawk Settings
+ Paràmetres de Tomahawk
+
+
+
+ Local Music Information
+ Informació de la Música Local
+
+
+
+ Path to scan for music files:
+ Camí als fitxers de música:
+
+
+
+ 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.
+ L'ajuda The Echo Nest llegeix les metadades de la vostra col·lecció
+i les utilitza per fer emissores de ràdio personalitzades. Si activeu
+aquesta opció podreu crear llistes de reproducció automàtiques
+i emissores de ràdio basades en el vostre gust musical.
+
+
+
+ Upload collection list to The Echo Nest to enable user radio
+ Carrega la llista de la col·lecció a The Echo Nest per activar la radio d'usuari
+
+
+
+ Watch for changes
+ Monitoritza els canvis
+
+
+
+ Time between scans, in seconds:
+ Temps entre escanejos, en segons:
+
+
+
+ Advanced Settings
+ Paràmetres Avançats
+
+
+
+ Remote Peer Connection Method
+ Mètode de connexió remota entre iguals
+
+
+
+ None (outgoing connections only)
+ Cap (només connexions cap a l'exterior)
+
+
+
+ Use UPnP to establish port forward (recommended)
+ Utiliza UPnP per establir el redireccionament de ports (recomanat)
+
+
+
+ Use static external IP address/host name and port
+ Utilitza l'adreça IP estàtica externa/nom de l'ordinador i el port
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+ Ajusteu aquest paràmetre amb la vostra adreça IP o el nom de l'ordinador. Assegure-vos que redireccioneu el port a aquest ordinador!
+
+
+
+ SOCKS Proxy
+ Proxys SOCKS
+
+
+
+ Use SOCKS Proxy
+ Utilitza un proxy SOCKS
+
+
+
+ Internet Services
+ Serveis d'Internet
+
+
+
+ Install from file...
+ Instal·la des d'un fitxer...
+
+
+
+ Filter by capability:
+ Filtra per capacitats:
+
+
+
+ Static Host Name:
+ Nom de l'ordinador estàtic:
+
+
+
+ Static Port:
+ Port estàtic:
+
+
+
+ Proxy Settings...
+ Paràmetres del proxy...
+
+
+
+ Other Settings
+ Altres Paràmetres
+
+
+
+ Send reports after Tomahawk crashed
+ Envia informació de les fallades de Tomahawk
+
+
+
+ Allow web browsers to interact with Tomahawk (recommended)
+ Permet que els navegadors web interactuin amb Tomahawk (recomanat)
+
+
+
+ Tomahawk::Accounts::AccountDelegate
+
+
+ Add Account
+ Afegeix un compte
+
+
+
+ Remove Account
+ Esborra el compte
+
+
+
+ %1 downloads
+ %1 descàrregues
+
+
+
+ Online
+ En Línia
+
+
+
+ Connecting...
+ Connectant-se...
+
+
+
+ Offline
+ Fora de Línia
+
+
+
+ Tomahawk::Accounts::GoogleWrapper
+
+
+ Configure this Google Account
+ Configura el Compte de Google
+
+
+
+ Google Address
+ Adreça de correu de Google
+
+
+
+ Enter your Google login to connect with your friends using Tomahawk!
+ Introduïu les dades d'inici de sessió de Google i conecteu-vos amb els amics mitjançant Tomahawk!
+
+
+
+ username@gmail.com
+ usuari@gmail.com
+
+
+
+ Tomahawk::Accounts::GoogleWrapperFactory
+
+
+ Connect to Google Talk to find your friends
+ Connecteu-vos a Google Talsk per trobar els amics
+
+
+
+ Tomahawk::Accounts::GoogleWrapperSip
+
+
+ Add Friend
+ Afegeix un Amic
+
+
+
+ Enter Google Address:
+ Introduïu l'adreça de Google:
+
+
+
+ Tomahawk::Accounts::LastFmAccountFactory
+
+
+ Scrobble your tracks to last.fm, and find freely downloadable tracks to play
+ Fes scrobbling de les cançons a last.fm, i cerca cançons descarregables gratuïtament per escoltar-les
+
+
+
+ Tomahawk::Accounts::LastFmConfig
+
+
+ Test Login
+ Comprova l'inici de sessió
+
+
+
+
+ Failed
+ Error
+
+
+
+ Success
+ Èxit
+
+
+
+ Could not contact server
+ No s'ha pogut contactar amb el servidor
+
+
+
+ Tomahawk::Accounts::SpotifyAccount
+
+
+ Sync with Spotify
+ Sincronitza amb Spotify
+
+
+
+ Stop syncing with Spotify
+ Atura la sincronització amb Spotify
+
+
+
+ Tomahawk::Accounts::SpotifyAccountConfig
+
+
+ Logging in...
+ Iniciant sessió...
+
+
+
+ Logged in!
+ Sessió iniciada!
+
+
+
+ Failed: %1
+ Error: %1
+
+
+
+ Log In
+ Incia Sessió
+
+
+
+ Tomahawk::Accounts::SpotifyAccountFactory
+
+
+ Play music from and sync your playlists with Spotify Premium
+ Reprodueix música i sincronitza les llistes de reproducció amb Spotify Premium
+
+
+
+ Tomahawk::Accounts::TwitterAccountFactory
+
+
+ Connect to your Twitter followers.
+ Connecteu-vos als seguidors de Twitter.
+
+
+
+ Tomahawk::Accounts::TwitterConfigWidget
+
+
+
+
+ Tweet!
+ Twitteja!
+
+
+
+
+ Status: No saved credentials
+ Estat: no hi ha credencials desades
+
+
+
+
+
+ Authenticate
+ Autentifica
+
+
+
+
+ Status: Credentials saved for %1
+ Estat: Credencials desades per %1
+
+
+
+
+ De-authenticate
+ Des-autentifica
+
+
+
+
+
+
+
+
+
+ Tweetin' Error
+ Error en Twittejar
+
+
+
+ The credentials could not be verified.
+You may wish to try re-authenticating.
+ Les crendencials no s'han pogut verificar
+Torneu a autenticar-vos.
+
+
+
+ Status: Error validating credentials
+ Estat: Error en validar les credencials
+
+
+
+ Global Tweet
+ Tweet Global
+
+
+
+ Direct Message
+ Missatge Directe
+
+
+
+ Send Message!
+ Envia el Missatge!
+
+
+
+ @Mention
+ @Menció
+
+
+
+ Send Mention!
+ Envia la Menció!
+
+
+
+ You must enter a user name for this type of tweet.
+ Heu d'introduir un nom d'usuari per aquest tipus de tweet.
+
+
+
+ Your saved credentials could not be loaded.
+You may wish to try re-authenticating.
+ Les credencials desades no s'han pogut carregar.
+Torneu a autenticar-vos.
+
+
+
+ Your saved credentials could not be verified.
+You may wish to try re-authenticating.
+ Les credencials desades no s'han pogut verificar.
+Torneu a autenticar-vos.
+
+
+
+
+ There was an error posting your status -- sorry!
+ S'ha produït un error publicant l'estat!
+
+
+
+
+ Tweeted!
+ Twitejat!
+
+
+
+ Your tweet has been posted!
+ El tweet s'ha publicat!
+
+
+
+ There was an error posting your direct message -- sorry!
+ S'ha produït un error publicant el missatge directe!
+
+
+
+ Your message has been posted!
+ El missatge s'ha publicat!
+
+
+
+ Tomahawk::Accounts::XmppAccountFactory
+
+
+ Log on to your Jabber/XMPP account to connect to your friends
+ Inicieu sessió al vostre compte Jabber/XMPP per conectar-vos amb els amics
+
+
+
+ Tomahawk::Accounts::ZeroconfFactory
+
+
+ Automatically connect to Tomahawks on the local network
+ Connecta't automàticament a altres Tomahawks de la xarxa local
+
+
+
+ Tomahawk::ContextMenu
+
+
+ &Play
+ &Reprodueix
+
+
+
+
+
+ Add to &Queue
+ &Afegeix a la Cua
+
+
+
+
+ &Love
+ &M'encanta
+
+
+
+ &Copy Track Link
+ &Copia l'Enllaç de la Cançó
+
+
+
+ Show &Album page
+ Mostra la pàgina de l'&Àlbum
+
+
+
+ Show &Artist page
+ Mostra la pàgina de l'&Artista
+
+
+
+ Un-&Love
+ &Treu de les preferides
+
+
+
+ &Delete Items
+ &Elimina els Ítems
+
+
+
+ &Continue Playback after this Track
+ &Continua la reproducció després d'aquesta Cançó
+
+
+
+ &Stop Playback after this Track
+ &Atura la Reproducció després d'aquesta Cançó
+
+
+
+ &Delete Item
+ &Elimina l'Ítem
+
+
+
+ Tomahawk::CustomPlaylistView
+
+
+ Top Loved Tracks
+ Top de Cançons Preferides
+
+
+
+ Your loved tracks
+ Les meves cançons preferides
+
+
+
+ %1's loved tracks
+ Les cançons preferides de %1
+
+
+
+ The most loved tracks from all your friends
+ Les cançons preferides de tots els amics
+
+
+
+ All of your loved tracks
+ Totes les meves cançons preferides
+
+
+
+ All of %1's loved tracks
+ Totes les cançons preferides de %1
+
+
+
+ Tomahawk::DropJobNotifier
+
+
+ Fetching %1 from database
+ Cercant %1 a la base de dades
+
+
+
+ Parsing %1 %2
+ Analitzant %1 %2
+
+
+
+ Tomahawk::DynamicControlList
+
+
+ Click to collapse
+ Cliqueu per reduir
+
+
+
+ Tomahawk::DynamicModel
+
+
+
+ Could not find a playable track.
+
+Please change the filters or try again.
+ No s'ha trobat cap cançó reproduïble
+
+Canvieu els filtres o intenteu-ho de nou.
+
+
+
+ Failed to generate preview with the desired filters
+ S'ha produït un error en generar la previsualització amb els filtres
+
+
+
+ Tomahawk::DynamicSetupWidget
+
+
+ Type:
+ Tipus:
+
+
+
+ Generate
+ Genera
+
+
+
+ Tomahawk::DynamicView
+
+
+ Add some filters above to seed this station!
+ Afegeiu slguns filtres per omplir aquesta emissora!
+
+
+
+ Press Generate to get started!
+ Premeu Genera per començar!
+
+
+
+ Add some filters above, and press Generate to get started!
+ Afegeiu alguns filtres i premeu Genera per començar!
+
+
+
+ Tomahawk::DynamicWidget
+
+
+ Station ran out of tracks!
+
+Try tweaking the filters for a new set of songs to play.
+ L'emissora s'ha quedat sense cançons!
+
+Intenteu ajustar els filtres per reproduir noves cançons.
+
+
+
+ Tomahawk::EchonestControl
+
+
+
+
+
+
+
+ is
+ és
+
+
+
+ from user
+ de l'usuari
+
+
+
+
+ No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings
+ No hi ha usuaris amb els catàlegs de Echo Nest activats. Activeu l'opció en els paràmetres de la Col·lecció
+
+
+
+ similar to
+ semblant a
+
+
+
+
+
+
+
+
+
+ Less
+ Menys
+
+
+
+
+
+
+
+
+
+ More
+ Més
+
+
+
+ 0 BPM
+ 0 BPM
+
+
+
+ 500 BPM
+ 500 BPM
+
+
+
+ 0 secs
+ 0 segs
+
+
+
+ 3600 secs
+ 3600 segs
+
+
+
+ -100 dB
+ -100 dB
+
+
+
+ 100 dB
+ 100 dB
+
+
+
+ Major
+ Major
+
+
+
+ Minor
+ Menor
+
+
+
+ C
+ Do
+
+
+
+ C Sharp
+ DO Sostingut
+
+
+
+ D
+ Re
+
+
+
+ E Flat
+ Mi Bemoll
+
+
+
+ E
+ Mi
+
+
+
+ F
+ Fa
+
+
+
+ F Sharp
+ Fa Sostingut
+
+
+
+ G
+ Sol
+
+
+
+ A Flat
+ La Bemoll
+
+
+
+ A
+ La
+
+
+
+ B Flat
+ Si Bemoll
+
+
+
+ B
+ Si
+
+
+
+ Ascending
+ Ascendent
+
+
+
+ Descending
+ Descendent
+
+
+
+ Tempo
+ Temps
+
+
+
+ Duration
+ Durada
+
+
+
+ Loudness
+ Volum
+
+
+
+ Artist Familiarity
+ Semblança amb l'artista
+
+
+
+ Artist Hotttnesss
+ Rellevància d'Artista
+
+
+
+ Song Hotttnesss
+ Rellevància de Cançó
+
+
+
+ Latitude
+ Latitut
+
+
+
+ Longitude
+ Longitud
+
+
+
+ Mode
+ Mode
+
+
+
+ Key
+ Clau
+
+
+
+ Energy
+ Energia
+
+
+
+ Danceability
+ Ballabilitat
+
+
+
+ only by ~%1
+ només per ~%1
+
+
+
+ similar to ~%1
+ semblant a ~%1
+
+
+
+ with genre ~%1
+ amb el gènere ~%1
+
+
+
+
+ from no one
+ de ningú
+
+
+
+ My Collection
+ La Meva Col·lecció
+
+
+
+ from %1 radio
+ de la ràdio %1
+
+
+
+ with %1 %2
+ amb %1 %2
+
+
+
+ about %1 BPM
+ sobre %1 BPM
+
+
+
+ about %n minute(s) long
+ sobre %n minut de duradasobre %n minuts de durada
+
+
+
+ about %1 dB
+ sobre %1 dB
+
+
+
+ at around %1%2 %3
+ sobre %1%2 %3
+
+
+
+ in %1
+ en %1
+
+
+
+ in a %1 key
+ en clau de %1
+
+
+
+ sorted in %1 %2 order
+ ordenades en %1 %2
+
+
+
+ with a %1 mood
+ amb l'humor %1
+
+
+
+ in a %1 style
+ amb l'estil %1
+
+
+
+ Tomahawk::EchonestSteerer
+
+
+ Steer this station:
+ Dirigeix aquesta emissora:
+
+
+
+ Much less
+ Molt més
+
+
+
+ Less
+ Menys
+
+
+
+ A bit less
+ Una mica menys
+
+
+
+ Keep at current
+ Mantingues a l'actual
+
+
+
+ A bit more
+ Una mica més
+
+
+
+ More
+ Més
+
+
+
+ Much more
+ Molt més
+
+
+
+ Tempo
+ Temps
+
+
+
+ Loudness
+ Volum
+
+
+
+ Danceability
+ Ballabilitat
+
+
+
+ Energy
+ Energia
+
+
+
+ Song Hotttnesss
+ Rellevància de Cançó
+
+
+
+ Artist Hotttnesss
+ Rellevància d'Artista
+
+
+
+ Artist Familiarity
+ Semblança amb l'artista
+
+
+
+ By Description
+ Per Descripció
+
+
+
+ Enter a description
+ Introduïu una descripció
+
+
+
+ Apply steering command
+ Aplica la comanda de control
+
+
+
+ Reset all steering commands
+ Restaura totes les comandes de control
+
+
+
+ Tomahawk::GroovesharkParser
+
+
+ Error fetching Grooveshark information from the network!
+ Error en cercar la informació de Grooveshark a través de la xarxa!
+
+
+
+ Tomahawk::InfoSystem::ChartsPlugin
+
+
+ Top Overall
+ Top General
+
+
+
+ Artists
+ Artistes
+
+
+
+ Albums
+ Àlbums
+
+
+
+ Tracks
+ Cançons
+
+
+
+ Tomahawk::InfoSystem::FdoNotifyPlugin
+
+
+ Tomahawk is playing "%1" by %2%3.
+ Tomahawk està reproduint "%1" de %2%3.
+
+
+
+ on "%1"
+ a "%1"
+
+
+
+ Tomahawk::InfoSystem::LastFmInfoPlugin
+
+
+ Top Tracks
+ Top Cançons Musicals
+
+
+
+ Loved Tracks
+ Cançons Preferides
+
+
+
+ Hyped Tracks
+ Cançons en alça
+
+
+
+ Top Artists
+ Top Artistes
+
+
+
+ Hyped Artists
+ Artistes en alça
+
+
+
+ Tomahawk::InfoSystem::NewReleasesPlugin
+
+
+ Albums
+ Àlbums
+
+
+
+ Tomahawk::InfoSystem::TwitterInfoPlugin
+
+
+ Listening to "%1" by %2 and loving it! %3
+ Estic escoltant "%1" de "%2" i m'encanta! %3
+
+
+
+ Tomahawk::ItunesParser
+
+
+ Error fetching iTunes information from the network!
+ Error en cercar la informació d'iTunes a través de la xarxa!
+
+
+
+ Tomahawk::JSPFLoader
+
+
+ New Playlist
+ Nova llista de reproducció
+
+
+
+ Failed to save tracks
+ Error en desar les cançons
+
+
+
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.
+ Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat.
+
+
+
+ XSPF Error
+ Error XSPF
+
+
+
+ This is not a valid XSPF playlist.
+ No és una llista XSPF vàlida.
+
+
+
+ Tomahawk::LatchManager
+
+
+ &Catch Up
+ &Atrapa
+
+
+
+
+ &Listen Along
+ &Escolta a la vegada
+
+
+
+ Tomahawk::Query
+
+
+ and
+ i
+
+
+
+ You
+ Jo
+
+
+
+ you
+ jo
+
+
+
+ and
+ i
+
+
+
+ %n other(s)
+ %n més%n més
+
+
+
+ %1 people
+ %1 persones
+
+
+
+ loved this track
+ els ha encantat aquesta cançó
+
+
+
+ Tomahawk::RdioParser
+
+
+ Error fetching Rdio information from the network!
+ Error en cercar la informació de Rdio a través de la xarxa!
+
+
+
+ Tomahawk::ShortenedLinkParser
+
+
+ Network error parsing shortened link!
+ Error de la xarxa en analitzar l'enllaç escurçat!
+
+
+
+ Tomahawk::Source
+
+
+
+ Scanning (%L1 tracks)
+ Escanejant (%L1 cançons)
+
+
+
+ Scanning
+ Escanejant
+
+
+
+ Checking
+ Comprovant
+
+
+
+ Fetching
+ Cercant
+
+
+
+ Parsing
+ Analitzant
+
+
+
+ Saving (%1%)
+ Desant (%1%)
+
+
+
+ Tomahawk::SpotifyParser
+
+
+ Error fetching Spotify information from the network!
+ Error en cercar la informació de Spotify a través de la xarxa!
+
+
+
+ Tomahawk::XspfUpdater
+
+
+ Automatically update from XSPF
+ Actualitza automàticament des de XSPF
+
+
+
+ TomahawkApp
+
+
+ My Collection
+ La meva Col·lecció
+
+
+
+ TomahawkOAuthTwitter
+
+
+ Twitter PIN
+ PIN de Twitter
+
+
+
+ After authenticating on Twitter's web site,
+enter the displayed PIN number here:
+ Després d'autenticar-vos a la pàgina de Twitter,
+introduïu el PIN aquí:
+
+
+
+ TomahawkTrayIcon
+
+
+
+ &Stop Playback after current Track
+ &Atura la Reproducció després d'aquesta Cançó
+
+
+
+
+ Hide Tomahawk Window
+ Amaga la finestra de Tomahawk
+
+
+
+ Show Tomahawk Window
+ Mostra la finestra de Tomahawk
+
+
+
+ Currently not playing.
+ No s'està reproduint res.
+
+
+
+ Play
+ Reprodueix
+
+
+
+ Pause
+ Pausa
+
+
+
+ &Continue Playback after current Track
+ &Continua la reproducció després d'aquesta Cançó
+
+
+
+ TomahawkWindow
+
+
+ Tomahawk
+ Tomahawk
+
+
+
+ &Settings
+ &Paràmetres
+
+
+
+ &Controls
+ &Controls
+
+
+
+ &Network
+ &Xarxa
+
+
+
+ &Window
+ &Finestra
+
+
+
+ &Help
+ &Ajuda
+
+
+
+ &Quit
+ &Surt
+
+
+
+ Ctrl+Q
+ Ctrl+Q
+
+
+
+ Go &Online
+ &Connecta't
+
+
+
+ Add &Friend...
+ Afegeix un &Amic...
+
+
+
+ U&pdate Collection
+ Act&ualitza la Col·lecció
+
+
+
+ Update Collection
+ Actualitza la Col·lecció
+
+
+
+ &Configure Tomahawk...
+ &Configura Tomahawk...
+
+
+
+ Load &XSPF...
+ Carrega una llista &XSPF...
+
+
+
+ Create &New Playlist...
+ Crea una &nova llista de reproducció...
+
+
+
+ About &Tomahawk...
+ Quant a &Tomahawk...
+
+
+
+ Create New &Automatic Playlist
+ Crea una Llista de Reproducció &Automàtica
+
+
+
+ Create New &Station
+ Crea una Nova &Emissora
+
+
+
+ Show Offline Sources
+ Mostra les fonts fora de línia
+
+
+
+ Hide Offline Sources
+ Amaga les fonts fora de línia
+
+
+
+ Minimize
+ Minimitza
+
+
+
+ Ctrl+M
+ Ctrl+M
+
+
+
+ Zoom
+ Zoom
+
+
+
+ Meta+Ctrl+Z
+ Meta+Ctrl+Z
+
+
+
+ Diagnostics...
+ Diagnòstics...
+
+
+
+ Fully &Rescan Collection
+ &Reescaneja la Col·lecció completament
+
+
+
+ Fully Rescan Collection
+ Reescaneja la Col·lecció completament
+
+
+
+
+ Play
+ Reprodueix
+
+
+
+ Space
+ Espai
+
+
+
+ Previous
+ Anterior
+
+
+
+ Next
+ Següent
+
+
+
+ Global Search...
+ Cerca Global...
+
+
+
+
+ Check For Updates...
+ Comprova les actualitzacions...
+
+
+
+
+
+ Connect To Peer
+ Connexió Remota
+
+
+
+ Enter peer address:
+ Introduïu l'adreça remota:
+
+
+
+ Enter peer port:
+ Introduïu el port remot:
+
+
+
+ Enter peer key:
+ Introduïu la clau remota:
+
+
+
+ XSPF Error
+ Error XSPF
+
+
+
+ This is not a valid XSPF playlist.
+ No és una llista XSPF vàlida.
+
+
+
+ Failed to save tracks
+ Error en desar les cançons
+
+
+
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.
+ Algunes cançons de la llista no contenen ni artista ni titol i s'han ignorat.
+
+
+
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
+ Hi ha un problema per accedir al dispositiu de so o a la cançó. La cançó actual s'ha saltat. Assegureu-vos que teniu un back.end de Phonon adequant i els plugins necessaris instal·lats.
+
+
+
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
+ Hi ha un problema per accedir al dispositiu de so o a la cançó, la cançó actual s'ha saltat.
+
+
+
+ Create New Station
+ Crea una Nova Emissora
+
+
+
+ Name:
+ Nom:
+
+
+
+ New Station
+ Nova Emissora
+
+
+
+ New Playlist
+ Nova llista de reproducció
+
+
+
+ Pause
+ Pausa
+
+
+
+ Go &offline
+ &Desconnecta't
+
+
+
+ Go &online
+ &Connecta't
+
+
+
+ Authentication Error
+ Error d'autentificació
+
+
+
+ %1 by %2
+ track, artist name
+ %1 de %2
+
+
+
+ %1 - %2
+ current track, some window title
+ %1 - %2
+
+
+
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
+
+
+
+ <h2><b>Tomahawk %1</h2>
+ <h2><b>Tomahawk %1</h2>
+
+
+
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Gràcies a: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter i Steve Robertson
+
+
+
+ About Tomahawk
+ Quant a Tomahawk
+
+
+
+ TopBar
+
+
+ Form
+ Formulari
+
+
+
+ 0 Sources
+ 0 Fonts
+
+
+
+ 0 Tracks
+ 0 Cançons
+
+
+
+ 0 Artists
+ 0 Artistes
+
+
+
+ 0 Shown
+ 0 Mostrades
+
+
+
+ Tracks
+ Cançons
+
+
+
+ Artists
+ Artistes
+
+
+
+ Filter
+ Filtra
+
+
+
+ Artist View
+ Vista d'Artista
+
+
+
+ Flat View
+ Vista Plana
+
+
+
+ Sources
+ Fonts
+
+
+
+ Shown
+ Mostrades
+
+
+
+ TopTracksContext
+
+
+ Top Hits
+ Grans Èxits
+
+
+
+ TrackInfoWidget
+
+
+ Form
+ Formulari
+
+
+
+ Cover
+ Cover
+
+
+
+ Track
+ Cançó
+
+
+
+ by
+ de
+
+
+
+ Artist
+ Artista
+
+
+
+ from
+ de
+
+
+
+ Album
+ Àlbum
+
+
+
+ Statistics
+ Estadístiques
+
+
+
+ Similar Tracks
+ Cançons Semblants
+
+
+
+ You've listened to this track %n time(s).
+ Heu escoltat aquesta cançó %n cop.Heu escoltat aquesta cançó %n cops.
+
+
+
+ You've never listened to this track before.
+ No heu escoltat mai aquesta cançó abans.
+
+
+
+ You first listened to it on %1.
+ Vau escoltar aquesta cançó per primer cop el %1.
+
+
+
+ You've listened to %1 %n time(s).
+ Heu escoltat %1 %n cop.Heu escoltat %1 %n cops.
+
+
+
+ You've never listened to %1 before.
+ No heu escoltat mai %1 abans.
+
+
+
+ TrackModel
+
+
+ Artist
+ Artista
+
+
+
+ Title
+ Títol
+
+
+
+ Album
+ Àlbum
+
+
+
+ Track
+ Cançó
+
+
+
+ Duration
+ Durada
+
+
+
+ Bitrate
+ Bitrate
+
+
+
+ Age
+ Edat
+
+
+
+ Year
+ Any
+
+
+
+ Size
+ Mida
+
+
+
+ Origin
+ Origen
+
+
+
+ Score
+ Puntuació
+
+
+
+ Composer
+ Compositor
+
+
+
+ TrackView
+
+
+ Sorry, your filter '%1' did not match any results.
+ El filtre '%1' no ha obtingut cap resultat.
+
+
+
+ TransferStatusItem
+
+
+ from
+ de
+
+
+
+ to
+ a
+
+
+
+ TreeItemDelegate
+
+
+ Unknown
+ Desconegut
+
+
+
+ TreeModel
+
+
+ Name
+ Nom
+
+
+
+ Duration
+ Durada
+
+
+
+ Bitrate
+ Bitrate
+
+
+
+ Age
+ Edat
+
+
+
+ Year
+ Any
+
+
+
+ Size
+ Mida
+
+
+
+ Origin
+ Origen
+
+
+
+ Composer
+ Compositor
+
+
+
+ All Artists
+ Tots els Artistes
+
+
+
+
+ My Collection
+ La meva Col·lecció
+
+
+
+
+ Collection of %1
+ Col·lecció de %1
+
+
+
+ TwitterConfigWidget
+
+
+ Configure this Twitter account
+ Configura el Compte de Twitter
+
+
+
+ The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account.
+ El plugin de Twitter permet descobrir i reproduir música dels seguidors de Twitter que utilitzen Tomahawk i publicar missatges al vostre compte.
+
+
+
+ Status: No saved credentials
+ Estat: no hi ha credencials desades
+
+
+
+ Authenticate with Twitter
+ Autentifica amb Twitter
+
+
+
+ Twitter Connections
+ Connexions de Twitter
+
+
+
+
+If you only want to post tweets, you're done.
+
+If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes!
+
+You can re-send a sync message at any time simply by sending another tweet using the button.
+
+Si només voleu publicar tweets, ja esteu llestos.
+
+SI voleu connectar Tomahawk als vostres seguidors de Twitter, escolliu el tipus de Tweet i premeu el botó de sota per enviar un missatge de sincronisme. Tots dos us heu d'estar seguint atès que s'empren Missatges Directes. Aleshores, tingueu (molta) paciència -- pot trigar diversos minuts!
+
+Podeu reenviar un missatge de sincronisme en qualsevol moment simplement enviant un altre tweet fent servir el botó.
+
+
+
+ Select the kind of tweet you would like, then press the button to post it:
+ Escolliu el tipus de tweet que us agradaria, després premeu el botó per publicar-lo:
+
+
+
+ Global Tweet
+ Tweet Global
+
+
+
+ @Mention
+ @Menció
+
+
+
+ Direct Message
+ Missatge Directe
+
+
+
+ e.g. @tomahawk
+ e.g. @tomahawk
+
+
+
+ Send Message
+ Envia el Missatge
+
+
+
+ ViewManager
+
+
+ SuperCollection
+ SuperCol·lecció
+
+
+
+ Combined libraries of all your online friends
+ Biblioteques combinades de tots els amis en línia
+
+
+
+ All available albums
+ Tots els àlbums disponibles
+
+
+
+ Recently Played Tracks
+ Cançons Escoltades Recentment
+
+
+
+ Recently played tracks from all your friends
+ Cançons escoltades recentment pels amics
+
+
+
+ WelcomeWidget
+
+
+ Recent Additions
+ Darreres Novetats
+
+
+
+ Newest Stations & Playlists
+ Darreres Emissores i Llistes
+
+
+
+ Recently Played Tracks
+ Cançons Escoltades Recentment
+
+
+
+ No recently created playlists in your network.
+ No hi ha cançons escoltades recentment a la xarxa.
+
+
+
+ Welcome to Tomahawk
+ Us donem la benvinguda a Tomahawk
+
+
+
+ WhatsHotWidget
+
+
+ Charts
+ Llistes
+
+
+
+ WikipediaContext
+
+
+ Wikipedia
+ Viquipèdia
+
+
+
+ XMPPBot
+
+
+
+Terms for %1:
+
+
+Termes per %1:
+
+
+
+ No terms found, sorry.
+ No s'han trobat termes.
+
+
+
+
+Hotttness for %1: %2
+
+
+Rellevància per %1: %2
+
+
+
+
+Familiarity for %1: %2
+
+ Semblança per %1: %2
+
+
+
+
+Lyrics for "%1" by %2:
+
+%3
+
+
+Lletres de la cancó "%1" de %2:
+
+%3
+
+
+
+
+ XSPFLoader
+
+
+ Failed to parse contents of XSPF playlist
+ Error en analitzar els continguts de la llista XSPF
+
+
+
+ Some playlist entries were found without artist and track name, they will be omitted
+ Algunes entrades de la llista no disposaven d'informació d'artista ni de nom de cançó, s'han omès
+
+
+
+ Failed to fetch the desired playlist from the network, or the desired file does not exist
+ Error en cercar la llista a la xarxa. Pot ser no existeix el fitxer
+
+
+
+ New Playlist
+ Nova llista de reproducció
+
+
+
+ XmlConsole
+
+
+ Xml stream console
+ Consola de flux XML
+
+
+
+
+ Filter
+ Filtra
+
+
+
+ Save log
+ Desa el log
+
+
+
+ Disabled
+ Desactivat
+
+
+
+ By JID
+ Per JID
+
+
+
+ By namespace uri
+ Per namespace uri
+
+
+
+ By all attributes
+ Per atributs
+
+
+
+ Visible stanzas
+ Instàncies visibles
+
+
+
+ Information query
+ Petició d'informació
+
+
+
+ Message
+ Missatge
+
+
+
+ Presence
+ Presència
+
+
+
+ Custom
+ Personalitzat
+
+
+
+ Close
+ Tanca
+
+
+
+ Save XMPP log to file
+ Desa el log XMPP en un fitxer
+
+
+
+ OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt)
+ Format OpenDocument (*.odf);;fitxer HTML (*.html);;Text Pla (*.txt)
+
+
+
+ XmppConfigWidget
+
+
+ Xmpp Configuration
+ Configuració XMPP
+
+
+
+ Configure this Xmpp account
+ Configura aquest compte XMPP
+
+
+
+ Enter your Xmpp login to connect with your friends using Tomahawk!
+ Introduiu les dades d'inici de sessió de XMPP per connectar-vos amb els amics que fan servir Tomahawk!
+
+
+
+ Login Information
+ Informació d'inici de sessió
+
+
+
+ Xmpp ID:
+ ID XMPP:
+
+
+
+ e.g. user@example.com
+ e.g. usuari@exemple.com
+
+
+
+ Password:
+ Contrasenya:
+
+
+
+ An account with this name already exists!
+ Ja existeix un compte amb aquest nom!
+
+
+
+ Advanced Xmpp Settings
+ Paràmetres avançats de XMPP
+
+
+
+ Server:
+ Servidor:
+
+
+
+ Port:
+ Port:
+
+
+
+ Lots of servers don't support this (e.g. GTalk, jabber.org)
+ Molts servidors no suporten aquesta opció (e.g. GTalk, jabber.org)
+
+
+
+ Publish currently playing track
+ Publica la cançó que s'estigui reproduint al moment
+
+
+
+ Enforce secure connection
+ Força una connexió segura
+
+
+
+ XmppSipPlugin
+
+
+ User Interaction
+ Interacció d'usuari
+
+
+
+ Host is unknown
+ El nom de l'ordinador és desconegut
+
+
+
+ Item not found
+ No s'ha trobat l'element
+
+
+
+ Authorization Error
+ Error d'autorització
+
+
+
+ Remote Stream Error
+ Error de flux remot
+
+
+
+ Remote Connection failed
+ Ha fallat la connexió remota
+
+
+
+ Internal Server Error
+ Error del servidor intern
+
+
+
+ System shutdown
+ Sistema apagat
+
+
+
+ Conflict
+ Conflicte
+
+
+
+ Unknown
+ Desconegut
+
+
+
+ No Compression Support
+ Compressió no suportada
+
+
+
+ No Encryption Support
+ Encriptació no suportada
+
+
+
+ No Authorization Support
+ Autorització no suportada
+
+
+
+ No Supported Feature
+ Característica no suportada
+
+
+
+ Add Friend
+ Afegeix un Amic
+
+
+
+ Enter Xmpp ID:
+ Introduiu la ID XMPP:
+
+
+
+ Add Friend...
+ Afegeix un Amic...
+
+
+
+ XML Console...
+ Consola XML...
+
+
+
+ I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later!
+ Sóc una presència automàtica emprada pel Reproductor Tomahawk. (http://gettomahawk.com. Si rebeu aquest missatge, la persona amb qui intenteu contactar probablement no està en línia, intenteu-ho més tard!
+
+
+
+ Authorize User
+ Autorització d'Usuari
+
+
+
+ Do you want to grant <b>%1</b> access to your Collection?
+ Voleu permetre que <b>%1</b> accedeixi a la vostra Col·lecció?
+
+
+
+ ZeroconfConfig
+
+
+ Form
+ Formulari
+
+
+
+ Local Network configuration
+ Configuració de la Xarxa Local
+
+
+
+ This plugin will automatically find other users running Tomahawk on your local network
+ Aquest plugin troba automàticament altres usuaris que fan servir Tomahawk a la vostra Xarxa Local
+
+
+
+ Connect automatically when Tomahawk starts
+ Connecta-t'hi automàticament quan Tomahawk arrenqui
+
+
+
\ No newline at end of file
diff --git a/lang/tomahawk_de.ts b/lang/tomahawk_de.ts
index 7ab084a42..db1efa246 100644
--- a/lang/tomahawk_de.ts
+++ b/lang/tomahawk_de.ts
@@ -47,7 +47,7 @@
Allow %1 to
connect and stream from you?
-
+ Willst du %1 erlauben sich mit dir zu verbinden und deine Sammlung anzuhören?
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.Nachdem Tomahawk deine Sammlung durchsucht hast siehst du hier deine neuesten Alben.
-
+ This collection doesn't have any recent albums.Diese Sammlung ist leer.
@@ -793,59 +793,54 @@ connect and stream from you?
Proxy-Einstellungen
-
+ Hostname of proxy serverRechnername des Proxy Servers
-
+ HostRechnername
-
+ PortPort
-
+ Proxy loginProxy Nutzername
-
+ UserBenutzer
-
+ PasswordPasswort
-
+ Proxy passwordProxy Passwort
-
- Type
- Typ
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)Proxy Ausnahmen:
(Hat Vorrang vor System Proxy)
-
+ localhost *.example.com (space separated)localhost *.beispiel.de (Getrennt durch Leerzeichen)
-
+ Use proxy for DNS lookups?Proxy für DNS Anfragen verwenden?
@@ -1005,40 +1000,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionSammlung
-
+ AdvancedErweitert
-
+ AllAlle
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+ Einige geänderte Einstellungen haben keinen Effekt bis zum nächsten Neustart
+
+
+ ServicesDienste
-
+ Install resolver from fileInstalliere Resolver Datei
-
+ InformationInformation
-
-
- Changing this setting requires a restart of Tomahawk!
- Diese Einstellung benötigt einen Neustart von Tomahawk um aktiv zu werden!
- SocialPlaylistWidget
@@ -1198,6 +1193,7 @@ connect and stream from you?
+ Latest AdditionsKürzlich hinzugekommen
@@ -1216,6 +1212,31 @@ connect and stream from you?
SuperCollectionSupersammlung
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1429,6 +1450,46 @@ connect and stream from you?
Time between scans, in seconds:Zeitinterval (in Sekunden) zwischen zwei Scans:
+
+
+ Advanced Settings
+ Erweiterte Einstellungen
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+ UPnP für Port-Weiterleitung verwenden (empfohlen)
+
+
+
+ Use static external IP address/host name and port
+ Statische externe IP Adresse / Hostnamen und Port verwenden
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+ Stelle hier deine externe IP Adresse oder Hostnamen ein. Du musst den Port selbst an diesen Rechner weiterleiten!
+
+
+
+ SOCKS Proxy
+ SOCKS Proxy
+
+
+
+ Use SOCKS Proxy
+ SOCKS Proxy verwenden
+ Internet Services
@@ -1445,50 +1506,35 @@ connect and stream from you?
Nach Fähigkeiten filtern:
-
- Advanced Network Settings
- Erweiterte Netzwerkeinstellungen
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Wenn du Schwierigkeiten hast, dich mit anderen Leuten zu verbinden, versuche deine externe IP-Adresse/Rechnernamen und eine Portnummer (Standard 50210) hier einzutragen. Stelle sicher, den Port entsprechend an diesen Rechner weiterzuleiten!
-
-
-
+ Static Host Name:Statischer Rechnername:
-
+ Static Port:Statischer Port:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)
-
-
-
+ Proxy Settings...Proxy-Einstellungen…
-
+
+ Other Settings
+ Andere Einstellungen
+
+
+ Send reports after Tomahawk crashedÜbermittlung von Fehlerberichten nach Tomahawk Absturz
-
+ Allow web browsers to interact with Tomahawk (recommended)Erlaube Web Browser mit Tomahawk zu interagieren (empfohlen)
-
-
- Use UPnP to establish port forward
- Benutze UPnP um die Portweiterleitung einzurichten
- Tomahawk::Accounts::AccountDelegate
@@ -1580,7 +1626,7 @@ connect and stream from you?
Test Login
-
+ Login testen
@@ -2415,31 +2461,31 @@ Versuch die Filter anzupassen für neue Lieder.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
- Größte Hits
+
-
+ Loved Tracks
- Lieblings Lieder
+
-
+ Hyped Tracks
- Angesagte Stücke
+
-
+ Top Artists
- Top Künstler
+
-
+ Hyped Artists
- Gehypte Künstler
+
@@ -2511,37 +2557,37 @@ Versuch die Filter anzupassen für neue Lieder.
Tomahawk::Query
-
+ and und
-
+ YouDu
-
+ youdu
-
+ andund
-
+ %n other(s)%n anderer%n andere
-
+ %1 people%1 Leute
-
+ loved this trackliebte dieses Lied
@@ -2638,41 +2684,41 @@ Tomahawk auf Twitter's Website authentifiziert hast:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
+ Wiedergabe nach diesem Lied &stoppen
-
-
+
+ Hide Tomahawk WindowTomahawk verbergen
-
+ Show Tomahawk WindowTomahawk anzeigen
-
+ Currently not playing.Derzeit wird nichts gespielt.
-
+ PlayAbspielen
-
+ PausePause
-
+ &Continue Playback after current Track
-
+ Wiedergabe nach diesem Lied &fortsetzen
@@ -2814,7 +2860,7 @@ Tomahawk auf Twitter's Website authentifiziert hast:
-
+ PlayAbspielen
@@ -2845,126 +2891,126 @@ Tomahawk auf Twitter's Website authentifiziert hast:
Nach Updates suchen...
-
-
-
+
+
+ Connect To PeerMit anderem Tomahawk verbinden
-
+ Enter peer address:Gib die Adresse der Gegenstelle ein:
-
+ Enter peer port:Gib den Port der Gegenstelle ein:
-
+ Enter peer key:Gib den Schlüssel der Gegenstelle ein:
-
+ XSPF ErrorXSPF-Fehler
-
+ This is not a valid XSPF playlist.Dies ist keine gültige XSPF-Playliste.
-
+ Failed to save tracksKonnte Stücke nicht abspeichern
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Einige Stücke in der Playliste enthalten weder Künstler noch Titel. Diese werden ignoriert.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb. Vergewisser dich, dass ein geignetes Phonon-Backend mitsamt benötigten Plugins installiert ist.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.Es tut uns leid, Tomahawk kann auf dein Audio-Gerät oder das gewünschte Stück nicht zugreifen und überspringt es deshalb.
-
+ Create New StationNeue Station erstellen
-
+ Name:Name:
-
+ New StationNeue Station
-
+ New PlaylistNeue Playliste
-
+ PausePause
-
+ Go &offlineVerbindung &trennen
-
+ Go &online&Verbindung herstellen
-
+ Authentication ErrorAuthentifizierungsfehler
-
+ %1 by %2track, artist name%1 von %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2><h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve RobertsonCopyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Danke an: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter und Steve Robertson
-
+ About TomahawkÜber Tomahawk
@@ -3040,6 +3086,79 @@ Tomahawk auf Twitter's Website authentifiziert hast:
Top Hits
+
+ TrackInfoWidget
+
+
+ Form
+ Formular
+
+
+
+ Cover
+ Cover
+
+
+
+ Track
+ Lied
+
+
+
+ by
+ von
+
+
+
+ Artist
+ Künstler
+
+
+
+ from
+ auf
+
+
+
+ Album
+ Album
+
+
+
+ Statistics
+ Statistiken
+
+
+
+ Similar Tracks
+ Ähnliche Lieder
+
+
+
+ You've listened to this track %n time(s).
+ Du hast dieses Lied einmal gehört.Du hast dieses Lied %n mal gehört.
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3263,20 +3382,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollectionSuperCollection
-
+ Combined libraries of all your online friendsKombinierte Sammlung all deiner Freunde
-
+ All available albumsAlle verfügbaren Alben
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
@@ -3359,7 +3488,10 @@ Lyrics for "%1" by %2:
%3
-
+ Liedtext für "%1" von %2:
+
+%3
+
diff --git a/lang/tomahawk_en.ts b/lang/tomahawk_en.ts
index 59dfa9bdc..a65031f32 100644
--- a/lang/tomahawk_en.ts
+++ b/lang/tomahawk_en.ts
@@ -184,12 +184,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.After you have scanned your music collection you will find your latest album additions right here.
-
+ This collection doesn't have any recent albums.This collection doesn't have any recent albums.
@@ -794,59 +794,54 @@ connect and stream from you?
Proxy Settings
-
+ Hostname of proxy serverHostname of proxy server
-
+ HostHost
-
+ PortPort
-
+ Proxy loginProxy login
-
+ UserUser
-
+ PasswordPassword
-
+ Proxy passwordProxy password
-
- Type
- Type
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)No Proxy Hosts:
(Overrides system proxy)
-
+ localhost *.example.com (space separated)localhost *.example.com (space separated)
-
+ Use proxy for DNS lookups?Use proxy for DNS lookups?
@@ -1006,40 +1001,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionCollection
-
+ AdvancedAdvanced
-
+ AllAll
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+ ServicesServices
-
+ Install resolver from fileInstall resolver from file
-
+ InformationInformation
-
-
- Changing this setting requires a restart of Tomahawk!
- Changing this setting requires a restart of Tomahawk!
- SocialPlaylistWidget
@@ -1199,6 +1194,7 @@ connect and stream from you?
+ Latest AdditionsLatest Additions
@@ -1217,6 +1213,31 @@ connect and stream from you?
SuperCollectionSuperCollection
+
+
+ Latest additions to your collection
+ Latest additions to your collection
+
+
+
+ Latest additions to %1's collection
+ Latest additions to %1's collection
+
+
+
+ Recently Played Tracks
+ Recently Played Tracks
+
+
+
+ Your recently played tracks
+ Your recently played tracks
+
+
+
+ %1's recently played tracks
+ %1's recently played tracks
+ SourceTreeView
@@ -1433,6 +1454,46 @@ connect and stream from you?
Time between scans, in seconds:Time between scans, in seconds:
+
+
+ Advanced Settings
+ Advanced Settings
+
+
+
+ Remote Peer Connection Method
+ Remote Peer Connection Method
+
+
+
+ None (outgoing connections only)
+ None (outgoing connections only)
+
+
+
+ Use UPnP to establish port forward (recommended)
+ Use UPnP to establish port forward (recommended)
+
+
+
+ Use static external IP address/host name and port
+ Use static external IP address/host name and port
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+ SOCKS Proxy
+ SOCKS Proxy
+
+
+
+ Use SOCKS Proxy
+ Use SOCKS Proxy
+ Internet Services
@@ -1449,50 +1510,35 @@ connect and stream from you?
Filter by capability:
-
- Advanced Network Settings
- Advanced Network Settings
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
-
-
-
+ Static Host Name:Static Host Name:
-
+ Static Port:Static Port:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
-
-
-
+ Proxy Settings...Proxy Settings...
-
+
+ Other Settings
+ Other Settings
+
+
+ Send reports after Tomahawk crashedSend reports after Tomahawk crashed
-
+ Allow web browsers to interact with Tomahawk (recommended)Allow web browsers to interact with Tomahawk (recommended)
-
-
- Use UPnP to establish port forward
- Use UPnP to establish port forward
- Tomahawk::Accounts::AccountDelegate
@@ -2421,29 +2467,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top TracksTop Tracks
-
+ Loved TracksLoved Tracks
-
+ Hyped TracksHyped Tracks
-
+ Top ArtistsTop Artists
-
+ Hyped ArtistsHyped Artists
@@ -2517,37 +2563,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and and
-
+ YouYou
-
+ youyou
-
+ andand
-
+ %n other(s)%n other%n others
-
+ %1 people%1 people
-
+ loved this trackloved this track
@@ -2644,39 +2690,39 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track&Stop Playback after current Track
-
-
+
+ Hide Tomahawk WindowHide Tomahawk Window
-
+ Show Tomahawk WindowShow Tomahawk Window
-
+ Currently not playing.Currently not playing.
-
+ PlayPlay
-
+ PausePause
-
+ &Continue Playback after current Track&Continue Playback after current Track
@@ -2820,7 +2866,7 @@ enter the displayed PIN number here:
-
+ PlayPlay
@@ -2851,126 +2897,126 @@ enter the displayed PIN number here:
Check For Updates...
-
-
-
+
+
+ Connect To PeerConnect To Peer
-
+ Enter peer address:Enter peer address:
-
+ Enter peer port:Enter peer port:
-
+ Enter peer key:Enter peer key:
-
+ XSPF ErrorXSPF Error
-
+ This is not a valid XSPF playlist.This is not a valid XSPF playlist.
-
+ Failed to save tracksFailed to save tracks
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Some tracks in the playlist do not contain an artist and a title. They will be ignored.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New StationCreate New Station
-
+ Name:Name:
-
+ New StationNew Station
-
+ New PlaylistNew Playlist
-
+ PausePause
-
+ Go &offlineGo &offline
-
+ Go &onlineGo &online
-
+ Authentication ErrorAuthentication Error
-
+ %1 by %2track, artist name%1 by %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2><h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2><h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve RobertsonCopyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About TomahawkAbout Tomahawk
@@ -3046,6 +3092,79 @@ enter the displayed PIN number here:
Top Hits
+
+ TrackInfoWidget
+
+
+ Form
+ Form
+
+
+
+ Cover
+ Cover
+
+
+
+ Track
+ Track
+
+
+
+ by
+ by
+
+
+
+ Artist
+ Artist
+
+
+
+ from
+ from
+
+
+
+ Album
+ Album
+
+
+
+ Statistics
+ Statistics
+
+
+
+ Similar Tracks
+ Similar Tracks
+
+
+
+ You've listened to this track %n time(s).
+ You've listened to this track %n time(s).You've listened to this track %n time(s).
+
+
+
+ You've never listened to this track before.
+ You've never listened to this track before.
+
+
+
+ You first listened to it on %1.
+ You first listened to it on %1.
+
+
+
+ You've listened to %1 %n time(s).
+ You've listened to %1 %n time(s).You've listened to %1 %n time(s).
+
+
+
+ You've never listened to %1 before.
+ You've never listened to %1 before.
+
+TrackModel
@@ -3274,20 +3393,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollectionSuperCollection
-
+ Combined libraries of all your online friendsCombined libraries of all your online friends
-
+ All available albumsAll available albums
+
+
+ Recently Played Tracks
+ Recently Played Tracks
+
+
+
+ Recently played tracks from all your friends
+ Recently played tracks from all your friends
+ WelcomeWidget
diff --git a/lang/tomahawk_es.ts b/lang/tomahawk_es.ts
index e55fedb41..b6dfc1a00 100644
--- a/lang/tomahawk_es.ts
+++ b/lang/tomahawk_es.ts
@@ -4,17 +4,17 @@
Dialog
-
+ DiálogoDescription goes here
-
+ DescripciónAdd Account
-
+ Añadir Cuenta
@@ -22,17 +22,17 @@
Online
-
+ ConectadoConnecting...
-
+ Conectando...Offline
-
+ Desconectado
@@ -40,14 +40,14 @@
Error displaying ACL info
-
+ Error mostrando informacion de ACLAllow %1 to
connect and stream from you?
-
+ ¿Permitir a %1 conectarse y transmitirle música?
@@ -65,7 +65,7 @@ connect and stream from you?
&Follow in real-time
-
+ &Seguir en tiempo real
@@ -125,7 +125,7 @@ connect and stream from you?
Form
- Form
+ Formulario
@@ -142,18 +142,18 @@ connect and stream from you?
Click to show SuperCollection Tracks
-
+ Mostrar pistas en SuperColecciónClick to show SuperCollection Albums
-
+ Mostrar álbumes en SuperColecciónClick to show Official Albums
-
+ Mostrar álbumes oficiales
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.Tras haber escaneado su colección aquí encontrará los últimos álbumes añadidos.
-
+ This collection doesn't have any recent albums.Esta colección no tiene álbumes recientes.
@@ -198,7 +198,7 @@ connect and stream from you?
Form
- Form
+ Formulario
@@ -219,12 +219,12 @@ connect and stream from you?
Click to show SuperCollection Albums
-
+ Mostrar álbumes en SuperColecciónClick to show Official Albums
-
+ Mostrar álbumes oficiales
@@ -285,7 +285,7 @@ connect and stream from you?
social
-
+ social
@@ -465,17 +465,17 @@ connect and stream from you?
About
-
+ Acerca deDelete Account
-
+ Eliminar CuentaAbout this Account
-
+ Acerca de esta Cuenta
@@ -501,7 +501,7 @@ connect and stream from you?
No tracks found for given %1
-
+ Ninguna pista fue encontrada para %1
@@ -509,7 +509,7 @@ connect and stream from you?
Form
- Form
+ Formulario
@@ -517,7 +517,7 @@ connect and stream from you?
Indexing database
-
+ Indexando la base de datos
@@ -556,27 +556,27 @@ connect and stream from you?
Form
-
+ FormularioScrobble tracks to Last.fm
-
+ Hacer scrobble a las pistas en Last.fmUsername:
-
+ Usuario:Password:
-
+ Contraseña:Test Login
-
+ Probar conexión
@@ -605,7 +605,7 @@ connect and stream from you?
Playlist URL
-
+ URL de lista de reproducción
@@ -682,7 +682,7 @@ connect and stream from you?
New Releases
-
+ Últimas novedades
@@ -703,17 +703,17 @@ connect and stream from you?
played %1 by you
-
+ %1 reproducido por usted played %1 by %2
-
+ %1 reproducido por %2added %1
-
+ añadio %1
@@ -793,58 +793,53 @@ connect and stream from you?
Configuración del proxy
-
+ Hostname of proxy serverHostname del servidor proxy
-
+ HostHost
-
+ PortPuerto
-
+ Proxy loginProxy login
-
+ UserUsuario
-
+ PasswordContraseña
-
+ Proxy passwordContraseña del proxy
-
- Type
- Tipo
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)
-
+ Sin proxy (Sobreescribe el proxy del sistema)
-
+ localhost *.example.com (space separated)localhost *.ejemplo.com (separados por espacios)
-
+ Use proxy for DNS lookups?¿Usar proxy para búsquedas DNS?
@@ -919,17 +914,17 @@ connect and stream from you?
Friend Finders
-
+ Buscador de amigosMusic Finders
-
+ Buscador de musicaStatus Updaters
-
+ Actualizadores de estado
@@ -1004,40 +999,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionColección
-
+ AdvancedAvanzado
-
+ All
-
+ Todo
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+ Algunos cambios no tomarán efecto hasta reiniciar Tomahawk
+
+
+ Services
-
+ Servicios
-
+ Install resolver from file
-
+ Instalar un Resolver desde un fichero
-
+ InformationInformación
-
-
- Changing this setting requires a restart of Tomahawk!
- ¡Cambiar esta configuración requiere el reinicio de Tomahawk!
- SocialPlaylistWidget
@@ -1062,42 +1057,42 @@ connect and stream from you?
Form
-
+ FormularioFacebook
-
+ FacebookTwitter
-
+ TwitterCover
-
+ PortadaTextLabel
-
+ TextLabelListening to "%1" by %2 and loving it! %3
-
+ Escuchando "%1" de %2 y me encanta! %3Listening to "%1" by %2 on "%3" and loving it! %4
-
+ Escuchando "%1" de %2 en "%3" y me encanta! %4%1 characters left
-
+ %1 caracteres restantes
@@ -1105,7 +1100,7 @@ connect and stream from you?
Track
- Pista
+ Tema
@@ -1146,13 +1141,13 @@ connect and stream from you?
Show
-
+ MostrarHide
-
+ Ocultar
@@ -1193,27 +1188,53 @@ connect and stream from you?
Collection
-
+ Colección
+ Latest Additions
-
+ Añadidos recientementeRecently Played
-
+ Reproducido recientementeLoved Tracks
-
+ Pistas favoritasSuperCollection
-
+ SuperColección
+
+
+
+ Latest additions to your collection
+ Últimas novedades en mi colección
+
+
+
+ Latest additions to %1's collection
+ Últimas novedadoes en la colección de %1
+
+
+
+ Recently Played Tracks
+ Temas Escuchados Recientemente
+
+
+
+ Your recently played tracks
+ Mis canciones escuchadas recientemente
+
+
+
+ %1's recently played tracks
+ Las canciones escuchadas recientemente por %1
@@ -1249,7 +1270,7 @@ connect and stream from you?
Group
-
+ Grupo
@@ -1274,52 +1295,52 @@ connect and stream from you?
Browse
-
+ BuscarSearch History
-
+ Historial de BúsquedaMy Music
-
+ Mi MusicaSuperCollection
-
+ SuperColecciónTop Loved Tracks
-
+ Pistas favoritasDashboard
-
+ Panel de inicioRecently Played
-
+ Reproducido recientementeCharts
-
+ ListasNew Releases
-
+ Últimas novedadesFriends
-
+ Amigos
@@ -1327,52 +1348,52 @@ connect and stream from you?
Form
-
+ FormularioConfigure your Spotify account
-
+ Configura tu cuenta de SpotifyUsername or Facebook Email
-
+ Usurio o dirección de correo de FacebookLog In
-
+ Inciar SesiónRight click on any Tomahawk playlist to sync it to Spotify.
-
+ Click derecho en cualquier lista de Tomahawk para sincronizar con Spotify.High Quality Streams
-
+ Streams de Alta CalidadSpotify playlists to keep in sync:
-
+ Listas de Spotify a mantener sincronizadas:Delete Tomahawk playlist when removing synchronization
-
+ Borra las listas de Tomahawk cuando se quiten de la sincronizaciónUsername:
-
+ Usuario:Password:
-
+ Contraseña:
@@ -1380,12 +1401,12 @@ connect and stream from you?
Delete in Spotify?
-
+ ¿Borrar en Spotify?Would you like to delete the corresponding Spotify playlist as well?
-
+ Quieres eliminar la lista de Spotify correspondiente, también?
@@ -1431,65 +1452,90 @@ y estaciones basadas en sus gustos personales.
Time between scans, in seconds:Tiempo entre escaneo, en segundos:
+
+
+ Advanced Settings
+ Ajustes avanzados
+
+
+
+ Remote Peer Connection Method
+ Método de conexión remota
+
+
+
+ None (outgoing connections only)
+ Ninguna (sólo conexiones salientes)
+
+
+
+ Use UPnP to establish port forward (recommended)
+ Usar UPnP para establecer la redirección de puertos (recomendado)
+
+
+
+ Use static external IP address/host name and port
+ Usar IP estática externa/nombre de host y puero
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+ Ajustar a la dirección IP externa o nombre de la máquina. Hay que redirigir los puertos a esta máquina!
+
+
+
+ SOCKS Proxy
+ Proxy SOCKS
+
+
+
+ Use SOCKS Proxy
+ Utilizar el Proxy SOCKS
+ Internet Services
-
+ Servicios de InternetInstall from file...
-
+ Instalar desde un fichero...Filter by capability:
-
+ Filtrar por capacidad:
-
- Advanced Network Settings
- Configuración avanzada de red
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Si tiene dificultades para conectarse con los pares, intente establecer su dirección IP externa/nombre del host y el número de puerto (por defecto 50210). ¡Asegúrese de redireccionar ese puerto a esta máquina!
-
-
-
+ Static Host Name:Nombre estático del host:
-
+ Static Port:Puerto estático:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- ¿Siempre usar nombre eśtático del host/puerto? (Sobreescribe descubrimiento UPnP/redirección de puertos)
-
-
-
+ Proxy Settings...Configuración del proxy...
-
+
+ Other Settings
+ Otros Ajustes
+
+
+ Send reports after Tomahawk crashedMandar reportes después de que Tomahawk falle
-
+ Allow web browsers to interact with Tomahawk (recommended)
-
-
-
-
- Use UPnP to establish port forward
- Utilizar UPnP para establecer redirección de puertos
+ Permitir a los navegadores web interactuar con Tomahawk (recomendado)
@@ -1497,32 +1543,32 @@ y estaciones basadas en sus gustos personales.
Add Account
-
+ Añadir CuentaRemove Account
-
+ Eliminar Cuenta%1 downloads
-
+ %1 descargasOnline
-
+ ConectadoConnecting...
-
+ Conectando...Offline
-
+ Desconectado
@@ -1530,22 +1576,22 @@ y estaciones basadas en sus gustos personales.
Configure this Google Account
-
+ Configura esta Cuenta GoogleGoogle Address
-
+ Dirección de correo GoogleEnter your Google login to connect with your friends using Tomahawk!
-
+ Introducir los datos de la cuenta Google para contectar con los amigos que usen Tomahawk!username@gmail.com
-
+ usuario@gmail.com
@@ -1553,7 +1599,7 @@ y estaciones basadas en sus gustos personales.
Connect to Google Talk to find your friends
-
+ Conectarse a Google Talk y encontrar mis amigos
@@ -1561,12 +1607,12 @@ y estaciones basadas en sus gustos personales.
Add Friend
-
+ Añadir AmigoEnter Google Address:
-
+ Introducir la dirección de correo de Google:
@@ -1574,7 +1620,7 @@ y estaciones basadas en sus gustos personales.
Scrobble your tracks to last.fm, and find freely downloadable tracks to play
-
+ Hacer Scrobble de mis temas a last.fm y encontrar canciones gratuitas para reproducirlas
@@ -1582,23 +1628,23 @@ y estaciones basadas en sus gustos personales.
Test Login
-
+ Comprobar Inicio de SesiónFailed
-
+ FalloSuccess
-
+ ÉxitoCould not contact server
-
+ No se pudo contactar el servidor
@@ -1606,12 +1652,12 @@ y estaciones basadas en sus gustos personales.
Sync with Spotify
-
+ Sincronizar con SpotifyStop syncing with Spotify
-
+ Dejar de sincronizar con Spotify
@@ -1619,22 +1665,22 @@ y estaciones basadas en sus gustos personales.
Logging in...
-
+ Inciando sesión...Logged in!
-
+ Sesión iniciada!Failed: %1
-
+ Fallo: %1Log In
-
+ Iniciar Sesión
@@ -1642,7 +1688,7 @@ y estaciones basadas en sus gustos personales.
Play music from and sync your playlists with Spotify Premium
-
+ Reproduce música de Spotofy Premium y sincroniza las listas de reprodución
@@ -1650,7 +1696,7 @@ y estaciones basadas en sus gustos personales.
Connect to your Twitter followers.
-
+ Conectar con los seguidores de Twitter.
@@ -1660,32 +1706,32 @@ y estaciones basadas en sus gustos personales.
Tweet!
-
+ Twittear!Status: No saved credentials
-
+ Estado: Credenciales no guardadasAuthenticate
-
+ AutenticarStatus: Credentials saved for %1
-
+ Estado: Credenciales de %1 guardadasDe-authenticate
-
+ Desautenticar
@@ -1696,87 +1742,90 @@ y estaciones basadas en sus gustos personales.
Tweetin' Error
-
+ Error al TwittearThe credentials could not be verified.
You may wish to try re-authenticating.
-
+ Las credencials no se han podido verificar.
+Hay que volver a intentar la autenticación.Status: Error validating credentials
-
+ Estado: Error al validar las credencialesGlobal Tweet
-
+ Tweet GlobalDirect Message
-
+ Mensaje DirectoSend Message!
-
+ Enviar Mensaje!@Mention
-
+ @MenciónSend Mention!
-
+ Enviar Mención!You must enter a user name for this type of tweet.
-
+ Hay que introducir un nombre de usuario para este tipo de tweet.Your saved credentials could not be loaded.
You may wish to try re-authenticating.
-
+ Las credenciales guardadas no se han podido cargar.
+Hay que volverse a autenticar.Your saved credentials could not be verified.
You may wish to try re-authenticating.
-
+ Las credenciales guardadas no se han podido verificar.
+Hay que volverse a autenticar.There was an error posting your status -- sorry!
-
+ Error publicando el estado!Tweeted!
-
+ Twitteado!Your tweet has been posted!
-
+ El tweet se ha publicado!There was an error posting your direct message -- sorry!
-
+ Error publicando el mensahe directo!Your message has been posted!
-
+ El mensaje se ha publicado!
@@ -1784,7 +1833,7 @@ You may wish to try re-authenticating.
Log on to your Jabber/XMPP account to connect to your friends
-
+ Inciar sesón en Jabber/XMPP para conectar con mis amigos
@@ -1792,7 +1841,7 @@ You may wish to try re-authenticating.
Automatically connect to Tomahawks on the local network
-
+ Conectarse automáticament a los Tomahawks de la red local
@@ -1813,27 +1862,27 @@ You may wish to try re-authenticating.
&Love
-
+ &Favorito&Copy Track Link
-
+ &Copiar enlace del TemaShow &Album page
-
+ Mostrar la página del &ÁlbumShow &Artist page
-
+ Mostrar la página del &ArtistaUn-&Love
-
+ Quitar de &Favoritos
@@ -1843,12 +1892,12 @@ You may wish to try re-authenticating.
&Continue Playback after this Track
-
+ &Continuar la Reproducción después de este Tema&Stop Playback after this Track
-
+ &Para la Reproducción después de este Tema
@@ -1966,7 +2015,9 @@ Por favor, cambie los filtros o inténtelo de nuevo.
Station ran out of tracks!
Try tweaking the filters for a new set of songs to play.
-
+ La Emisora se ha quedado sin temas!
+
+Intente ajustar los filtros para reproducir nuevas canciones.
@@ -2374,7 +2425,7 @@ Try tweaking the filters for a new set of songs to play.
Error fetching Grooveshark information from the network!
-
+ Error al buscar la información de Grooveshar en la red!
@@ -2405,40 +2456,40 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk is playing "%1" by %2%3.
-
+ Tomahawk está reproduciendo "%1" de %2%3.on "%1"
-
+ en "%1"
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
- Pistas más escuchadas
+ Temas más escuchados
-
+ Loved Tracks
- Pistas favoritas
+ Temas Favoritos
-
+ Hyped Tracks
- Pistas en alza
+ Temas a la alza
-
+ Top ArtistsArtistas más escuchados
-
+ Hyped Artists
- Artistas en alza
+ Artistas a la alza
@@ -2446,7 +2497,7 @@ Try tweaking the filters for a new set of songs to play.
Albums
-
+ Álbumes
@@ -2454,7 +2505,7 @@ Try tweaking the filters for a new set of songs to play.
Listening to "%1" by %2 and loving it! %3
-
+ Escuchando "%1" de %2 y me encanta! %3
@@ -2462,7 +2513,7 @@ Try tweaking the filters for a new set of songs to play.
Error fetching iTunes information from the network!
-
+ Error al buscar la información de iTunes en la red!
@@ -2510,39 +2561,39 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and
-
+ y
-
+ You
-
+ usted
-
+ you
-
+ usted
-
+ and
-
+ y
-
+ %n other(s)
-
+ %n más%n más
-
+ %1 people
-
+ %1 personas
-
+ loved this track
-
+ han añadido este tema a Favoritos
@@ -2550,7 +2601,7 @@ Try tweaking the filters for a new set of songs to play.
Error fetching Rdio information from the network!
-
+ Error al buscar la información de Rdio en la red!
@@ -2558,7 +2609,7 @@ Try tweaking the filters for a new set of songs to play.
Network error parsing shortened link!
-
+ Error en la red al analizar el enlace acortado!
@@ -2572,7 +2623,7 @@ Try tweaking the filters for a new set of songs to play.
Scanning
-
+ Escaneando
@@ -2600,7 +2651,7 @@ Try tweaking the filters for a new set of songs to play.
Error fetching Spotify information from the network!
-
+ Error al buscar la información de Spotify en la red!
@@ -2608,7 +2659,7 @@ Try tweaking the filters for a new set of songs to play.
Automatically update from XSPF
-
+ Actualizar automáticamente desde XSPF
@@ -2637,41 +2688,41 @@ introduzca su número PIN aquí:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
+ &Para la Reproducción después de este Tema
-
-
+
+ Hide Tomahawk WindowOcultar ventana de Tomahawk
-
+ Show Tomahawk WindowMostrar ventana de Tomahawk
-
+ Currently not playing.Ninguna pista en reproducción.
-
+ PlayReproducir
-
+ PausePausar
-
+ &Continue Playback after current Track
-
+ &Continuar la Reproducción después de este Tema
@@ -2689,7 +2740,7 @@ introduzca su número PIN aquí:
&Controls
-
+ &Controles
@@ -2813,7 +2864,7 @@ introduzca su número PIN aquí:
-
+ PlayReproducir
@@ -2844,128 +2895,128 @@ introduzca su número PIN aquí:
Buscar actualizaciones...
-
-
-
+
+
+ Connect To PeerConectar a un par
-
+ Enter peer address:Introducir dirección del par:
-
+ Enter peer port:Introducir puerto del par:
-
+ Enter peer key:Introducir contraseña del par:
-
+ XSPF ErrorError XSPF
-
+ This is not a valid XSPF playlist.Esta no es una lista de reproducción XSPF válida.
-
+ Failed to save tracksFallo al guardar pistas
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Algunas pistas en la lista de reproducción no contienen artista ni título. Serán ignoradas.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Se ha producido un error al acceder al dispostivo de audio o al tema deseado y se va saltar. Asegúrese de que ha instalado un backend de Phonon adecuado y los plugins necesarios.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Se ha producido un error al acceder al dispostivo de audio o al tema deseado y se va saltar.
-
+ Create New StationCrear nueva estación
-
+ Name:Nombre:
-
+ New StationNueva estación
-
+ New PlaylistNueva lista de reproducción
-
+ PausePausar
-
+ Go &offline&Desconectarse
-
+ Go &online&Conectarse
-
+ Authentication ErrorError de autenticación
-
+ %1 by %2track, artist name%1 por %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Gracias a: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter y Steve Robertson
-
+ About Tomahawk
-
+ Acerca de Tomahawk
@@ -2973,7 +3024,7 @@ introduzca su número PIN aquí:
Form
- Form
+ Formulario
@@ -3039,6 +3090,79 @@ introduzca su número PIN aquí:
Grandes éxitos
+
+ TrackInfoWidget
+
+
+ Form
+ Formulario
+
+
+
+ Cover
+ Portada
+
+
+
+ Track
+ Tema
+
+
+
+ by
+ de
+
+
+
+ Artist
+ Artista
+
+
+
+ from
+ en
+
+
+
+ Album
+ Álbum
+
+
+
+ Statistics
+ Estadísticas
+
+
+
+ Similar Tracks
+ Temas Similares
+
+
+
+ You've listened to this track %n time(s).
+ Ha escuchado esta canción %n vez.Ha escuchado esta canción %n veces.
+
+
+
+ You've never listened to this track before.
+ Nunca ha escuchado este tema antes.
+
+
+
+ You first listened to it on %1.
+ Escuchó este tema pro primera vez en %1.
+
+
+
+ You've listened to %1 %n time(s).
+ Ha escuchado %1 %n vez.Ha escuchado %1 %n veces.
+
+
+
+ You've never listened to %1 before.
+ Nunca ha escuchado %1 antes.
+
+TrackModel
@@ -3059,7 +3183,7 @@ introduzca su número PIN aquí:
Track
- Pista
+ Tema
@@ -3099,7 +3223,7 @@ introduzca su número PIN aquí:
Composer
-
+ Compositor
@@ -3171,7 +3295,7 @@ introduzca su número PIN aquí:
Composer
-
+ Compositor
@@ -3267,20 +3391,30 @@ Puede reenviar el mensaje de sincronización en cualquier momento simplemente en
ViewManager
-
+ SuperCollection
-
+ SuperColección
-
+ Combined libraries of all your online friends
-
+ Bibliotecas combinadas de todos tus amigos conectados
-
+ All available albumsTodos los álbumes disponibles
+
+
+ Recently Played Tracks
+ Temas Escuchados Recientemente
+
+
+
+ Recently played tracks from all your friends
+ Temas escuchados recientemente por mis amigos
+ WelcomeWidget
@@ -3378,17 +3512,17 @@ Letras de "%1" por %2:
Failed to parse contents of XSPF playlist
-
+ Error al analizar los contenidos de la lista XSPFSome playlist entries were found without artist and track name, they will be omitted
-
+ Algunas entradas de la lista no tenía información de artista o de títul y serán omitidasFailed to fetch the desired playlist from the network, or the desired file does not exist
-
+ Error al buscar la lista deseada en la red, o el fichero no existe
@@ -3480,72 +3614,72 @@ Letras de "%1" por %2:
Xmpp Configuration
-
+ Configuración XMPPConfigure this Xmpp account
-
+ Configurar esta cuenta XMPPEnter 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!Login Information
-
+ Información de Inicio de SesiónXmpp ID:
-
+ ID XMPP:e.g. user@example.com
-
+ e.g. usuario@ejemplo.comPassword:
-
+ Contraseña:An account with this name already exists!
-
+ Ya existe una cuenta con el mismo nombre!Advanced Xmpp Settings
-
+ Ajustes avanzados de XMPPServer:
-
+ Servidor:Port:
-
+ Puerto:Lots of servers don't support this (e.g. GTalk, jabber.org)
-
+ Muchos servidores no soporta esta opción (e.g. GTalk, jabber.org)Publish currently playing track
-
+ Publicar el tema reproducido al momentoEnforce secure connection
-
+ Forzar conexión segura
@@ -3553,107 +3687,107 @@ Letras de "%1" por %2:
User Interaction
-
+ Interacción de usuarioHost is unknown
-
+ Máquina desconocidaItem not found
-
+ Elemento no encontradoAuthorization Error
-
+ Error de AutorizaciónRemote Stream Error
-
+ Error de Stream RemotoRemote Connection failed
-
+ Fallo en la Conexión RemotaInternal Server Error
-
+ Error de Servidor InternoSystem shutdown
-
+ Sistema apagadoConflict
-
+ ConflictoUnknown
-
+ DesconocidoNo Compression Support
-
+ Compresión no sportadaNo Encryption Support
-
+ Encriptación no soportadaNo Authorization Support
-
+ Autorización no soportadaNo Supported Feature
-
+ Característica no soportadaAdd Friend
-
+ Añadir AmigoEnter Xmpp ID:
-
+ Introducir ID XMPP:Add Friend...
-
+ Añadir Amigo...XML Console...
-
+ Consola XML...I'm sorry -- I'm just an automatic presence used by Tomahawk Player (http://gettomahawk.com). If you are getting this message, the person you are trying to reach is probably not signed on, so please try again later!
-
+ Lo siento -- soy una presencia automática usada por el Reproductor Tomahawk (http://gettomahawk.com). Si recibe este mensaje, la persona con quién intenta contactar no esté contectada probablemente. Inténtelo más tarde!Authorize User
-
+ Autorizar UsuarioDo you want to grant <b>%1</b> access to your Collection?
-
+ ¿Quiere permitir que <b>%1</b> acceda a su Colección?
@@ -3661,7 +3795,7 @@ Letras de "%1" por %2:
Form
- Form
+ Formulario
diff --git a/lang/tomahawk_fr.ts b/lang/tomahawk_fr.ts
index ad9fd14b6..349694a6c 100644
--- a/lang/tomahawk_fr.ts
+++ b/lang/tomahawk_fr.ts
@@ -40,14 +40,15 @@
Error displaying ACL info
-
+ Erreur d'affichage des infos ACLAllow %1 to
connect and stream from you?
-
+ Autoriser %1 à
+se connecter et streamer depuis chez vous ?
@@ -183,12 +184,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.Après avoir scanné votre collection musicale, vous trouverez les derniers albums ajoutés ici.
-
+ This collection doesn't have any recent albums.Cette collection n'a pas d'albums récents
@@ -285,7 +286,7 @@ connect and stream from you?
social
-
+ social
@@ -465,7 +466,7 @@ connect and stream from you?
About
-
+ A propos
@@ -475,7 +476,7 @@ connect and stream from you?
About this Account
-
+ A propos de ce compte
@@ -641,7 +642,7 @@ connect and stream from you?
Bookmarks
-
+ Signets
@@ -713,7 +714,7 @@ connect and stream from you?
added %1
-
+ ajouté par %1
@@ -793,59 +794,54 @@ connect and stream from you?
Paramètres de proxy
-
+ Hostname of proxy serverNom d'hôte du serveur proxy
-
+ HostHôte
-
+ PortPort
-
+ Proxy loginLogin du proxy
-
+ UserUtilisateur
-
+ PasswordMot de passe
-
+ Proxy passwordMot de passe du proxy
-
- Type
- Type
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)Pas de proxy pour :
(remplace les paramètres système)
-
+ localhost *.example.com (space separated)localhost *.example.com (séparé par espace)
-
+ Use proxy for DNS lookups?Utiliser le proxy pour les requêtes DNS ?
@@ -920,17 +916,17 @@ connect and stream from you?
Friend Finders
-
+ Rechercher vos amisMusic Finders
-
+ Trouver de la musiqueStatus Updaters
-
+ Mettre à jour votre statut
@@ -938,7 +934,7 @@ connect and stream from you?
ZIP/UNZIP API error %1
-
+ Erreur %1 ZIP/UNZIP API
@@ -965,7 +961,7 @@ connect and stream from you?
Related Artists
-
+ Artistes similaires
@@ -973,7 +969,7 @@ connect and stream from you?
Not found: %1
-
+ Non trouvé : %1
@@ -1005,40 +1001,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionCollection
-
+ AdvancedAvancés
-
+ AllTous
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+ Certaines modifications ne prendront effet qu'au prochain démarrage de Tomahawk
+
+
+ ServicesServices
-
+ Install resolver from file
-
+ Installer un script de résolution depuis un fichier
-
+ InformationInformation
-
-
- Changing this setting requires a restart of Tomahawk!
- Le changement de ce paramètre requiert un redémarrage de Tomahawk
- SocialPlaylistWidget
@@ -1078,7 +1074,7 @@ connect and stream from you?
Cover
-
+ Pochette
@@ -1088,7 +1084,7 @@ connect and stream from you?
Listening to "%1" by %2 and loving it! %3
-
+ J'écoute "%1" par %2 et j'adore ! %3
@@ -1198,6 +1194,7 @@ connect and stream from you?
+ Latest AdditionsDerniers ajouts
@@ -1209,13 +1206,38 @@ connect and stream from you?
Loved Tracks
-
+ Pistes favoritesSuperCollectionSuperCollection
+
+
+ Latest additions to your collection
+ Derniers ajouts à votre collection
+
+
+
+ Latest additions to %1's collection
+ Derniers à la collection de %1
+
+
+
+ Recently Played Tracks
+ Dernières pistes jouées
+
+
+
+ Your recently played tracks
+ Vos dernières pistes jouées
+
+
+
+ %1's recently played tracks
+ Dernières pistes jouées par %1
+ SourceTreeView
@@ -1295,7 +1317,7 @@ connect and stream from you?
Top Loved Tracks
-
+ Top des pistes favorites
@@ -1333,37 +1355,37 @@ connect and stream from you?
Configure your Spotify account
-
+ Configurer votre compte SpotifyUsername or Facebook Email
-
+ Nom d'utilisateur ou email FacebookLog In
-
+ ConnexionRight click on any Tomahawk playlist to sync it to Spotify.
-
+ Clic droit pour synchroniser une liste de lecture Tomahawk vers Spotify.High Quality Streams
-
+ Streaming haute qualitéSpotify playlists to keep in sync:
-
+ Liste de lecture Spotify à synchroniser :Delete Tomahawk playlist when removing synchronization
-
+ Supprimer la liste de lecture de Tomahawk à la suppression de la synchronisation
@@ -1381,12 +1403,12 @@ connect and stream from you?
Delete in Spotify?
-
+ Supprimer dans Spotify ?Would you like to delete the corresponding Spotify playlist as well?
-
+ Voulez-vous aussi supprimer la liste de lecture correspondante dans Spotify ?
@@ -1399,7 +1421,7 @@ connect and stream from you?
Local Music Information
-
+ Fichiers de musique locaux
@@ -1432,6 +1454,46 @@ et des stations basés sur vos goûts.
Time between scans, in seconds:Période de scan, en secondes :
+
+
+ Advanced Settings
+ Paramètres avancés
+
+
+
+ Remote Peer Connection Method
+ Méthode de connexion distante à un pair
+
+
+
+ None (outgoing connections only)
+ Aucune (Connexions sortantes uniquement)
+
+
+
+ Use UPnP to establish port forward (recommended)
+ Utiliser UPnP pour la redirection des ports (recommandé)
+
+
+
+ Use static external IP address/host name and port
+ Utiliser une adresse IP externe statique/nom d'hôte et un port
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+ Indiquez votre adresse IP externe ou nom d'hôte. Vérifiez que le port est bien redirigé vers cet hôte !
+
+
+
+ SOCKS Proxy
+ Proxy SOCKS
+
+
+
+ Use SOCKS Proxy
+ Utiliser un proxy SOCKS
+ Internet Services
@@ -1445,53 +1507,38 @@ et des stations basés sur vos goûts.
Filter by capability:
-
+ Filtrer par capacité :
-
- Advanced Network Settings
- Paramètres réseaux avancés
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Si vous rencontrez des difficultés à vous connecter, essayez de saisir ici votre adresse IP externe et un port (défaut 50210). Vérifiez que vous redirigez ce port vers cette machine !
-
-
-
+ Static Host Name:Nom d'hôte statique :
-
+ Static Port:Port statique :
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Toujours utiliser un nom d'hôte/port statique? (remplace la découverte UPnP/le transfer de port)
-
-
-
+ Proxy Settings...Paramètres du proxy...
-
+
+ Other Settings
+ Autres paramètres
+
+
+ Send reports after Tomahawk crashedEnvoyer un rapport apès un crash de Tomahawk
-
+ Allow web browsers to interact with Tomahawk (recommended)Permettrre aux navigateurs web pour intéragir avec Tomahawk (recommandé)
-
-
- Use UPnP to establish port forward
- Utiliser UPnP pour établir la redirection de port
- Tomahawk::Accounts::AccountDelegate
@@ -1583,7 +1630,7 @@ et des stations basés sur vos goûts.
Test Login
-
+ Test de connexion
@@ -1607,12 +1654,12 @@ et des stations basés sur vos goûts.
Sync with Spotify
-
+ Synchroniser avec SpotifyStop syncing with Spotify
-
+ Stopper la synchronisation avec Spotify
@@ -1620,22 +1667,22 @@ et des stations basés sur vos goûts.
Logging in...
-
+ Connexion...Logged in!
-
+ Connecté !Failed: %1
-
+ Echec : %1Log In
-
+ Connexion
@@ -1817,7 +1864,7 @@ Essayez de vous authentifier de nouveau.
&Love
-
+ &Favori
@@ -1837,12 +1884,12 @@ Essayez de vous authentifier de nouveau.
Un-&Love
-
+ Supprimer des Favoris&Delete Items
-
+ &Supprimer les éléments
@@ -1857,7 +1904,7 @@ Essayez de vous authentifier de nouveau.
&Delete Item
-
+ &Supprimer l'élément
@@ -1865,32 +1912,32 @@ Essayez de vous authentifier de nouveau.
Top Loved Tracks
-
+ Top des pistes favoritesYour loved tracks
-
+ Vos pistes favorites%1's loved tracks
-
+ Pistes favorites de %1The most loved tracks from all your friends
-
+ Les pistes favorites de tous vos amisAll of your loved tracks
-
+ Toutes vos pistes favoritesAll of %1's loved tracks
-
+ Toutes les pistes favorites de %1
@@ -2198,23 +2245,23 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
only by ~%1
-
+ uniquement par ~%1similar to ~%1
-
+ similaire à ~%1with genre ~%1
-
+ avec le genre ~%1from no one
-
+ de personne
@@ -2224,12 +2271,12 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
from %1 radio
-
+ de la radio %1with %1 %2
-
+ avec %1 %2
@@ -2249,32 +2296,32 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
at around %1%2 %3
-
+ à environ %1%2 %3in %1
-
+ dans %1in a %1 key
-
+ en tonalité %1sorted in %1 %2 order
-
+ trié par ordre %1 %2with a %1 mood
-
+ avec une ambiance %1in a %1 style
-
+ ayant un style %1
@@ -2416,35 +2463,35 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
on "%1"
-
+ sur "%1"
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top TracksTop des pistes
-
+ Loved Tracks
-
+ Pistes favorites
-
+ Hyped Tracks
- Pistes à la mode
+ Pistes Hype
-
+ Top ArtistsTop Artistes
-
+ Hyped Artists
- Artistes à la mode
+ Artistes Hype
@@ -2516,39 +2563,39 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
Tomahawk::Query
-
+ and et
-
+ YouVous
-
+ youvous
-
+ andet
-
+ %n other(s)%n autre%n autres
-
+ %1 people%1 personnes
-
+ loved this track
-
+ a mis cette piste en favoris
@@ -2614,7 +2661,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
Automatically update from XSPF
-
+ Mise à jour automatique XSPF
@@ -2630,7 +2677,7 @@ Essayez de changer les filtres pour avoir de nouveaux morceaux à jouer.
Twitter PIN
-
+ Identification Twitter
@@ -2643,41 +2690,41 @@ saisissez le numéro PIN ici :
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
+ &Stopper la lecture après cette piste
-
-
+
+ Hide Tomahawk WindowMasquer la fenêtre Tomahawk
-
+ Show Tomahawk WindowAfficher la fenêtre Tomahawk
-
+ Currently not playing.Pas de lecture en cours
-
+ PlayLecture
-
+ PausePause
-
+ &Continue Playback after current Track
-
+ &Continuer la lecture après cette piste
@@ -2819,7 +2866,7 @@ saisissez le numéro PIN ici :
-
+ PlayLecture
@@ -2850,128 +2897,128 @@ saisissez le numéro PIN ici :
Rechercher une mise à jour...
-
-
-
+
+
+ Connect To Peer
-
+ Connexion à un pair
-
+ Enter peer address:
-
+ Adresse du pair :
-
+ Enter peer port:
-
+ Port du pair :
-
+ Enter peer key:
-
+ Clé du pair :
-
+ XSPF ErrorErreur XSPF
-
+ This is not a valid XSPF playlist.Ceci n'est pas une liste de lecture XSPF valide.
-
+ Failed to save tracksÉchec de la sauvegarde des pistes
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Certaines pistes dans la liste de lecture ne contiennent pas d'artiste ou de titre. Elles seront ignorées.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sauter. Vérifiez que vous avez un backend Phonon et les plugins requis installés.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.Désolé, il y a un problème d'accès à votre matériel audio ou la piste en cours va être sauter.
-
+ Create New StationCréer une nouvelle station
-
+ Name:Nom :
-
+ New StationNouvelle station
-
+ New PlaylistNouvelle liste de lecture
-
+ PausePause
-
+ Go &offlineSe &déconnecter
-
+ Go &onlineSe c&onnecter
-
+ Authentication ErrorErreur d'authentification
-
+ %1 by %2track, artist name%1 par %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Merci à : Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About Tomahawk
-
+ A propos de Tomahawk
@@ -3019,12 +3066,12 @@ saisissez le numéro PIN ici :
Artist View
-
+ Vue artisteFlat View
-
+ Vue fixe
@@ -3042,7 +3089,80 @@ saisissez le numéro PIN ici :
Top Hits
-
+ Top Hits
+
+
+
+ TrackInfoWidget
+
+
+ Form
+ Form
+
+
+
+ Cover
+ Pochette
+
+
+
+ Track
+ Piste
+
+
+
+ by
+ par
+
+
+
+ Artist
+ Artiste
+
+
+
+ from
+ de
+
+
+
+ Album
+ Album
+
+
+
+ Statistics
+ Statistiques
+
+
+
+ Similar Tracks
+ Piste similaire
+
+
+
+ You've listened to this track %n time(s).
+ Vous avez écouté cette piste %n fois.Vous avez écouté cette piste %n fois.
+
+
+
+ You've never listened to this track before.
+ Vous n'avez encore jamais écouté cette piste.
+
+
+
+ You first listened to it on %1.
+ Vous l'avez écouté pour la première fois le %1.
+
+
+
+ You've listened to %1 %n time(s).
+ Vous avez écouté %1 %n fois.Vous avez écouté %1 %n fois.
+
+
+
+ You've never listened to %1 before.
+ Vous n'avez encore jamais écouté %1.
@@ -3075,7 +3195,7 @@ saisissez le numéro PIN ici :
Bitrate
-
+ Bitrate
@@ -3121,12 +3241,12 @@ saisissez le numéro PIN ici :
from
-
+ deto
-
+ à
@@ -3152,7 +3272,7 @@ saisissez le numéro PIN ici :
Bitrate
-
+ Bitrate
@@ -3273,20 +3393,30 @@ Vous pouvez envoyer un message de synchronisation quand vous le souhaitez en env
ViewManager
-
+ SuperCollectionSuperCollection
-
+ Combined libraries of all your online friendsCollections regroupant toutes celles de vos amis en ligne
-
+ All available albumsTous les albums disponibles
+
+
+ Recently Played Tracks
+ Dernières pistes jouées
+
+
+
+ Recently played tracks from all your friends
+ Dernières pistes jouées par vos amis
+ WelcomeWidget
@@ -3339,26 +3469,32 @@ Vous pouvez envoyer un message de synchronisation quand vous le souhaitez en env
Terms for %1:
-
+
+Résultats pour %1 :
+No terms found, sorry.
-
+ Aucun terme trouvé, désolé.
Hotttness for %1: %2
-
+
+Hotttness pour %1 : %2
+
Familiarity for %1: %2
-
+
+Familiarité pour %1 : %2
+
@@ -3367,7 +3503,11 @@ Lyrics for "%1" by %2:
%3
-
+
+Paroles de "%1" par %2 :
+
+%3
+
@@ -3398,7 +3538,7 @@ Lyrics for "%1" by %2:
Xml stream console
-
+ Console stream xml
@@ -3409,17 +3549,17 @@ Lyrics for "%1" by %2:
Save log
-
+ Sauvegarder le journalDisabled
-
+ DésactivéBy JID
-
+ Par JID
@@ -3429,17 +3569,17 @@ Lyrics for "%1" by %2:
By all attributes
-
+ Par tous les attributsVisible stanzas
-
+ Strophes visiblesInformation query
-
+ Requête d'information
@@ -3570,22 +3710,22 @@ Lyrics for "%1" by %2:
Remote Stream Error
-
+ Erreur de lecture à distanceRemote Connection failed
-
+ Erreur de connexion à distanceInternal Server Error
-
+ Erreur interne du serveurSystem shutdown
-
+ Arrêt du système
@@ -3600,22 +3740,22 @@ Lyrics for "%1" by %2:
No Compression Support
-
+ Pas de support de la compressionNo Encryption Support
-
+ Pas de support du chiffrementNo Authorization Support
-
+ Pas de support de l'authorizationNo Supported Feature
-
+ Fonctionnalité non supportée
@@ -3645,7 +3785,7 @@ Lyrics for "%1" by %2:
Authorize User
-
+ Autoriser l'utilisateur
diff --git a/lang/tomahawk_ja.ts b/lang/tomahawk_ja.ts
index 10239045c..a65c64209 100644
--- a/lang/tomahawk_ja.ts
+++ b/lang/tomahawk_ja.ts
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.
-
+ This collection doesn't have any recent albums.
@@ -793,58 +793,53 @@ connect and stream from you?
プロクシ設定
-
+ Hostname of proxy server
-
+ Hostホスト
-
+ Portポート
-
+ Proxy login
-
+ User
-
+ Password
-
+ Proxy password
-
- Type
-
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)
-
+ localhost *.example.com (space separated)
-
+ Use proxy for DNS lookups?
@@ -1006,40 +1001,40 @@ other: %n年前
SettingsDialog
-
+ Collection
-
+ Advanced
-
+ All
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ Services
-
+ Install resolver from file
-
+ Information情報
-
-
- Changing this setting requires a restart of Tomahawk!
-
- SocialPlaylistWidget
@@ -1199,6 +1194,7 @@ other: %n年前
+ Latest Additions
@@ -1217,6 +1213,31 @@ other: %n年前
SuperCollectionスーパーコレクション
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1430,6 +1451,46 @@ other: %n年前
Time between scans, in seconds:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1446,50 +1507,35 @@ other: %n年前
-
- Advanced Network Settings
-
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
-
-
-
-
+ Static Host Name:
-
+ Static Port:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
-
-
-
-
+ Proxy Settings...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashed
-
+ Allow web browsers to interact with Tomahawk (recommended)
-
-
- Use UPnP to establish port forward
-
- Tomahawk::Accounts::AccountDelegate
@@ -2411,29 +2457,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
-
+ Loved Tracks
-
+ Hyped Tracks
-
+ Top Artists
-
+ Hyped Artists
@@ -2507,37 +2553,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and
-
+ You
-
+ you
-
+ and
-
+ %n other(s)
-
+ %1 people
-
+ loved this track
@@ -2633,39 +2679,39 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
-
+
+ Hide Tomahawk WindowTomahawkのウインドウを隠す
-
+ Show Tomahawk WindowTomahawkのウインドウを表示
-
+ Currently not playing.
-
+ Play再生
-
+ Pause一時停止
-
+ &Continue Playback after current Track
@@ -2809,7 +2855,7 @@ enter the displayed PIN number here:
-
+ Play
@@ -2840,126 +2886,126 @@ enter the displayed PIN number here:
-
-
-
+
+
+ Connect To Peer
-
+ Enter peer address:
-
+ Enter peer port:
-
+ Enter peer key:
-
+ XSPF Error
-
+ This is not a valid XSPF playlist.
-
+ Failed to save tracks
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New Station新規ステーションを作成
-
+ Name:
-
+ New Station
-
+ New Playlist
-
+ Pause
-
+ Go &offline
-
+ Go &online
-
+ Authentication Error
-
+ %1 by %2track, artist name
-
+ %1 - %2current track, some window title
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About Tomahawk
@@ -3035,6 +3081,79 @@ enter the displayed PIN number here:
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3258,20 +3377,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollection
-
+ Combined libraries of all your online friends
-
+ All available albums
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/lang/tomahawk_pl.ts b/lang/tomahawk_pl.ts
index 7dc4e2eb2..c52d60fb1 100644
--- a/lang/tomahawk_pl.ts
+++ b/lang/tomahawk_pl.ts
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.Po zeskanowaniu swojej kolekcji muzycznej w tym miejscu znajdziesz ostatnio dodane albumy.
-
+ This collection doesn't have any recent albums.Ta kolekcja nie zawiera żadnych nowo dodanych albumów.
@@ -793,58 +793,53 @@ connect and stream from you?
Ustawienia Proxy
-
+ Hostname of proxy serverHost serwera proxy
-
+ HostHost
-
+ PortPort
-
+ Proxy loginLogin Proxy
-
+ UserUżytkownik
-
+ PasswordHasło
-
+ Proxy passwordHasło Proxy
-
- Type
- Typ
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)
-
+ localhost *.example.com (space separated)localhost *.example.com (oddzielone spacją)
-
+ Use proxy for DNS lookups?Używać proxy dla zapytań DNS?
@@ -1004,40 +999,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionKolekcje
-
+ AdvancedZaawansowane
-
+ AllWszystkie
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ ServicesUsługi
-
+ Install resolver from file
-
+ InformationInformacja
-
-
- Changing this setting requires a restart of Tomahawk!
- Zmiana tych ustawień wymaga ponownego uruchomienia Tomahawka!
- SocialPlaylistWidget
@@ -1197,6 +1192,7 @@ connect and stream from you?
+ Latest AdditionsOstatnio Dodane
@@ -1215,6 +1211,31 @@ connect and stream from you?
SuperCollectionSuperkolekcja
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1432,6 +1453,46 @@ indywidualnego profilu gustu.
Time between scans, in seconds:Czas pomiędzy skanami, w sekundach:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1448,50 +1509,35 @@ indywidualnego profilu gustu.
-
- Advanced Network Settings
- Zaawansowane Ustawienia Sieci
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Jeśli masz problemy z łączeniem się z innymi, spróbuj ustawić tutaj swój zewnętrzny adres IP/nazwę hosta i numer portu (domyślnie 50210). Upewnij się, że przekierowujesz port na tą maszynę!
-
-
-
+ Static Host Name:Nazwa statycznego hosta:
-
+ Static Port:Statyczny Port:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Zawsze używać statycznej nazwy hosta/portu? (Nadpisuje wykrywanie/przekierowanie UPnP)
-
-
-
+ Proxy Settings...Ustawienia Proxy...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashedWysyłaj zgłoszenia po awarii Tomahawka
-
+ Allow web browsers to interact with Tomahawk (recommended)
-
-
- Use UPnP to establish port forward
- Używaj UPnP, aby uzyskać przekierowanie portu
- Tomahawk::Accounts::AccountDelegate
@@ -2415,29 +2461,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
-
+ Loved Tracks
-
+ Hyped Tracks
-
+ Top Artists
-
+ Hyped Artists
@@ -2511,37 +2557,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and i
-
+ YouTy
-
+ youty
-
+ andi
-
+ %n other(s)%n inny%n inne%n innych
-
+ %1 people
-
+ loved this track
@@ -2638,39 +2684,39 @@ wprowadź pokazany numer PIN tutaj:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
-
+
+ Hide Tomahawk WindowUkryj Okno Tomahawka
-
+ Show Tomahawk WindowPokaż Okno Tomahawka
-
+ Currently not playing.Aktualnie nie odtwarza.
-
+ PlayOdtwarzaj
-
+ PausePauza
-
+ &Continue Playback after current Track
@@ -2814,7 +2860,7 @@ wprowadź pokazany numer PIN tutaj:
-
+ PlayOdtwarzaj
@@ -2845,126 +2891,126 @@ wprowadź pokazany numer PIN tutaj:
Sprawdź uaktualnienia...
-
-
-
+
+
+ Connect To Peer
-
+ Enter peer address:
-
+ Enter peer port:
-
+ Enter peer key:
-
+ XSPF ErrorBłąd XSPF
-
+ This is not a valid XSPF playlist.To nie jest poprawna lista XSPF.
-
+ Failed to save tracksNie udało się zapisać utworów
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Niektóre utwory na liście nie zawierają artysty i tytułu. Zostaną one zignorowane.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New StationUtwórz Nową Stację
-
+ Name:Nazwa:
-
+ New StationNowa stacja
-
+ New PlaylistNowa Lista
-
+ PausePauza
-
+ Go &offlinePrzejdź do trybu &offline
-
+ Go &onlinePrzejdź do trybu &online
-
+ Authentication ErrorBłąd uwierzytelniania
-
+ %1 by %2track, artist name%1 wykonawcy %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About Tomahawk
@@ -3040,6 +3086,79 @@ wprowadź pokazany numer PIN tutaj:
Hity na Topie
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3268,20 +3387,30 @@ Zawsze możesz ponownie wysłać wiadomość synchronizacyjną - po prostu wyśl
ViewManager
-
+ SuperCollectionSuperKolekcja
-
+ Combined libraries of all your online friendsPołączone biblioteki wszystkich twoich znajomych online
-
+ All available albumsWszystkie dostępne albumy
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/lang/tomahawk_pt_BR.ts b/lang/tomahawk_pt_BR.ts
index 010abfd32..a46891f9a 100644
--- a/lang/tomahawk_pt_BR.ts
+++ b/lang/tomahawk_pt_BR.ts
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.Depois que você escanear a sua biblioteca musical você encontrará aqui o último álbum adicionado.
-
+ This collection doesn't have any recent albums.Essa biblioteca não tem nenhum álbum recente.
@@ -793,58 +793,53 @@ connect and stream from you?
Configurações de proxy
-
+ Hostname of proxy serverEndereço do servidor proxy
-
+ HostServidor
-
+ PortPorta
-
+ Proxy loginUsuário do servidor proxy
-
+ UserUsuário
-
+ PasswordSenha
-
+ Proxy passwordSenha do servidor proxy
-
- Type
- Tipo
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)
-
+ localhost *.example.com (space separated)localhost *.exemplo.com (separado por espaço)
-
+ Use proxy for DNS lookups?Usar proxy para resolução DNS?
@@ -1004,40 +999,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionBiblioteca
-
+ AdvancedAvançado
-
+ All
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ Services
-
+ Install resolver from file
-
+ InformationInformação
-
-
- Changing this setting requires a restart of Tomahawk!
- Mudando essas contigurações será necessário reiniciar o Tomahawk!
- SocialPlaylistWidget
@@ -1197,6 +1192,7 @@ connect and stream from you?
+ Latest Additions
@@ -1215,6 +1211,31 @@ connect and stream from you?
SuperCollection
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1431,6 +1452,46 @@ connect and stream from you?
Time between scans, in seconds:Tempo entre os escaneos, em segundos:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1447,50 +1508,35 @@ connect and stream from you?
-
- Advanced Network Settings
- Configurações de rede avançadas
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Se você está tendo dificuldade em conectar-se com outros pares tente colocar o seu endereço IP externo e número da porta (padrão 50210) Não se esqueça de redirecionar essa porta para este dispositivo!
-
-
-
+ Static Host Name:Nome do servidor estático:
-
+ Static Port:Porta estática:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Usar sempre nome de dispositivo/porta? (Substituirá as configurações de UPnP/port forwarding)
-
-
-
+ Proxy Settings...Configurações de proxy...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashedEnviar informações caso o Tomahawk trave
-
+ Allow web browsers to interact with Tomahawk (recommended)Permitir que navegadores web interajam com o Tomahawk (recomendado)
-
-
- Use UPnP to establish port forward
- Usar UPnP para estabelecer port forward
- Tomahawk::Accounts::AccountDelegate
@@ -2414,31 +2460,31 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
- Faixas principais
+
-
+ Loved Tracks
- Faixas favoritas
+
-
+ Hyped Tracks
- Faixas mais populares
+
-
+ Top Artists
- Artistas principais
+
-
+ Hyped Artists
- Artistas mais populares
+
@@ -2510,37 +2556,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and e
-
+ You
-
+ you
-
+ ande
-
+ %n other(s)
-
+ %1 people%1 pessoas
-
+ loved this track
@@ -2637,39 +2683,39 @@ colocar o número PIN mostrado aqui:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
-
+
+ Hide Tomahawk WindowEsconder janela do Tomahawk
-
+ Show Tomahawk WindowMostrar janela do Tomahawk
-
+ Currently not playing.Não reproduzindo nada.
-
+ PlayReporduzir
-
+ PausePausar
-
+ &Continue Playback after current Track
@@ -2813,7 +2859,7 @@ colocar o número PIN mostrado aqui:
-
+ PlayReporduzir
@@ -2844,126 +2890,126 @@ colocar o número PIN mostrado aqui:
Buscar atualizações...
-
-
-
+
+
+ Connect To PeerConectar-se ao par
-
+ Enter peer address:Coloque o endereço do par:
-
+ Enter peer port:Coloque a porta do par:
-
+ Enter peer key:Coloque a chave do par:
-
+ XSPF ErrorErro de XSPF
-
+ This is not a valid XSPF playlist.Esta não é uma lista de reprodução XSPF válida.
-
+ Failed to save tracksFalha ao salvar faixas
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Algumas faixas da lista de reprodução não contem artista e título. Estas serão ignoradas.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New StationCriar uma nova estação
-
+ Name:Nome:
-
+ New StationNova estação
-
+ New PlaylistNova lista de reprodução
-
+ PausePausar
-
+ Go &offlineDesc&onectar
-
+ Go &onlineC&onectar
-
+ Authentication ErrorErro de autenticação
-
+ %1 by %2track, artist name%1 de %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2><h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2><h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About TomahawkSobre o Tomahawk
@@ -3039,6 +3085,79 @@ colocar o número PIN mostrado aqui:
Maiores sucessos
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3267,20 +3386,30 @@ Você pode enviar uma outra mensagem de sincronia a qualquer momento simplesment
ViewManager
-
+ SuperCollection
-
+ Combined libraries of all your online friends
-
+ All available albumsTodos os álbuns disponíveis
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/lang/tomahawk_ru.ts b/lang/tomahawk_ru.ts
index 69eb9ba41..772cd7517 100644
--- a/lang/tomahawk_ru.ts
+++ b/lang/tomahawk_ru.ts
@@ -184,12 +184,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.После сканирования вашей музыкальной коллекции вы найдете свой альбомы тут.
-
+ This collection doesn't have any recent albums.Эта коллекция не имеет последних альбомов.
@@ -794,59 +794,54 @@ connect and stream from you?
Настройки прокси
-
+ Hostname of proxy serverИмя хоста прокси сервера
-
+ HostХост
-
+ PortПорт
-
+ Proxy loginВведите логин
-
+ UserЛогин
-
+ PasswordПароль
-
+ Proxy passwordВведите пароль
-
- Type
- Тип прокси
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)Не использовать прокси:
(Переопределение прокси)
-
+ localhost *.example.com (space separated)
-
+ Use proxy for DNS lookups?Использовать прокси для поиска DNS?
@@ -1006,40 +1001,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionКоллекция
-
+ AdvancedДополнительны
-
+ AllВсе
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ ServicesСервисы
-
+ Install resolver from fileУстановить resolver из файла
-
+ InformationИнофрмация
-
-
- Changing this setting requires a restart of Tomahawk!
- Изменение этого параметра требует перезапуска Tomahawk!
- SocialPlaylistWidget
@@ -1199,6 +1194,7 @@ connect and stream from you?
+ Latest AdditionsПоследние добавленные
@@ -1217,6 +1213,31 @@ connect and stream from you?
SuperCollectionОбщая коллекция
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1430,6 +1451,46 @@ connect and stream from you?
Time between scans, in seconds:Время между сканированием, в секундах:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1446,50 +1507,35 @@ connect and stream from you?
Фильтр по возможности:
-
- Advanced Network Settings
- Дополнительные настройки сети
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
- Если у вас возникли трудности при подключении к друзьям, попробуйте установить ваш внешний IP адрес / имя хоста и номер порта (по умолчанию 50210). Убедитесь в том, что порт сободен на этой машине!
-
-
-
+ Static Host Name:Статическое имя хоста:
-
+ Static Port:Статический порт:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
- Всегда используйте статическое имя хоста / порта? (Переопределяет UPnP открытие / перенаправления портов)
-
-
-
+ Proxy Settings...Настройки прокси...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashedОтправить отчет после падения Tomahawk
-
+ Allow web browsers to interact with Tomahawk (recommended)
-
-
- Use UPnP to establish port forward
- Использовать UPnP для установки портов
- Tomahawk::Accounts::AccountDelegate
@@ -2416,29 +2462,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
- Топ песен
+
-
+ Loved Tracks
- Любимые песни
+
-
+ Hyped Tracks
-
+ Top Artists
- Любимые исполнители
+
-
+ Hyped Artists
@@ -2512,37 +2558,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and и
-
+ YouТы
-
+ youты
-
+ andи
-
+ %n other(s)
-
+ %1 people%1 человек
-
+ loved this trackлюбимый
@@ -2638,39 +2684,39 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track&Остановить после текущего трека
-
-
+
+ Hide Tomahawk WindowСпрятать окно Tomahawk
-
+ Show Tomahawk WindowПоказать окно Tomahawk
-
+ Currently not playing.Не воспроизводится.
-
+ PlayИграть
-
+ PauseПауза
-
+ &Continue Playback after current Track&Продолжить воспроизведение после текущего трека
@@ -2814,7 +2860,7 @@ enter the displayed PIN number here:
-
+ PlayИграть
@@ -2845,126 +2891,126 @@ enter the displayed PIN number here:
Проверить обновления...
-
-
-
+
+
+ Connect To PeerСвязаться с Peer
-
+ Enter peer address:Введите адрес узла:
-
+ Enter peer port:Введите адрес порта:
-
+ Enter peer key:Введите адрес ключа:
-
+ XSPF ErrorОшибка XSPF
-
+ This is not a valid XSPF playlist.Это не является допустимым XSPF плейлистом.
-
+ Failed to save tracksНе удалось сохранить песни
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Некоторые треки в плейлисте не содержат исполнителя и название. Они будут проигнорированы.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New StationСоздать новую станцию
-
+ Name:Имя:
-
+ New StationНовая станция
-
+ New PlaylistНовый плейлист
-
+ PauseПауза
-
+ Go &offlineОтключиться
-
+ Go &onlineПодлючиться
-
+ Authentication ErrorОшибка авторизации
-
+ %1 by %2track, artist name
-
+ %1 - %2current track, some window title
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2><h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2><h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve RobertsonCopyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About TomahawkО Tomahawk
@@ -3040,6 +3086,79 @@ enter the displayed PIN number here:
Хиты
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3267,20 +3386,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollectionОбщая коллекция
-
+ Combined libraries of all your online friendsКомбинированные библиотек всех ваших друзей онлайн
-
+ All available albumsДоступные альбомы
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/lang/tomahawk_sv.ts b/lang/tomahawk_sv.ts
index 097092dca..d705f6b33 100644
--- a/lang/tomahawk_sv.ts
+++ b/lang/tomahawk_sv.ts
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.Efter att du har scannat din musiksamling kommer du finna dina senaste tillagda album här.
-
+ This collection doesn't have any recent albums.Den här samlingen inga nya album.
@@ -793,59 +793,54 @@ connect and stream from you?
Proxyinställningar
-
+ Hostname of proxy serverVärdnamn för proxyservern
-
+ HostVärdnamn
-
+ PortPort
-
+ Proxy loginProxy login
-
+ UserAnvändare
-
+ PasswordLösenord
-
+ Proxy passwordProxy lösenord
-
- Type
- Typ
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)Ingen Proxy host
(Skriver över systemproxyn)
-
+ localhost *.example.com (space separated)localhost *.example.com (separeras med mellanslag)
-
+ Use proxy for DNS lookups?Använd proxy för DNS kontroll?
@@ -1005,40 +1000,40 @@ connect and stream from you?
SettingsDialog
-
+ CollectionSamling
-
+ AdvancedAvancerat
-
+ AllAlla
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ ServicesTjänster
-
+ Install resolver from fileInstallera resolver från fil
-
+ InformationInformation
-
-
- Changing this setting requires a restart of Tomahawk!
- Ändring av detta kräver omstart av Tomahawk!
- SocialPlaylistWidget
@@ -1198,6 +1193,7 @@ connect and stream from you?
+ Latest AdditionsSenast tillagda
@@ -1216,6 +1212,31 @@ connect and stream from you?
SuperCollectionSuperCollection
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1429,6 +1450,46 @@ connect and stream from you?
Time between scans, in seconds:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1445,50 +1506,35 @@ connect and stream from you?
-
- Advanced Network Settings
- Avancerade nätverksinställningar
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
-
-
-
-
+ Static Host Name:
-
+ Static Port:Statisk port:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
-
-
-
-
+ Proxy Settings...Proxyinställningar...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashed
-
+ Allow web browsers to interact with Tomahawk (recommended)
-
-
- Use UPnP to establish port forward
-
- Tomahawk::Accounts::AccountDelegate
@@ -2410,29 +2456,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
-
+ Loved Tracks
-
+ Hyped Tracks
-
+ Top Artists
-
+ Hyped Artists
@@ -2506,37 +2552,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and
-
+ You
-
+ you
-
+ and
-
+ %n other(s)
-
+ %1 people
-
+ loved this track
@@ -2632,39 +2678,39 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
-
+
+ Hide Tomahawk WindowDölj Tomahawk-fönstret
-
+ Show Tomahawk WindowVisa Tomahawk-fönstret
-
+ Currently not playing.Spelar ingenting för närvarande.
-
+ PlaySpela upp
-
+ PausePaus
-
+ &Continue Playback after current Track
@@ -2808,7 +2854,7 @@ enter the displayed PIN number here:
-
+ PlaySpela upp
@@ -2839,126 +2885,126 @@ enter the displayed PIN number here:
Leta efter uppdateringar...
-
-
-
+
+
+ Connect To PeerAnslut till klient
-
+ Enter peer address:Ange klientadress:
-
+ Enter peer port:Ange klientport:
-
+ Enter peer key:Ange klientnyckel:
-
+ XSPF ErrorXSPF-fel
-
+ This is not a valid XSPF playlist.Detta är inte en giltig XSPF-spellista.
-
+ Failed to save tracksMisslyckades med att spara spår
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.Några spår i spellistan innehåller inte någon artist och titel. De kommer att ignoreras.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New StationSkapa ny station
-
+ Name:Namn:
-
+ New StationNy station
-
+ New PlaylistNy spellista
-
+ PausePaus
-
+ Go &offlineKoppla &från
-
+ Go &onlineA&nslut
-
+ Authentication ErrorAutentiseringsfel
-
+ %1 by %2track, artist name%1 av %2
-
+ %1 - %2current track, some window title%1 - %2
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About Tomahawk
@@ -3034,6 +3080,79 @@ enter the displayed PIN number here:
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3257,20 +3376,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollection
-
+ Combined libraries of all your online friends
-
+ All available albumsAlla tillgängliga album
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/lang/tomahawk_tr.ts b/lang/tomahawk_tr.ts
new file mode 100644
index 000000000..aee211ce3
--- /dev/null
+++ b/lang/tomahawk_tr.ts
@@ -0,0 +1,3791 @@
+
+
+ AccountFactoryWrapper
+
+
+ Dialog
+ İletişim Kutusu
+
+
+
+ Description goes here
+ Buraya açıklama gelecek
+
+
+
+ Add Account
+ Hesap Ekle
+
+
+
+ AccountFactoryWrapperDelegate
+
+
+ Online
+ Çevrimiçi
+
+
+
+ Connecting...
+ Bağlanıyor...
+
+
+
+ Offline
+ Çevrimdışı
+
+
+
+ AclJobDelegate
+
+
+ Error displaying ACL info
+
+
+
+
+
+ Allow %1 to
+connect and stream from you?
+
+
+
+
+ ActionCollection
+
+
+ &Listen Along
+ &Birlikte Dinle
+
+
+
+ Stop &Listening Along
+ &Birlikte Dinlemeyi Durdur
+
+
+
+ &Follow in real-time
+ &Gerçek zamanlı takip et
+
+
+
+
+ &Listen Privately
+ &Gizli Dinle
+
+
+
+
+ &Listen Publicly
+ &Yayınlayarak Dinle
+
+
+
+ &Load Playlist
+ &Şarkı Listesini Yükle
+
+
+
+ &Rename Playlist
+ &Şarkı Listesini Yeniden Adlandır
+
+
+
+ &Copy Playlist Link
+ &Şarkı Listesinin Bağlantısını Kopyala
+
+
+
+ &Play
+ &Yürüt
+
+
+
+ &Stop
+ &Durdur
+
+
+
+ &Previous Track
+ &Önceki Parça
+
+
+
+ &Next Track
+ &Sonraki Parça
+
+
+
+ &Quit
+ &Çıkış
+
+
+
+ AlbumInfoWidget
+
+
+ Form
+ Form
+
+
+
+ Other Albums by Artist
+ Sanatçının Diğer Albümleri
+
+
+
+
+ Click to show Official Tracks
+ Resmi Parçaları Göstermek için Tıklayın
+
+
+
+
+ Click to show SuperCollection Tracks
+ SüperKoleksiyon Parçalarını Göstermek için Tıklayın
+
+
+
+
+ Click to show SuperCollection Albums
+ SüperKoleksiyon Albümlerini Göstermek için Tıklayın
+
+
+
+ Click to show Official Albums
+ Resmi Albümleri Göstermek için Tıklayın
+
+
+
+ Other Albums by %1
+ Diğer %1 Albümleri
+
+
+
+ AlbumModel
+
+
+ Album
+ Albüm
+
+
+
+
+ All albums from %1
+ Bütün %1 albümleri
+
+
+
+ All albums
+ Bütün albümler
+
+
+
+ AlbumView
+
+
+ After you have scanned your music collection you will find your latest album additions right here.
+ Müzik koleksiyonunuzu taradıktan sonra en son eklenen albümleri burada bulacaksınız.
+
+
+
+ This collection doesn't have any recent albums.
+ Bu koleksiyonda en son eklenen bir albüm yok.
+
+
+
+ ArtistInfoWidget
+
+
+ Form
+ Form
+
+
+
+ Top Hits
+ En Çok Dinlenenler
+
+
+
+ Related Artists
+ Benzer Sanatçılar
+
+
+
+ Albums
+ Albümler
+
+
+
+
+ Click to show SuperCollection Albums
+ SüperKoleksiyon Albümlerini göstermek için tıklayın
+
+
+
+ Click to show Official Albums
+ Resmi Albümleri görmek için tıklayın
+
+
+
+ ArtistView
+
+
+ After you have scanned your music collection you will find your tracks right here.
+ Müzik koleksiyonunuzu taradıktan parçalarınız tam burada bulacaksınız.
+
+
+
+ This collection is currently empty.
+ Bu koleksiyon şu anda boş.
+
+
+
+ Sorry, your filter '%1' did not match any results.
+ Üzgünüm, '%1' filtresi hiçbir sonuç getirmedi.
+
+
+
+ AudioControls
+
+
+ Prev
+ Geri
+
+
+
+ Play
+ Yürüt
+
+
+
+ Pause
+ Duraklat
+
+
+
+ Next
+ Sonraki
+
+
+
+ Artist
+ Sanatçı
+
+
+
+ Album
+ Albüm
+
+
+
+ Owner
+ Sahibi
+
+
+
+ social
+
+
+
+
+ love
+ beğen
+
+
+
+ Time
+ Süre
+
+
+
+ Time Left
+ Kalan Süre
+
+
+
+ Shuffle
+ Karışık
+
+
+
+ Repeat
+ Yenile
+
+
+
+ Low
+ Düşük
+
+
+
+ High
+ Yüksek
+
+
+
+ CategoryAddItem
+
+
+
+ New Playlist
+ Yeni Şarkı Listesi
+
+
+
+
+
+
+ New Station
+ Yeni İstasyon
+
+
+
+
+
+ %1 Station
+ %1 İstasyon
+
+
+
+ CategoryItem
+
+
+ Playlists
+ Şarkı Listeleri
+
+
+
+ Stations
+ İstasyonlar
+
+
+
+ ClearButton
+
+
+ Clear
+ Temizle
+
+
+
+ CollectionFlatModel
+
+
+ My Collection
+ Koleksiyonum
+
+
+
+ Collection of %1
+ %1 Koleksiyonu
+
+
+
+ CollectionView
+
+
+ This collection is empty.
+ Bu koleksiyon boş.
+
+
+
+ ContextWidget
+
+
+ InfoBar
+ BilgiÇubuğu
+
+
+
+
+ Show Footnotes
+ Dipnotları Göster
+
+
+
+ Hide Footnotes
+ Dipnotları Gizle
+
+
+
+ CrashReporter
+
+
+ Tomahawk Crash Reporter
+ Tomahawk Çökme Raporcusu
+
+
+
+ <p><b>Sorry!</b> Tomahawk crashed. Information about the crash is now being sent to Tomahawk HQ so that we can fix the bug.</p>
+ <p><b>Üzgünüm!</b> Tomahawk çöktü. Hatayı çözmebilmemiz için çökme ile ilgili bilgi şu anda Tomahawk Merkezine gönderiliyor.<p>
+
+
+
+ Abort
+ Vazgeç
+
+
+
+ You can disable sending crash reports in the configuration dialog.
+ Çökme raporu göndermeyi yapılandırma iletişim kutusundan devre dışı bırakabilirsiz.
+
+
+
+ Uploaded %L1 of %L2 KB.
+ %L2 içinden %L1 KB karşıya yüklendin.
+
+
+
+
+ Close
+ Kapat.
+
+
+
+ Sent! <b>Many thanks</b>.
+ Gönderildi! <b>Çok teşekkürler.</b>.
+
+
+
+ Failed to send crash info.
+ Çökme bilgisi gönderimi başarısız.
+
+
+
+ DatabaseCommand_AllAlbums
+
+
+ Unknown
+ Bilinmeyen
+
+
+
+ DelegateConfigWrapper
+
+
+ About
+
+
+
+
+ Delete Account
+ Hesabı Sil
+
+
+
+ About this Account
+
+
+
+
+ DiagnosticsDialog
+
+
+ Tomahawk Diagnostics
+ Tomahawk Tanılama
+
+
+
+ Update
+ Güncelle
+
+
+
+ Copy to Clipboard
+ Pano'ya Kopyala
+
+
+
+ DropJob
+
+
+ No tracks found for given %1
+ Verilen %1 için hiç parça bulunamadı.
+
+
+
+ GlobalSearchWidget
+
+
+ Form
+ Form
+
+
+
+ IndexingJobItem
+
+
+ Indexing database
+ Veritabanı dizini oluşturuluyor
+
+
+
+ InfoBar
+
+
+ InfoBar
+ BilgiÇubuğu
+
+
+
+ Filter...
+ Filtre...
+
+
+
+ JobStatusView
+
+
+ Searching For
+ Şunu Ara:
+
+
+
+ Pending
+ Beklemede
+
+
+
+ Idle
+ Boşta
+
+
+
+ LastFmConfig
+
+
+ Form
+ Form
+
+
+
+ Scrobble tracks to Last.fm
+ Dinlediğim şarkıların bilgisini Last.fm'e gönder.
+
+
+
+ Username:
+ Kullanıcı adı:
+
+
+
+ Password:
+ Parola:
+
+
+
+ Test Login
+ Bilgileri Test Et
+
+
+
+ LastfmContext
+
+
+ Last.fm
+ Last.fm
+
+
+
+ LatchedStatusItem
+
+
+ %1 is listening along to you!
+ %1 sizle birlikte dinliyor!
+
+
+
+ LoadXSPF
+
+
+ Load XSPF
+ XSPF Yükle
+
+
+
+ Playlist URL
+ Şarkı Listesi URL'si
+
+
+
+ Enter URL...
+ URL Girin...
+
+
+
+ ...
+ ...
+
+
+
+ Automatically update
+ Otomatik güncelle
+
+
+
+ LoadXSPFDialog
+
+
+ Load XSPF File
+ XSPF Dosyası Yükle
+
+
+
+ XSPF Files (*.xspf)
+ XSPF Dosyaları (*.xspf)
+
+
+
+ LocalCollection
+
+
+ Bookmarks
+ Sık Kullanılanlar
+
+
+
+ Saved tracks
+ Kaydedilen parçalar
+
+
+
+ NewPlaylistWidget
+
+
+ Enter a title for the new playlist:
+ Yeni şarkı listesi için bir başlık girin:
+
+
+
+ Tomahawk offers a variety of ways to help you create playlists and find music you enjoy!
+ Tomahawk şarkı listeleri yaratmak ve zevk alacağınız şarkılar bulmanıza yardımcı olmak için çeşitli yollar sunar!
+
+
+
+ Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist:
+ Bir tarz yada etiket girin ve Tomahawk size yeni şarkı listenizi başlatmak için birkaç şarkı sunacak.
+
+
+
+ &Create Playlist
+ &Şarkı Listesi Yarat
+
+
+
+ Create a new playlist
+ Yeni şarkı listesi yarat
+
+
+
+ NewReleasesWidget
+
+
+ New Releases
+
+
+
+
+ PlaylistItemDelegate
+
+
+ played %1 by you
+
+
+
+
+ played %1 by %2
+
+
+
+
+ PlaylistLargeItemDelegate
+
+
+ played %1 by you
+
+
+
+
+ played %1 by %2
+
+
+
+
+ added %1
+
+
+
+
+ PlaylistModel
+
+
+ A playlist by %1, created %2
+
+
+
+
+ you
+
+
+
+
+ All tracks by %1 on album %2
+
+
+
+
+ All tracks by %1
+
+
+
+
+ PlaylistTypeSelectorDlg
+
+
+ New Playlist
+
+
+
+
+ Just a regular old playlist... Give it a name, drag in some tracks, and go!
+
+
+
+
+ Don't know exactly what you want? Give Tomahawk a few pointers and let it build a playlist for you!
+
+
+
+
+ Name:
+
+
+
+
+ New Playlist...
+
+
+
+
+ Create Manual Playlist
+
+
+
+
+ Create Automatic Playlist
+
+
+
+
+ PlaylistView
+
+
+ This playlist is currently empty. Add some tracks to it and enjoy the music!
+
+
+
+
+ ProxyDialog
+
+
+ Proxy Settings
+
+
+
+
+ Hostname of proxy server
+
+
+
+
+ Host
+
+
+
+
+ Port
+
+
+
+
+ Proxy login
+
+
+
+
+ User
+
+
+
+
+ Password
+
+
+
+
+ Proxy password
+
+
+
+
+ No Proxy Hosts:
+(Overrides system proxy)
+
+
+
+
+ localhost *.example.com (space separated)
+
+
+
+
+ Use proxy for DNS lookups?
+
+
+
+
+ QObject
+
+
+ %n year(s) ago
+
+
+
+
+ %n year(s)
+
+
+
+
+ %n month(s) ago
+
+
+
+
+ %n month(s)
+
+
+
+
+ %n week(s) ago
+
+
+
+
+ %n week(s)
+
+
+
+
+ %n day(s) ago
+
+
+
+
+ %n day(s)
+
+
+
+
+ %n hour(s) ago
+
+
+
+
+ %n hour(s)
+
+
+
+
+ %1 minutes ago
+
+
+
+
+ %1 minutes
+
+
+
+
+ just now
+
+
+
+
+ Friend Finders
+
+
+
+
+ Music Finders
+
+
+
+
+ Status Updaters
+
+
+
+
+ QuaZipFilePrivate
+
+
+ ZIP/UNZIP API error %1
+
+
+
+
+ QueueView
+
+
+ InfoBar
+
+
+
+
+
+ Show Queue
+
+
+
+
+ Hide Queue
+
+
+
+
+ RelatedArtistsContext
+
+
+ Related Artists
+
+
+
+
+ ResolverConfigDelegate
+
+
+ Not found: %1
+
+
+
+
+ Failed to load: %1
+
+
+
+
+ SearchLineEdit
+
+
+ Search
+
+
+
+
+ SearchWidget
+
+
+ Search: %1
+
+
+
+
+ Results for '%1'
+
+
+
+
+ SettingsDialog
+
+
+ Collection
+
+
+
+
+ Advanced
+
+
+
+
+ All
+
+
+
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+
+ Services
+
+
+
+
+ Install resolver from file
+
+
+
+
+ Information
+
+
+
+
+ SocialPlaylistWidget
+
+
+ Popular New Albums From Your Friends
+
+
+
+
+ Most Played Playlists
+
+
+
+
+ Most Played Tracks You Don't Have
+
+
+
+
+ SocialWidget
+
+
+ Form
+
+
+
+
+ Facebook
+
+
+
+
+ Twitter
+
+
+
+
+ Cover
+
+
+
+
+ TextLabel
+
+
+
+
+ Listening to "%1" by %2 and loving it! %3
+
+
+
+
+ Listening to "%1" by %2 on "%3" and loving it! %4
+
+
+
+
+ %1 characters left
+
+
+
+
+ SourceDelegate
+
+
+ Track
+
+
+
+
+ Album
+
+
+
+
+ Artist
+
+
+
+
+ Local
+
+
+
+
+ Top 10
+
+
+
+
+ Offline
+
+
+
+
+ All available tracks
+
+
+
+
+ Online
+
+
+
+
+
+ Show
+
+
+
+
+
+ Hide
+
+
+
+
+ SourceInfoWidget
+
+
+ Recent Albums
+
+
+
+
+ Latest Additions
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ New Additions
+
+
+
+
+ My recent activity
+
+
+
+
+ Recent activity from %1
+
+
+
+
+ SourceItem
+
+
+ Collection
+
+
+
+
+
+ Latest Additions
+
+
+
+
+ Recently Played
+
+
+
+
+ Loved Tracks
+
+
+
+
+ SuperCollection
+
+
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+
+
+
+ SourceTreeView
+
+
+ &Copy Link
+
+
+
+
+ &Delete %1
+
+
+
+
+ &Export Playlist
+
+
+
+
+ Save XSPF
+
+
+
+
+ Playlists (*.xspf)
+
+
+
+
+ SourcesModel
+
+
+ Group
+
+
+
+
+ Collection
+
+
+
+
+ Playlist
+
+
+
+
+ Automatic Playlist
+
+
+
+
+ Station
+
+
+
+
+ Browse
+
+
+
+
+ Search History
+
+
+
+
+ My Music
+
+
+
+
+ SuperCollection
+
+
+
+
+ Top Loved Tracks
+
+
+
+
+ Dashboard
+
+
+
+
+ Recently Played
+
+
+
+
+ Charts
+
+
+
+
+ New Releases
+
+
+
+
+ Friends
+
+
+
+
+ SpotifyConfig
+
+
+ Form
+
+
+
+
+ Configure your Spotify account
+
+
+
+
+ Username or Facebook Email
+
+
+
+
+ Log In
+
+
+
+
+ Right click on any Tomahawk playlist to sync it to Spotify.
+
+
+
+
+ High Quality Streams
+
+
+
+
+ Spotify playlists to keep in sync:
+
+
+
+
+ Delete Tomahawk playlist when removing synchronization
+
+
+
+
+ Username:
+
+
+
+
+ Password:
+
+
+
+
+ SpotifyPlaylistUpdater
+
+
+ Delete in Spotify?
+
+
+
+
+ Would you like to delete the corresponding Spotify playlist as well?
+
+
+
+
+ StackedSettingsDialog
+
+
+ Tomahawk Settings
+
+
+
+
+ Local Music Information
+
+
+
+
+ Path to scan for music files:
+
+
+
+
+ The Echo Nest supports keeping track of your catalog metadata
+ and using it to craft personalized radios. Enabling this option
+ will allow you (and all your friends) to create automatic playlists
+ and stations based on your personal taste profile.
+
+
+
+
+ Upload collection list to The Echo Nest to enable user radio
+
+
+
+
+ Watch for changes
+
+
+
+
+ Time between scans, in seconds:
+
+
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+
+
+
+ Internet Services
+
+
+
+
+ Install from file...
+
+
+
+
+ Filter by capability:
+
+
+
+
+ Static Host Name:
+
+
+
+
+ Static Port:
+
+
+
+
+ Proxy Settings...
+
+
+
+
+ Other Settings
+
+
+
+
+ Send reports after Tomahawk crashed
+
+
+
+
+ Allow web browsers to interact with Tomahawk (recommended)
+
+
+
+
+ Tomahawk::Accounts::AccountDelegate
+
+
+ Add Account
+
+
+
+
+ Remove Account
+
+
+
+
+ %1 downloads
+
+
+
+
+ Online
+
+
+
+
+ Connecting...
+
+
+
+
+ Offline
+
+
+
+
+ Tomahawk::Accounts::GoogleWrapper
+
+
+ Configure this Google Account
+
+
+
+
+ Google Address
+
+
+
+
+ Enter your Google login to connect with your friends using Tomahawk!
+
+
+
+
+ username@gmail.com
+
+
+
+
+ Tomahawk::Accounts::GoogleWrapperFactory
+
+
+ Connect to Google Talk to find your friends
+
+
+
+
+ Tomahawk::Accounts::GoogleWrapperSip
+
+
+ Add Friend
+
+
+
+
+ Enter Google Address:
+
+
+
+
+ Tomahawk::Accounts::LastFmAccountFactory
+
+
+ Scrobble your tracks to last.fm, and find freely downloadable tracks to play
+
+
+
+
+ Tomahawk::Accounts::LastFmConfig
+
+
+ Test Login
+
+
+
+
+
+ Failed
+
+
+
+
+ Success
+
+
+
+
+ Could not contact server
+
+
+
+
+ Tomahawk::Accounts::SpotifyAccount
+
+
+ Sync with Spotify
+
+
+
+
+ Stop syncing with Spotify
+
+
+
+
+ Tomahawk::Accounts::SpotifyAccountConfig
+
+
+ Logging in...
+
+
+
+
+ Logged in!
+
+
+
+
+ Failed: %1
+
+
+
+
+ Log In
+
+
+
+
+ Tomahawk::Accounts::SpotifyAccountFactory
+
+
+ Play music from and sync your playlists with Spotify Premium
+
+
+
+
+ Tomahawk::Accounts::TwitterAccountFactory
+
+
+ Connect to your Twitter followers.
+
+
+
+
+ Tomahawk::Accounts::TwitterConfigWidget
+
+
+
+
+ Tweet!
+
+
+
+
+
+ Status: No saved credentials
+
+
+
+
+
+
+ Authenticate
+
+
+
+
+
+ Status: Credentials saved for %1
+
+
+
+
+
+ De-authenticate
+
+
+
+
+
+
+
+
+
+
+ Tweetin' Error
+
+
+
+
+ The credentials could not be verified.
+You may wish to try re-authenticating.
+
+
+
+
+ Status: Error validating credentials
+
+
+
+
+ Global Tweet
+
+
+
+
+ Direct Message
+
+
+
+
+ Send Message!
+
+
+
+
+ @Mention
+
+
+
+
+ Send Mention!
+
+
+
+
+ You must enter a user name for this type of tweet.
+
+
+
+
+ Your saved credentials could not be loaded.
+You may wish to try re-authenticating.
+
+
+
+
+ Your saved credentials could not be verified.
+You may wish to try re-authenticating.
+
+
+
+
+
+ There was an error posting your status -- sorry!
+
+
+
+
+
+ Tweeted!
+
+
+
+
+ Your tweet has been posted!
+
+
+
+
+ There was an error posting your direct message -- sorry!
+
+
+
+
+ Your message has been posted!
+
+
+
+
+ Tomahawk::Accounts::XmppAccountFactory
+
+
+ Log on to your Jabber/XMPP account to connect to your friends
+
+
+
+
+ Tomahawk::Accounts::ZeroconfFactory
+
+
+ Automatically connect to Tomahawks on the local network
+
+
+
+
+ Tomahawk::ContextMenu
+
+
+ &Play
+
+
+
+
+
+
+ Add to &Queue
+
+
+
+
+
+ &Love
+
+
+
+
+ &Copy Track Link
+
+
+
+
+ Show &Album page
+
+
+
+
+ Show &Artist page
+
+
+
+
+ Un-&Love
+
+
+
+
+ &Delete Items
+
+
+
+
+ &Continue Playback after this Track
+
+
+
+
+ &Stop Playback after this Track
+
+
+
+
+ &Delete Item
+
+
+
+
+ Tomahawk::CustomPlaylistView
+
+
+ Top Loved Tracks
+
+
+
+
+ Your loved tracks
+
+
+
+
+ %1's loved tracks
+
+
+
+
+ The most loved tracks from all your friends
+
+
+
+
+ All of your loved tracks
+
+
+
+
+ All of %1's loved tracks
+
+
+
+
+ Tomahawk::DropJobNotifier
+
+
+ Fetching %1 from database
+
+
+
+
+ Parsing %1 %2
+
+
+
+
+ Tomahawk::DynamicControlList
+
+
+ Click to collapse
+
+
+
+
+ Tomahawk::DynamicModel
+
+
+
+ Could not find a playable track.
+
+Please change the filters or try again.
+
+
+
+
+ Failed to generate preview with the desired filters
+
+
+
+
+ Tomahawk::DynamicSetupWidget
+
+
+ Type:
+
+
+
+
+ Generate
+
+
+
+
+ Tomahawk::DynamicView
+
+
+ Add some filters above to seed this station!
+
+
+
+
+ Press Generate to get started!
+
+
+
+
+ Add some filters above, and press Generate to get started!
+
+
+
+
+ Tomahawk::DynamicWidget
+
+
+ Station ran out of tracks!
+
+Try tweaking the filters for a new set of songs to play.
+
+
+
+
+ Tomahawk::EchonestControl
+
+
+
+
+
+
+
+ is
+
+
+
+
+ from user
+
+
+
+
+
+ No users with Echo Nest Catalogs enabled. Try enabling option in Collection settings
+
+
+
+
+ similar to
+
+
+
+
+
+
+
+
+
+
+ Less
+
+
+
+
+
+
+
+
+
+
+ More
+
+
+
+
+ 0 BPM
+
+
+
+
+ 500 BPM
+
+
+
+
+ 0 secs
+
+
+
+
+ 3600 secs
+
+
+
+
+ -100 dB
+
+
+
+
+ 100 dB
+
+
+
+
+ Major
+
+
+
+
+ Minor
+
+
+
+
+ C
+
+
+
+
+ C Sharp
+
+
+
+
+ D
+
+
+
+
+ E Flat
+
+
+
+
+ E
+
+
+
+
+ F
+
+
+
+
+ F Sharp
+
+
+
+
+ G
+
+
+
+
+ A Flat
+
+
+
+
+ A
+
+
+
+
+ B Flat
+
+
+
+
+ B
+
+
+
+
+ Ascending
+
+
+
+
+ Descending
+
+
+
+
+ Tempo
+
+
+
+
+ Duration
+
+
+
+
+ Loudness
+
+
+
+
+ Artist Familiarity
+
+
+
+
+ Artist Hotttnesss
+
+
+
+
+ Song Hotttnesss
+
+
+
+
+ Latitude
+
+
+
+
+ Longitude
+
+
+
+
+ Mode
+
+
+
+
+ Key
+
+
+
+
+ Energy
+
+
+
+
+ Danceability
+
+
+
+
+ only by ~%1
+
+
+
+
+ similar to ~%1
+
+
+
+
+ with genre ~%1
+
+
+
+
+
+ from no one
+
+
+
+
+ My Collection
+
+
+
+
+ from %1 radio
+
+
+
+
+ with %1 %2
+
+
+
+
+ about %1 BPM
+
+
+
+
+ about %n minute(s) long
+
+
+
+
+ about %1 dB
+
+
+
+
+ at around %1%2 %3
+
+
+
+
+ in %1
+
+
+
+
+ in a %1 key
+
+
+
+
+ sorted in %1 %2 order
+
+
+
+
+ with a %1 mood
+
+
+
+
+ in a %1 style
+
+
+
+
+ Tomahawk::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
+
+
+
+
+ Tomahawk::GroovesharkParser
+
+
+ Error fetching Grooveshark information from the network!
+
+
+
+
+ Tomahawk::InfoSystem::ChartsPlugin
+
+
+ Top Overall
+
+
+
+
+ Artists
+
+
+
+
+ Albums
+
+
+
+
+ Tracks
+
+
+
+
+ Tomahawk::InfoSystem::FdoNotifyPlugin
+
+
+ Tomahawk is playing "%1" by %2%3.
+
+
+
+
+ on "%1"
+
+
+
+
+ Tomahawk::InfoSystem::LastFmInfoPlugin
+
+
+ Top Tracks
+
+
+
+
+ Loved Tracks
+
+
+
+
+ Hyped Tracks
+
+
+
+
+ Top Artists
+
+
+
+
+ Hyped Artists
+
+
+
+
+ Tomahawk::InfoSystem::NewReleasesPlugin
+
+
+ Albums
+
+
+
+
+ Tomahawk::InfoSystem::TwitterInfoPlugin
+
+
+ Listening to "%1" by %2 and loving it! %3
+
+
+
+
+ Tomahawk::ItunesParser
+
+
+ Error fetching iTunes information from the network!
+
+
+
+
+ Tomahawk::JSPFLoader
+
+
+ New Playlist
+
+
+
+
+ Failed to save tracks
+
+
+
+
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.
+
+
+
+
+ XSPF Error
+
+
+
+
+ This is not a valid XSPF playlist.
+
+
+
+
+ Tomahawk::LatchManager
+
+
+ &Catch Up
+
+
+
+
+
+ &Listen Along
+
+
+
+
+ Tomahawk::Query
+
+
+ and
+
+
+
+
+ You
+
+
+
+
+ you
+
+
+
+
+ and
+
+
+
+
+ %n other(s)
+
+
+
+
+ %1 people
+
+
+
+
+ loved this track
+
+
+
+
+ Tomahawk::RdioParser
+
+
+ Error fetching Rdio information from the network!
+
+
+
+
+ Tomahawk::ShortenedLinkParser
+
+
+ Network error parsing shortened link!
+
+
+
+
+ Tomahawk::Source
+
+
+
+ Scanning (%L1 tracks)
+
+
+
+
+ Scanning
+
+
+
+
+ Checking
+
+
+
+
+ Fetching
+
+
+
+
+ Parsing
+
+
+
+
+ Saving (%1%)
+
+
+
+
+ Tomahawk::SpotifyParser
+
+
+ Error fetching Spotify information from the network!
+
+
+
+
+ Tomahawk::XspfUpdater
+
+
+ Automatically update from XSPF
+
+
+
+
+ TomahawkApp
+
+
+ My Collection
+
+
+
+
+ TomahawkOAuthTwitter
+
+
+ Twitter PIN
+
+
+
+
+ After authenticating on Twitter's web site,
+enter the displayed PIN number here:
+
+
+
+
+ TomahawkTrayIcon
+
+
+
+ &Stop Playback after current Track
+
+
+
+
+
+ Hide Tomahawk Window
+
+
+
+
+ Show Tomahawk Window
+
+
+
+
+ Currently not playing.
+
+
+
+
+ Play
+
+
+
+
+ Pause
+
+
+
+
+ &Continue Playback after current Track
+
+
+
+
+ TomahawkWindow
+
+
+ Tomahawk
+
+
+
+
+ &Settings
+
+
+
+
+ &Controls
+
+
+
+
+ &Network
+
+
+
+
+ &Window
+
+
+
+
+ &Help
+
+
+
+
+ &Quit
+
+
+
+
+ Ctrl+Q
+
+
+
+
+ Go &Online
+
+
+
+
+ Add &Friend...
+
+
+
+
+ U&pdate Collection
+
+
+
+
+ Update Collection
+
+
+
+
+ &Configure Tomahawk...
+
+
+
+
+ Load &XSPF...
+
+
+
+
+ Create &New Playlist...
+
+
+
+
+ About &Tomahawk...
+
+
+
+
+ Create New &Automatic Playlist
+
+
+
+
+ Create New &Station
+
+
+
+
+ Show Offline Sources
+
+
+
+
+ Hide Offline Sources
+
+
+
+
+ Minimize
+
+
+
+
+ Ctrl+M
+
+
+
+
+ Zoom
+
+
+
+
+ Meta+Ctrl+Z
+
+
+
+
+ Diagnostics...
+
+
+
+
+ Fully &Rescan Collection
+
+
+
+
+ Fully Rescan Collection
+
+
+
+
+
+ Play
+
+
+
+
+ Space
+
+
+
+
+ Previous
+
+
+
+
+ Next
+
+
+
+
+ Global Search...
+
+
+
+
+
+ Check For Updates...
+
+
+
+
+
+
+ Connect To Peer
+
+
+
+
+ Enter peer address:
+
+
+
+
+ Enter peer port:
+
+
+
+
+ Enter peer key:
+
+
+
+
+ XSPF Error
+
+
+
+
+ This is not a valid XSPF playlist.
+
+
+
+
+ Failed to save tracks
+
+
+
+
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.
+
+
+
+
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
+
+
+
+
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
+
+
+
+
+ Create New Station
+
+
+
+
+ Name:
+
+
+
+
+ New Station
+
+
+
+
+ New Playlist
+
+
+
+
+ Pause
+
+
+
+
+ Go &offline
+
+
+
+
+ Go &online
+
+
+
+
+ Authentication Error
+
+
+
+
+ %1 by %2
+ track, artist name
+
+
+
+
+ %1 - %2
+ current track, some window title
+
+
+
+
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
+
+
+
+
+ <h2><b>Tomahawk %1</h2>
+
+
+
+
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
+
+
+
+
+ About Tomahawk
+
+
+
+
+ TopBar
+
+
+ Form
+
+
+
+
+ 0 Sources
+
+
+
+
+ 0 Tracks
+
+
+
+
+ 0 Artists
+
+
+
+
+ 0 Shown
+
+
+
+
+ Tracks
+
+
+
+
+ Artists
+
+
+
+
+ Filter
+
+
+
+
+ Artist View
+
+
+
+
+ Flat View
+
+
+
+
+ Sources
+
+
+
+
+ Shown
+
+
+
+
+ TopTracksContext
+
+
+ Top Hits
+
+
+
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+
+
+ TrackModel
+
+
+ Artist
+
+
+
+
+ Title
+
+
+
+
+ Album
+
+
+
+
+ Track
+
+
+
+
+ Duration
+
+
+
+
+ Bitrate
+
+
+
+
+ Age
+
+
+
+
+ Year
+
+
+
+
+ Size
+
+
+
+
+ Origin
+
+
+
+
+ Score
+
+
+
+
+ Composer
+
+
+
+
+ TrackView
+
+
+ Sorry, your filter '%1' did not match any results.
+
+
+
+
+ TransferStatusItem
+
+
+ from
+
+
+
+
+ to
+
+
+
+
+ TreeItemDelegate
+
+
+ Unknown
+
+
+
+
+ TreeModel
+
+
+ Name
+
+
+
+
+ Duration
+
+
+
+
+ Bitrate
+
+
+
+
+ Age
+
+
+
+
+ Year
+
+
+
+
+ Size
+
+
+
+
+ Origin
+
+
+
+
+ Composer
+
+
+
+
+ All Artists
+
+
+
+
+
+ My Collection
+
+
+
+
+
+ Collection of %1
+
+
+
+
+ TwitterConfigWidget
+
+
+ Configure this Twitter account
+
+
+
+
+ The Twitter plugin allows you to discover and play music from your Twitter friends running Tomahawk and post messages to your account.
+
+
+
+
+ Status: No saved credentials
+
+
+
+
+ Authenticate with Twitter
+
+
+
+
+ Twitter Connections
+
+
+
+
+
+If you only want to post tweets, you're done.
+
+If you want to connect Tomahawk to your friends using Twitter, select the type of tweet and press the button below to send a sync message. You must both be following each other as Direct Messages are used. Then be (very) patient -- it can take several minutes!
+
+You can re-send a sync message at any time simply by sending another tweet using the button.
+
+
+
+
+ Select the kind of tweet you would like, then press the button to post it:
+
+
+
+
+ Global Tweet
+
+
+
+
+ @Mention
+
+
+
+
+ Direct Message
+
+
+
+
+ e.g. @tomahawk
+
+
+
+
+ Send Message
+
+
+
+
+ ViewManager
+
+
+ SuperCollection
+
+
+
+
+ Combined libraries of all your online friends
+
+
+
+
+ All available albums
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+
+
+
+ WelcomeWidget
+
+
+ Recent Additions
+
+
+
+
+ Newest Stations & Playlists
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ No recently created playlists in your network.
+
+
+
+
+ Welcome to Tomahawk
+
+
+
+
+ WhatsHotWidget
+
+
+ Charts
+
+
+
+
+ WikipediaContext
+
+
+ Wikipedia
+
+
+
+
+ XMPPBot
+
+
+
+Terms for %1:
+
+
+
+
+
+ No terms found, sorry.
+
+
+
+
+
+Hotttness for %1: %2
+
+
+
+
+
+
+Familiarity for %1: %2
+
+
+
+
+
+
+Lyrics for "%1" by %2:
+
+%3
+
+
+
+
+
+ XSPFLoader
+
+
+ Failed to parse contents of XSPF playlist
+
+
+
+
+ Some playlist entries were found without artist and track name, they will be omitted
+
+
+
+
+ Failed to fetch the desired playlist from the network, or the desired file does not exist
+
+
+
+
+ New Playlist
+
+
+
+
+ XmlConsole
+
+
+ Xml stream console
+
+
+
+
+
+ Filter
+
+
+
+
+ Save log
+
+
+
+
+ Disabled
+
+
+
+
+ By JID
+
+
+
+
+ By namespace uri
+
+
+
+
+ By all attributes
+
+
+
+
+ Visible stanzas
+
+
+
+
+ Information query
+
+
+
+
+ Message
+
+
+
+
+ Presence
+
+
+
+
+ Custom
+
+
+
+
+ Close
+
+
+
+
+ Save XMPP log to file
+
+
+
+
+ OpenDocument Format (*.odf);;HTML file (*.html);;Plain text (*.txt)
+
+
+
+
+ XmppConfigWidget
+
+
+ Xmpp Configuration
+
+
+
+
+ Configure this Xmpp account
+
+
+
+
+ Enter your Xmpp login to connect with your friends using Tomahawk!
+
+
+
+
+ Login Information
+
+
+
+
+ Xmpp ID:
+
+
+
+
+ e.g. user@example.com
+
+
+
+
+ Password:
+
+
+
+
+ An account with this name already exists!
+
+
+
+
+ Advanced Xmpp Settings
+
+
+
+
+ Server:
+
+
+
+
+ Port:
+
+
+
+
+ Lots of servers don't support this (e.g. GTalk, jabber.org)
+
+
+
+
+ Publish currently playing track
+
+
+
+
+ Enforce secure connection
+
+
+
+
+ XmppSipPlugin
+
+
+ User Interaction
+
+
+
+
+ Host is unknown
+
+
+
+
+ Item not found
+
+
+
+
+ Authorization Error
+
+
+
+
+ Remote Stream Error
+
+
+
+
+ Remote Connection failed
+
+
+
+
+ Internal Server Error
+
+
+
+
+ System shutdown
+
+
+
+
+ Conflict
+
+
+
+
+ Unknown
+
+
+
+
+ No Compression Support
+
+
+
+
+ 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
+
+
+
+
+ Do you want to grant <b>%1</b> access to your Collection?
+
+
+
+
+ ZeroconfConfig
+
+
+ Form
+
+
+
+
+ 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_zh_CN.ts b/lang/tomahawk_zh_CN.ts
index d89929406..7fc574a14 100644
--- a/lang/tomahawk_zh_CN.ts
+++ b/lang/tomahawk_zh_CN.ts
@@ -9,7 +9,7 @@
Description goes here
-
+ 注释于此处
@@ -71,13 +71,13 @@ connect and stream from you?
&Listen Privately
-
+ 私下收听&Listen Publicly
-
+ 公开收听
@@ -142,13 +142,13 @@ connect and stream from you?
Click to show SuperCollection Tracks
-
+ 点击显示超级收藏中的曲目Click to show SuperCollection Albums
-
+ 点击显示超级收藏中的专辑
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.
-
+ This collection doesn't have any recent albums.
@@ -219,12 +219,12 @@ connect and stream from you?
Click to show SuperCollection Albums
-
+ 点击显示超级收藏中的专辑Click to show Official Albums
-
+ 点击显示官方发行专辑
@@ -237,12 +237,12 @@ connect and stream from you?
This collection is currently empty.
-
+ 此收藏目前为空Sorry, your filter '%1' did not match any results.
-
+ 抱歉,你的过滤条件 '%1' 未匹配任何结果
@@ -405,7 +405,7 @@ connect and stream from you?
Hide Footnotes
-
+ 隐藏脚注
@@ -413,43 +413,43 @@ connect and stream from you?
Tomahawk Crash Reporter
-
+ Tomahawk 崩溃报告<p><b>Sorry!</b> Tomahawk crashed. Information about the crash is now being sent to Tomahawk HQ so that we can fix the bug.</p>
-
+ <p><b>抱歉!</b> Tomahawk 出错了。相关信息正被上传到 Tomahawk HQ 以便我们修复此错误。</p>Abort
-
+ 中止You can disable sending crash reports in the configuration dialog.
-
+ 你可以在设置中禁用发送崩溃报告Uploaded %L1 of %L2 KB.
-
+ 已发送 %L2 KB 中的 %L1Close
-
+ 关闭Sent! <b>Many thanks</b>.
-
+ 已发送!<b>非常感谢</b>。Failed to send crash info.
-
+ 发送崩溃信息失败。
@@ -457,7 +457,7 @@ connect and stream from you?
Unknown
-
+ 未知
@@ -470,7 +470,7 @@ connect and stream from you?
Delete Account
-
+ 删除账户
@@ -483,17 +483,17 @@ connect and stream from you?
Tomahawk Diagnostics
-
+ Tomahawk 诊断信息Update
-
+ 更新Copy to Clipboard
-
+ 复制到剪贴板
@@ -517,7 +517,7 @@ connect and stream from you?
Indexing database
-
+ 正在索引数据库
@@ -566,17 +566,17 @@ connect and stream from you?
Username:
-
+ 用户名Password:
-
+ 密码Test Login
-
+ 测试登录
@@ -793,58 +793,53 @@ connect and stream from you?
-
+ Hostname of proxy server
-
+ Host
-
+ Port
-
+ Proxy login
-
+ User
-
+ Password
-
+ Proxy password
-
- Type
-
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)
-
+ localhost *.example.com (space separated)
-
+ Use proxy for DNS lookups?
@@ -1004,40 +999,40 @@ connect and stream from you?
SettingsDialog
-
+ Collection
-
+ Advanced
-
+ All
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ Services
-
+ Install resolver from file
-
+ Information
-
-
- Changing this setting requires a restart of Tomahawk!
-
- SocialPlaylistWidget
@@ -1197,6 +1192,7 @@ connect and stream from you?
+ Latest Additions
@@ -1215,6 +1211,31 @@ connect and stream from you?
SuperCollection
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1428,6 +1449,46 @@ connect and stream from you?
Time between scans, in seconds:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1444,50 +1505,35 @@ connect and stream from you?
-
- Advanced Network Settings
-
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
-
-
-
-
+ Static Host Name:
-
+ Static Port:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
-
-
-
-
+ Proxy Settings...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashed
-
+ Allow web browsers to interact with Tomahawk (recommended)
-
-
- Use UPnP to establish port forward
-
- Tomahawk::Accounts::AccountDelegate
@@ -2409,29 +2455,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
-
+ Loved Tracks
-
+ Hyped Tracks
-
+ Top Artists
-
+ Hyped Artists
@@ -2505,37 +2551,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and
-
+ You
-
+ you
-
+ and
-
+ %n other(s)
-
+ %1 people
-
+ loved this track
@@ -2631,39 +2677,39 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
-
+
+ Hide Tomahawk Window
-
+ Show Tomahawk Window
-
+ Currently not playing.
-
+ Play
-
+ Pause
-
+ &Continue Playback after current Track
@@ -2807,7 +2853,7 @@ enter the displayed PIN number here:
-
+ Play
@@ -2838,126 +2884,126 @@ enter the displayed PIN number here:
-
-
-
+
+
+ Connect To Peer
-
+ Enter peer address:
-
+ Enter peer port:
-
+ Enter peer key:
-
+ XSPF Error
-
+ This is not a valid XSPF playlist.
-
+ Failed to save tracks
-
+ Some tracks in the playlist do not contain an artist and a title. They will be ignored.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped. Make sure you have a suitable Phonon backend and required plugins installed.
-
+ Sorry, there is a problem accessing your audio device or the desired track, current track will be skipped.
-
+ Create New Station
-
+ Name:
-
+ New Station
-
+ New Playlist
-
+ Pause
-
+ Go &offline
-
+ Go &online
-
+ Authentication Error
-
+ %1 by %2track, artist name
-
+ %1 - %2current track, some window title
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About Tomahawk
@@ -3033,6 +3079,79 @@ enter the displayed PIN number here:
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3256,20 +3375,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollection
-
+ Combined libraries of all your online friends
-
+ All available albums
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/lang/tomahawk_zh_TW.ts b/lang/tomahawk_zh_TW.ts
index 215c21670..f02e9577c 100644
--- a/lang/tomahawk_zh_TW.ts
+++ b/lang/tomahawk_zh_TW.ts
@@ -183,12 +183,12 @@ connect and stream from you?
AlbumView
-
+ After you have scanned your music collection you will find your latest album additions right here.當您掃描您的音樂收藏,您會發現您的最新專輯添加在這裡。
-
+ This collection doesn't have any recent albums.這個收藏沒有任何最新專輯。
@@ -793,58 +793,53 @@ connect and stream from you?
代理服務器設定
-
+ Hostname of proxy server代理服務器的主機名稱
-
+ Host主機
-
+ Port
-
+ Proxy loginProxy 登錄
-
+ User用戶
-
+ Password密碼
-
+ Proxy passwordProxy 密碼
-
- Type
- 類型
-
-
-
+ No Proxy Hosts:
(Overrides system proxy)
-
+ localhost *.example.com (space separated)
-
+ Use proxy for DNS lookups?
@@ -1004,40 +999,40 @@ connect and stream from you?
SettingsDialog
-
+ Collection收藏
-
+ Advanced進階
-
+ All所有
-
+
+ Some changed settings will not take effect until Tomahawk is restarted
+
+
+
+ Services服務
-
+ Install resolver from file從檔案安裝解析器
-
+ Information資訊
-
-
- Changing this setting requires a restart of Tomahawk!
- 更改這個設定需要重新啟動 Tomahawk !
- SocialPlaylistWidget
@@ -1197,6 +1192,7 @@ connect and stream from you?
+ Latest Additions最新加入
@@ -1215,6 +1211,31 @@ connect and stream from you?
SuperCollection超級收藏
+
+
+ Latest additions to your collection
+
+
+
+
+ Latest additions to %1's collection
+
+
+
+
+ Recently Played Tracks
+
+
+
+
+ Your recently played tracks
+
+
+
+
+ %1's recently played tracks
+
+ SourceTreeView
@@ -1428,6 +1449,46 @@ connect and stream from you?
Time between scans, in seconds:
+
+
+ Advanced Settings
+
+
+
+
+ Remote Peer Connection Method
+
+
+
+
+ None (outgoing connections only)
+
+
+
+
+ Use UPnP to establish port forward (recommended)
+
+
+
+
+ Use static external IP address/host name and port
+
+
+
+
+ Set this to your external IP address or host name. Make sure to forward the port to this host!
+
+
+
+
+ SOCKS Proxy
+
+
+
+
+ Use SOCKS Proxy
+
+ Internet Services
@@ -1444,50 +1505,35 @@ connect and stream from you?
按能力篩選:
-
- Advanced Network Settings
- 進階網路設定
-
-
-
- If you're having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!
-
-
-
-
+ Static Host Name:靜態主機名稱:
-
+ Static Port:靜態通訊埠:
-
- Always use static host name/port? (Overrides UPnP discovery/port forwarding)
-
-
-
-
+ Proxy Settings...代理服務器設定...
-
+
+ Other Settings
+
+
+
+ Send reports after Tomahawk crashed
-
+ Allow web browsers to interact with Tomahawk (recommended)允許 Web 瀏覽器與 Tomahawk 互動 (推薦)
-
-
- Use UPnP to establish port forward
-
- Tomahawk::Accounts::AccountDelegate
@@ -2409,29 +2455,29 @@ Try tweaking the filters for a new set of songs to play.
- Tomahawk::InfoSystem::LastFmPlugin
+ Tomahawk::InfoSystem::LastFmInfoPlugin
-
+ Top Tracks
- 最佳單曲
+
-
+ Loved Tracks
- 喜愛曲目
+
-
+ Hyped Tracks
-
+ Top Artists
- 頂尖演出者
+
-
+ Hyped Artists
@@ -2505,37 +2551,37 @@ Try tweaking the filters for a new set of songs to play.
Tomahawk::Query
-
+ and
-
+ You您
-
+ you您
-
+ and和
-
+ %n other(s)
-
+ %1 people
-
+ loved this track
@@ -2631,39 +2677,39 @@ enter the displayed PIN number here:
TomahawkTrayIcon
-
-
+
+ &Stop Playback after current Track
-
-
+
+ Hide Tomahawk Window
-
+ Show Tomahawk Window
-
+ Currently not playing.目前沒有播放。
-
+ Play播放
-
+ Pause暫停
-
+ &Continue Playback after current Track
@@ -2807,7 +2853,7 @@ enter the displayed PIN number here:
-
+ Play播放
@@ -2838,126 +2884,126 @@ enter the displayed PIN number here:
檢查更新...
-
-
-
+
+
+ Connect To Peer連接點對點
-
+ Enter peer address:輸入對等地址:
-
+ Enter peer port:輸入對等連接埠:
-
+ Enter peer key:輸入對等密鑰:
-
+ XSPF ErrorXSPF 錯誤
-
+ 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.
-
+ Create New Station
-
+ Name:名稱:
-
+ New Station
-
+ New Playlist新增播放清單
-
+ Pause暫停
-
+ Go &offline離線
-
+ Go &online上網
-
+ Authentication Error驗證錯誤
-
+ %1 by %2track, artist name
-
+ %1 - %2current track, some window title
-
+ <h2><b>Tomahawk %1<br/>(%2)</h2><h2><b>Tomahawk %1<br/>(%2)</h2>
-
+ <h2><b>Tomahawk %1</h2><h2><b>Tomahawk %1</h2>
-
+ Copyright 2010 - 2012<br/>Christian Muehlhaeuser <muesli@tomahawk-player.org><br/><br/>Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindström, Michael Zanetti, Harald Sitter and Steve Robertson
-
+ About Tomahawk
@@ -3033,6 +3079,79 @@ enter the displayed PIN number here:
流行精選
+
+ TrackInfoWidget
+
+
+ Form
+
+
+
+
+ Cover
+
+
+
+
+ Track
+
+
+
+
+ by
+
+
+
+
+ Artist
+
+
+
+
+ from
+
+
+
+
+ Album
+
+
+
+
+ Statistics
+
+
+
+
+ Similar Tracks
+
+
+
+
+ You've listened to this track %n time(s).
+
+
+
+
+ You've never listened to this track before.
+
+
+
+
+ You first listened to it on %1.
+
+
+
+
+ You've listened to %1 %n time(s).
+
+
+
+
+ You've never listened to %1 before.
+
+
+TrackModel
@@ -3257,20 +3376,30 @@ You can re-send a sync message at any time simply by sending another tweet using
ViewManager
-
+ SuperCollection超級收藏
-
+ Combined libraries of all your online friends聯合您所有線上朋友的音樂庫
-
+ All available albums所有現有專輯
+
+
+ Recently Played Tracks
+
+
+
+
+ Recently played tracks from all your friends
+
+ WelcomeWidget
diff --git a/resources.qrc b/resources.qrc
index ee77f0f51..bea3686be 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -1,7 +1,5 @@
- data/images/avatar-dude-plus.png
- data/images/avatar-dude.pngdata/images/back-pressed.pngdata/images/back-rest.pngdata/images/filter.png
@@ -9,6 +7,8 @@
data/images/not-loved.pngdata/images/no-album-art-placeholder.pngdata/images/no-artist-image-placeholder.png
+ data/images/artist-placeholder-grid.png
+ data/images/album-placeholder-grid.pngdata/images/track-placeholder.pngdata/images/now-playing-panel.pngdata/images/now-playing-speaker.png
@@ -66,12 +66,10 @@
data/images/echonest_logo.pngdata/images/loading-animation.gifdata/images/info.png
- data/images/home.pngdata/images/back.pngdata/images/forward.pngdata/images/music-icon.pngdata/images/configure.png
- data/images/create-playlist.pngdata/images/private-listening.pngdata/images/add.pngdata/images/recently-played.png
@@ -136,7 +134,7 @@
data/images/rdio.pngdata/images/grooveshark.pngdata/images/lastfm-icon.png
- data/images/spotifycore-logo.png
+ data/images/spotifycore-logo.pngdata/images/playlist-header-tiled.pngdata/images/share.pngdata/sql/dbmigrate-27_to_28.sql
diff --git a/src/AudioControls.ui b/src/AudioControls.ui
index 3a68a7f04..7775073ed 100644
--- a/src/AudioControls.ui
+++ b/src/AudioControls.ui
@@ -151,14 +151,14 @@
- 58
- 58
+ 64
+ 64
- 58
- 58
+ 64
+ 64
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1f3990aee..6349911ad 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -72,7 +72,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
accounts/lastfm/LastFmAccount.cpp
accounts/lastfm/LastFmConfig.cpp
- accounts/lastfm/LastFmPlugin.cpp
+ accounts/lastfm/LastFmInfoPlugin.cpp
accounts/spotify/SpotifyAccount.cpp
accounts/spotify/SpotifyAccountConfig.cpp
diff --git a/src/Scrobbler.cpp b/src/Scrobbler.cpp
index 5c2041565..dd2f41942 100644
--- a/src/Scrobbler.cpp
+++ b/src/Scrobbler.cpp
@@ -79,16 +79,21 @@ Scrobbler::trackStarted( const Tomahawk::result_ptr& track )
scrobble();
}
+ QVariantMap playInfo;
+
Tomahawk::InfoSystem::InfoStringHash trackInfo;
-
trackInfo["title"] = track->track();
trackInfo["artist"] = track->artist()->name();
trackInfo["album"] = track->album()->name();
trackInfo["duration"] = QString::number( track->duration() );
+ trackInfo["albumpos"] = QString::number( track->albumpos() );
+
+ playInfo["trackinfo"] = QVariant::fromValue< Tomahawk::InfoSystem::InfoStringHash >( trackInfo );
+ playInfo["private"] = TomahawkSettings::instance()->privateListeningMode();
Tomahawk::InfoSystem::InfoPushData pushData (
s_scInfoIdentifier, Tomahawk::InfoSystem::InfoSubmitNowPlaying,
- QVariant::fromValue< Tomahawk::InfoSystem::InfoStringHash >( trackInfo ),
+ playInfo,
Tomahawk::InfoSystem::PushNoFlag );
Tomahawk::InfoSystem::InfoSystem::instance()->pushInfo( pushData );
diff --git a/src/TomahawkTrayIcon.cpp b/src/TomahawkTrayIcon.cpp
index 4e46f7a41..9811c2dd3 100644
--- a/src/TomahawkTrayIcon.cpp
+++ b/src/TomahawkTrayIcon.cpp
@@ -29,6 +29,7 @@
#include "Query.h"
#include "utils/Logger.h"
+#include "utils/TomahawkUtilsGui.h"
#include
@@ -198,13 +199,13 @@ TomahawkTrayIcon::onActivated( QSystemTrayIcon::ActivationReason reason )
case QSystemTrayIcon::Trigger:
{
TomahawkWindow* mainwindow = APP->mainWindow();
- if ( mainwindow->isVisible() )
+ if (mainwindow->isActiveWindow())
{
mainwindow->hide();
}
else
{
- mainwindow->show();
+ TomahawkUtils::bringToFront();
}
}
break;
diff --git a/src/accounts/lastfm/LastFmAccount.cpp b/src/accounts/lastfm/LastFmAccount.cpp
index c781cd45c..938f66503 100644
--- a/src/accounts/lastfm/LastFmAccount.cpp
+++ b/src/accounts/lastfm/LastFmAccount.cpp
@@ -20,7 +20,7 @@
#include "LastFmConfig.h"
#include "infosystem/InfoSystem.h"
-#include "LastFmPlugin.h"
+#include "LastFmInfoPlugin.h"
#include "utils/TomahawkUtils.h"
#include "resolvers/QtScriptResolver.h"
#include "AtticaManager.h"
@@ -167,7 +167,7 @@ InfoPluginPtr
LastFmAccount::infoPlugin()
{
if ( m_infoPlugin.isNull() )
- m_infoPlugin = QWeakPointer< LastFmPlugin >( new LastFmPlugin( this ) );
+ m_infoPlugin = QWeakPointer< LastFmInfoPlugin >( new LastFmInfoPlugin( this ) );
return InfoPluginPtr( m_infoPlugin.data() );
}
diff --git a/src/accounts/lastfm/LastFmAccount.h b/src/accounts/lastfm/LastFmAccount.h
index e7fc5adf6..90ca37737 100644
--- a/src/accounts/lastfm/LastFmAccount.h
+++ b/src/accounts/lastfm/LastFmAccount.h
@@ -30,7 +30,7 @@ namespace Tomahawk {
class ExternalResolverGui;
namespace InfoSystem {
- class LastFmPlugin;
+ class LastFmInfoPlugin;
}
namespace Accounts {
@@ -103,7 +103,7 @@ private:
void hookupResolver();
QWeakPointer m_resolver;
- QWeakPointer m_infoPlugin;
+ QWeakPointer m_infoPlugin;
QWeakPointer m_configWidget;
QPixmap m_icon;
};
diff --git a/src/accounts/lastfm/LastFmPlugin.cpp b/src/accounts/lastfm/LastFmInfoPlugin.cpp
similarity index 82%
rename from src/accounts/lastfm/LastFmPlugin.cpp
rename to src/accounts/lastfm/LastFmInfoPlugin.cpp
index 67d909ae3..f016cf312 100644
--- a/src/accounts/lastfm/LastFmPlugin.cpp
+++ b/src/accounts/lastfm/LastFmInfoPlugin.cpp
@@ -17,7 +17,7 @@
* along with Tomahawk. If not, see .
*/
-#include "LastFmPlugin.h"
+#include "LastFmInfoPlugin.h"
#include
#include
@@ -40,18 +40,18 @@ using namespace Tomahawk::Accounts;
using namespace Tomahawk::InfoSystem;
-LastFmPlugin::LastFmPlugin( LastFmAccount* account )
+LastFmInfoPlugin::LastFmInfoPlugin( LastFmAccount* account )
: InfoPlugin()
, m_account( account )
, m_scrobbler( 0 )
{
- m_supportedGetTypes << InfoAlbumCoverArt << InfoArtistImages << InfoArtistSimilars << InfoArtistSongs << InfoChart << InfoChartCapabilities;
+ m_supportedGetTypes << InfoAlbumCoverArt << InfoArtistImages << InfoArtistSimilars << InfoArtistSongs << InfoChart << InfoChartCapabilities << InfoTrackSimilars;
m_supportedPushTypes << InfoSubmitScrobble << InfoSubmitNowPlaying << InfoLove << InfoUnLove;
}
void
-LastFmPlugin::init()
+LastFmInfoPlugin::init()
{
if ( Tomahawk::InfoSystem::InfoSystem::instance()->workerThread() && thread() != Tomahawk::InfoSystem::InfoSystem::instance()->workerThread().data() )
{
@@ -84,7 +84,7 @@ LastFmPlugin::init()
}
-LastFmPlugin::~LastFmPlugin()
+LastFmInfoPlugin::~LastFmInfoPlugin()
{
qDebug() << Q_FUNC_INFO;
delete m_scrobbler;
@@ -93,7 +93,7 @@ LastFmPlugin::~LastFmPlugin()
void
-LastFmPlugin::dataError( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::dataError( Tomahawk::InfoSystem::InfoRequestData requestData )
{
emit info( requestData, QVariant() );
return;
@@ -101,7 +101,7 @@ LastFmPlugin::dataError( Tomahawk::InfoSystem::InfoRequestData requestData )
void
-LastFmPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
{
switch ( requestData.type )
{
@@ -128,6 +128,11 @@ LastFmPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
case InfoChartCapabilities:
fetchChartCapabilities( requestData );
break;
+
+ case InfoTrackSimilars:
+ fetchSimilarTracks( requestData );
+ break;
+
default:
dataError( requestData );
}
@@ -135,7 +140,7 @@ LastFmPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData )
void
-LastFmPlugin::pushInfo( Tomahawk::InfoSystem::InfoPushData pushData )
+LastFmInfoPlugin::pushInfo( Tomahawk::InfoSystem::InfoPushData pushData )
{
switch ( pushData.type )
{
@@ -159,21 +164,32 @@ LastFmPlugin::pushInfo( Tomahawk::InfoSystem::InfoPushData pushData )
void
-LastFmPlugin::nowPlaying( const QVariant &input )
+LastFmInfoPlugin::nowPlaying( const QVariant &input )
{
- if ( !input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() || !m_scrobbler )
+ m_track = lastfm::MutableTrack();
+ if ( !input.canConvert< QVariantMap >() )
{
- tLog() << "LastFmPlugin::nowPlaying no m_scrobbler, or cannot convert input!";
- if ( !m_scrobbler )
- tLog() << "No scrobbler!";
+ tDebug() << Q_FUNC_INFO << "Failed to convert data to a QVariantMap";
return;
}
- InfoStringHash hash = input.value< Tomahawk::InfoSystem::InfoStringHash >();
+ QVariantMap map = input.toMap();
+ if ( map.contains( "private" ) && map[ "private" ] == TomahawkSettings::FullyPrivate )
+ return;
+
+ if ( !map.contains( "trackinfo" ) || !map[ "trackinfo" ].canConvert< Tomahawk::InfoSystem::InfoStringHash >() || !m_scrobbler )
+ {
+ tLog() << Q_FUNC_INFO << "LastFmInfoPlugin::nowPlaying no m_scrobbler, or cannot convert input!";
+ if ( !m_scrobbler )
+ tLog() << Q_FUNC_INFO << "No scrobbler!";
+ return;
+ }
+
+ Tomahawk::InfoSystem::InfoStringHash hash = map[ "trackinfo" ].value< Tomahawk::InfoSystem::InfoStringHash >();
+
if ( !hash.contains( "title" ) || !hash.contains( "artist" ) || !hash.contains( "album" ) || !hash.contains( "duration" ) )
return;
- m_track = lastfm::MutableTrack();
m_track.stamp();
m_track.setTitle( hash["title"] );
@@ -188,7 +204,7 @@ LastFmPlugin::nowPlaying( const QVariant &input )
void
-LastFmPlugin::scrobble()
+LastFmInfoPlugin::scrobble()
{
if ( !m_scrobbler || m_track.isNull() )
return;
@@ -200,13 +216,13 @@ LastFmPlugin::scrobble()
void
-LastFmPlugin::sendLoveSong( const InfoType type, QVariant input )
+LastFmInfoPlugin::sendLoveSong( const InfoType type, QVariant input )
{
qDebug() << Q_FUNC_INFO;
if ( !input.toMap().contains( "trackinfo" ) || !input.toMap()[ "trackinfo" ].canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
- tLog() << "LastFmPlugin::nowPlaying cannot convert input!";
+ tLog() << "LastFmInfoPlugin::nowPlaying cannot convert input!";
return;
}
@@ -236,7 +252,7 @@ LastFmPlugin::sendLoveSong( const InfoType type, QVariant input )
void
-LastFmPlugin::fetchSimilarArtists( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::fetchSimilarArtists( Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
@@ -258,7 +274,30 @@ LastFmPlugin::fetchSimilarArtists( Tomahawk::InfoSystem::InfoRequestData request
void
-LastFmPlugin::fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::fetchSimilarTracks( Tomahawk::InfoSystem::InfoRequestData requestData )
+{
+ if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
+ {
+ dataError( requestData );
+ return;
+ }
+ InfoStringHash hash = requestData.input.value< Tomahawk::InfoSystem::InfoStringHash >();
+ if ( !hash.contains( "artist" ) || !hash.contains( "track" ) )
+ {
+ dataError( requestData );
+ return;
+ }
+
+ Tomahawk::InfoSystem::InfoStringHash criteria;
+ criteria["artist"] = hash["artist"];
+ criteria["track"] = hash["track"];
+
+ emit getCachedInfo( criteria, 2419200000, requestData );
+}
+
+
+void
+LastFmInfoPlugin::fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
@@ -278,8 +317,9 @@ LastFmPlugin::fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData
emit getCachedInfo( criteria, 2419200000, requestData );
}
+
void
-LastFmPlugin::fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
@@ -299,8 +339,9 @@ LastFmPlugin::fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData )
emit getCachedInfo( criteria, 0, requestData );
}
+
void
-LastFmPlugin::fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
@@ -313,8 +354,9 @@ LastFmPlugin::fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requ
emit getCachedInfo( criteria, 0, requestData );
}
+
void
-LastFmPlugin::fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
@@ -337,7 +379,7 @@ LastFmPlugin::fetchCoverArt( Tomahawk::InfoSystem::InfoRequestData requestData )
void
-LastFmPlugin::fetchArtistImages( Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::fetchArtistImages( Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
{
@@ -359,7 +401,7 @@ LastFmPlugin::fetchArtistImages( Tomahawk::InfoSystem::InfoRequestData requestDa
void
-LastFmPlugin::notInCacheSlot( QHash criteria, Tomahawk::InfoSystem::InfoRequestData requestData )
+LastFmInfoPlugin::notInCacheSlot( QHash criteria, Tomahawk::InfoSystem::InfoRequestData requestData )
{
if ( !TomahawkUtils::nam() )
{
@@ -443,6 +485,19 @@ LastFmPlugin::notInCacheSlot( QHash criteria, Tomahawk::InfoSy
return;
}
+ case InfoTrackSimilars:
+ {
+ lastfm::MutableTrack t;
+ t.setArtist( criteria["artist"] );
+ t.setTitle( criteria["track"] );
+
+ QNetworkReply* reply = t.getSimilar();
+ reply->setProperty( "requestData", QVariant::fromValue< Tomahawk::InfoSystem::InfoRequestData >( requestData ) );
+
+ connect( reply, SIGNAL( finished() ), SLOT( similarTracksReturned() ) );
+ return;
+ }
+
case InfoArtistSongs:
{
lastfm::Artist a( criteria["artist"] );
@@ -504,7 +559,7 @@ LastFmPlugin::notInCacheSlot( QHash criteria, Tomahawk::InfoSy
void
-LastFmPlugin::similarArtistsReturned()
+LastFmInfoPlugin::similarArtistsReturned()
{
QNetworkReply* reply = qobject_cast( sender() );
@@ -542,7 +597,54 @@ LastFmPlugin::similarArtistsReturned()
void
-LastFmPlugin::chartReturned()
+LastFmInfoPlugin::similarTracksReturned()
+{
+ QNetworkReply* reply = qobject_cast( sender() );
+
+ QMap< int, QPair< QString, QString > > similarTracks = lastfm::Track::getSimilar( reply );
+
+ QStringList sortedArtists;
+ QStringList sortedTracks;
+ QStringList sortedScores;
+ QStringList al;
+ QStringList tl;
+ QStringList sl;
+
+ QPair< QString, QString > track;
+ foreach ( track, similarTracks.values() )
+ {
+ tl << track.first;
+ al << track.second;
+ }
+ foreach ( int score, similarTracks.keys() )
+ sl << QString::number( score );
+
+ for ( int i = tl.count() - 1; i >= 0; i-- )
+ {
+ sortedTracks << tl.at( i );
+ sortedArtists << al.at( i );
+ sortedScores << sl.at( i );
+ }
+
+ QVariantMap returnedData;
+ returnedData["tracks"] = sortedTracks;
+ returnedData["artists"] = sortedArtists;
+ returnedData["score"] = sortedScores;
+
+ Tomahawk::InfoSystem::InfoRequestData requestData = reply->property( "requestData" ).value< Tomahawk::InfoSystem::InfoRequestData >();
+
+ emit info( requestData, returnedData );
+
+ Tomahawk::InfoSystem::InfoStringHash origData = requestData.input.value< Tomahawk::InfoSystem::InfoStringHash>();
+ Tomahawk::InfoSystem::InfoStringHash criteria;
+ criteria["artist"] = origData["artist"];
+ criteria["track"] = origData["track"];
+ emit updateCache( criteria, 2419200000, requestData.type, returnedData );
+}
+
+
+void
+LastFmInfoPlugin::chartReturned()
{
QNetworkReply* reply = qobject_cast( sender() );
@@ -555,7 +657,8 @@ LastFmPlugin::chartReturned()
{
QList tracks = parseTrackList( reply );
QList top_tracks;
- foreach( const lastfm::Track &t, tracks ) {
+ foreach( const lastfm::Track& t, tracks )
+ {
InfoStringHash pair;
pair[ "artist" ] = t.artist().toString();
pair[ "track" ] = t.title();
@@ -587,7 +690,7 @@ LastFmPlugin::chartReturned()
void
-LastFmPlugin::topTracksReturned()
+LastFmInfoPlugin::topTracksReturned()
{
QNetworkReply* reply = qobject_cast( sender() );
@@ -609,7 +712,7 @@ LastFmPlugin::topTracksReturned()
void
-LastFmPlugin::coverArtReturned()
+LastFmInfoPlugin::coverArtReturned()
{
QNetworkReply* reply = qobject_cast( sender() );
QUrl redir = reply->attribute( QNetworkRequest::RedirectionTargetAttribute ).toUrl();
@@ -662,7 +765,7 @@ LastFmPlugin::coverArtReturned()
void
-LastFmPlugin::artistImagesReturned()
+LastFmInfoPlugin::artistImagesReturned()
{
QNetworkReply* reply = qobject_cast( sender() );
QUrl redir = reply->attribute( QNetworkRequest::RedirectionTargetAttribute ).toUrl();
@@ -713,7 +816,7 @@ LastFmPlugin::artistImagesReturned()
void
-LastFmPlugin::settingsChanged()
+LastFmInfoPlugin::settingsChanged()
{
if ( m_account.isNull() )
return;
@@ -750,7 +853,7 @@ LastFmPlugin::settingsChanged()
void
-LastFmPlugin::onAuthenticated()
+LastFmInfoPlugin::onAuthenticated()
{
QNetworkReply* authJob = dynamic_cast( sender() );
if ( !authJob || m_account.isNull() )
@@ -789,14 +892,14 @@ LastFmPlugin::onAuthenticated()
void
-LastFmPlugin::createScrobbler()
+LastFmInfoPlugin::createScrobbler()
{
if ( m_account.isNull() || lastfm::ws::Username.isEmpty() )
return;
if ( m_account.data()->sessionKey().isEmpty() ) // no session key, so get one
{
- qDebug() << "LastFmPlugin::createScrobbler Session key is empty";
+ qDebug() << "LastFmInfoPlugin::createScrobbler Session key is empty";
QString authToken = TomahawkUtils::md5( ( lastfm::ws::Username.toLower() + TomahawkUtils::md5( m_pw.toUtf8() ) ).toUtf8() );
QMap query;
@@ -809,7 +912,7 @@ LastFmPlugin::createScrobbler()
}
else
{
- qDebug() << "LastFmPlugin::createScrobbler Already have session key";
+ qDebug() << "LastFmInfoPlugin::createScrobbler Already have session key";
lastfm::ws::SessionKey = m_account.data()->sessionKey();
m_scrobbler = new lastfm::Audioscrobbler( "thk" );
@@ -818,7 +921,7 @@ LastFmPlugin::createScrobbler()
QList
-LastFmPlugin::parseTrackList( QNetworkReply* reply )
+LastFmInfoPlugin::parseTrackList( QNetworkReply* reply )
{
QList tracks;
try
diff --git a/src/accounts/lastfm/LastFmPlugin.h b/src/accounts/lastfm/LastFmInfoPlugin.h
similarity index 91%
rename from src/accounts/lastfm/LastFmPlugin.h
rename to src/accounts/lastfm/LastFmInfoPlugin.h
index 3f1a22fb1..443192b03 100644
--- a/src/accounts/lastfm/LastFmPlugin.h
+++ b/src/accounts/lastfm/LastFmInfoPlugin.h
@@ -42,13 +42,13 @@ namespace Accounts
namespace InfoSystem
{
-class LastFmPlugin : public InfoPlugin
+class LastFmInfoPlugin : public InfoPlugin
{
Q_OBJECT
public:
- LastFmPlugin( Accounts::LastFmAccount* account );
- virtual ~LastFmPlugin();
+ LastFmInfoPlugin( Accounts::LastFmAccount* account );
+ virtual ~LastFmInfoPlugin();
public slots:
void init();
@@ -60,6 +60,7 @@ public slots:
void similarArtistsReturned();
void topTracksReturned();
void chartReturned();
+ void similarTracksReturned();
protected slots:
virtual void getInfo( Tomahawk::InfoSystem::InfoRequestData requestData );
@@ -74,6 +75,7 @@ private:
void fetchTopTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
void fetchChart( Tomahawk::InfoSystem::InfoRequestData requestData );
void fetchChartCapabilities( Tomahawk::InfoSystem::InfoRequestData requestData );
+ void fetchSimilarTracks( Tomahawk::InfoSystem::InfoRequestData requestData );
void createScrobbler();
void nowPlaying( const QVariant &input );
diff --git a/src/libtomahawk/Artist.cpp b/src/libtomahawk/Artist.cpp
index 3bd9bfec0..b0d79c1e8 100644
--- a/src/libtomahawk/Artist.cpp
+++ b/src/libtomahawk/Artist.cpp
@@ -23,8 +23,8 @@
#include "Collection.h"
#include "database/Database.h"
#include "database/DatabaseImpl.h"
-#include "Query.h"
#include "database/DatabaseCommand_AllAlbums.h"
+#include "database/DatabaseCommand_TrackStats.h"
#include "utils/Logger.h"
@@ -83,6 +83,7 @@ Artist::Artist( unsigned int id, const QString& name )
, m_name( name )
, m_infoLoaded( false )
, m_infoLoading( false )
+ , m_simArtistsLoaded( false )
, m_infoJobs( 0 )
#ifndef ENABLE_HEADLESS
, m_cover( 0 )
@@ -138,12 +139,12 @@ Artist::albums( ModelMode mode, const Tomahawk::collection_ptr& collection ) con
requestData.type = Tomahawk::InfoSystem::InfoArtistReleases;
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
- SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
- SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ), Qt::UniqueConnection );
+ SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
+ SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ), Qt::UniqueConnection );
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
- SIGNAL( finished( QString ) ),
- SLOT( infoSystemFinished( QString ) ), Qt::UniqueConnection );
+ SIGNAL( finished( QString ) ),
+ SLOT( infoSystemFinished( QString ) ), Qt::UniqueConnection );
m_infoJobs++;
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
@@ -164,6 +165,87 @@ Artist::albums( ModelMode mode, const Tomahawk::collection_ptr& collection ) con
}
+QList
+Artist::similarArtists() const
+{
+ if ( !m_simArtistsLoaded )
+ {
+ Tomahawk::InfoSystem::InfoStringHash artistInfo;
+ artistInfo["artist"] = name();
+
+ Tomahawk::InfoSystem::InfoRequestData requestData;
+ requestData.caller = m_uuid;
+ requestData.customData = QVariantMap();
+
+ requestData.input = QVariant::fromValue< Tomahawk::InfoSystem::InfoStringHash >( artistInfo );
+ requestData.type = Tomahawk::InfoSystem::InfoArtistSimilars;
+ requestData.requestId = TomahawkUtils::infosystemRequestId();
+
+ connect( Tomahawk::InfoSystem::InfoSystem::instance(),
+ SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
+ SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ), Qt::UniqueConnection );
+
+ connect( Tomahawk::InfoSystem::InfoSystem::instance(),
+ SIGNAL( finished( QString ) ),
+ SLOT( infoSystemFinished( QString ) ), Qt::UniqueConnection );
+
+ m_infoJobs++;
+ Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
+ }
+
+ return m_similarArtists;
+}
+
+
+void
+Artist::loadStats()
+{
+ artist_ptr a = m_ownRef.toStrongRef();
+
+ DatabaseCommand_TrackStats* cmd = new DatabaseCommand_TrackStats( a );
+ Database::instance()->enqueue( QSharedPointer(cmd) );
+}
+
+
+QList< Tomahawk::PlaybackLog >
+Artist::playbackHistory( const Tomahawk::source_ptr& source ) const
+{
+ QList< Tomahawk::PlaybackLog > history;
+
+ foreach ( const PlaybackLog& log, m_playbackHistory )
+ {
+ if ( source.isNull() || log.source == source )
+ {
+ history << log;
+ }
+ }
+
+ return history;
+}
+
+
+void
+Artist::setPlaybackHistory( const QList< Tomahawk::PlaybackLog >& playbackData )
+{
+ m_playbackHistory = playbackData;
+ emit statsLoaded();
+}
+
+
+unsigned int
+Artist::playbackCount( const source_ptr& source )
+{
+ unsigned int count = 0;
+ foreach ( const PlaybackLog& log, m_playbackHistory )
+ {
+ if ( source.isNull() || log.source == source )
+ count++;
+ }
+
+ return count;
+}
+
+
void
Artist::onAlbumsFound( const QList< album_ptr >& albums, const QVariant& data )
{
@@ -183,11 +265,11 @@ Artist::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVari
if ( requestData.caller != m_uuid )
return;
+ QVariantMap returnedData = output.value< QVariantMap >();
switch ( requestData.type )
{
case Tomahawk::InfoSystem::InfoArtistReleases:
{
- QVariantMap returnedData = output.value< QVariantMap >();
QStringList albumNames = returnedData[ "albums" ].toStringList();
Tomahawk::InfoSystem::InfoStringHash inputInfo;
inputInfo = requestData.input.value< InfoSystem::InfoStringHash >();
@@ -212,7 +294,6 @@ Artist::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVari
{
if ( !output.isNull() && output.isValid() )
{
- QVariantMap returnedData = output.value< QVariantMap >();
const QByteArray ba = returnedData["imgbytes"].toByteArray();
if ( ba.length() )
{
@@ -224,7 +305,21 @@ Artist::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVari
break;
}
-
+
+ case InfoSystem::InfoArtistSimilars:
+ {
+ const QStringList artists = returnedData["artists"].toStringList();
+ foreach ( const QString& artist, artists )
+ {
+ m_similarArtists << Artist::get( artist );
+ }
+
+ m_simArtistsLoaded = true;
+ emit similarArtistsLoaded();
+
+ break;
+ }
+
default:
Q_ASSERT( false );
}
diff --git a/src/libtomahawk/Artist.h b/src/libtomahawk/Artist.h
index 8f9459422..eee1da918 100644
--- a/src/libtomahawk/Artist.h
+++ b/src/libtomahawk/Artist.h
@@ -30,6 +30,7 @@
#include "Typedefs.h"
#include "DllMacro.h"
+#include "Query.h"
#include "infosystem/InfoSystem.h"
namespace Tomahawk
@@ -53,6 +54,13 @@ public:
bool infoLoaded() const { return m_infoLoaded; }
QList albums( ModelMode mode = Mixed, const Tomahawk::collection_ptr& collection = Tomahawk::collection_ptr() ) const;
+ QList similarArtists() const;
+
+ void loadStats();
+ QList< Tomahawk::PlaybackLog > playbackHistory( const Tomahawk::source_ptr& source = Tomahawk::source_ptr() ) const;
+ void setPlaybackHistory( const QList< Tomahawk::PlaybackLog >& playbackData );
+ unsigned int playbackCount( const Tomahawk::source_ptr& source = Tomahawk::source_ptr() );
+
#ifndef ENABLE_HEADLESS
QPixmap cover( const QSize& size, bool forceLoad = true ) const;
#endif
@@ -68,6 +76,8 @@ signals:
void updated();
void coverChanged();
+ void similarArtistsLoaded();
+ void statsLoaded();
private slots:
void onTracksAdded( const QList& tracks );
@@ -86,11 +96,17 @@ private:
bool m_infoLoaded;
mutable bool m_infoLoading;
QHash m_albumsLoaded;
+ bool m_simArtistsLoaded;
+
mutable QString m_uuid;
mutable int m_infoJobs;
QList m_databaseAlbums;
QList m_officialAlbums;
+ QList m_similarArtists;
+
+ bool m_playbackHistoryLoaded;
+ QList< PlaybackLog > m_playbackHistory;
mutable QByteArray m_coverBuffer;
#ifndef ENABLE_HEADLESS
diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt
index af98f0fdc..aba4dda3c 100644
--- a/src/libtomahawk/CMakeLists.txt
+++ b/src/libtomahawk/CMakeLists.txt
@@ -151,6 +151,7 @@ set( libGuiSources
widgets/infowidgets/SourceInfoWidget.cpp
widgets/infowidgets/ArtistInfoWidget.cpp
widgets/infowidgets/AlbumInfoWidget.cpp
+ widgets/infowidgets/TrackInfoWidget.cpp
widgets/Breadcrumb.cpp
widgets/BreadcrumbButton.cpp
)
@@ -218,6 +219,7 @@ set( libSources
database/DatabaseCommand_AddSource.cpp
database/DatabaseCommand_SourceOffline.cpp
database/DatabaseCommand_CollectionStats.cpp
+ database/DatabaseCommand_TrackStats.cpp
database/DatabaseCommand_LoadPlaylistEntries.cpp
database/DatabaseCommand_ModifyPlaylist.cpp
database/DatabaseCommand_PlaybackHistory.cpp
@@ -312,6 +314,7 @@ set( libUI ${libUI}
widgets/infowidgets/SourceInfoWidget.ui
widgets/infowidgets/ArtistInfoWidget.ui
widgets/infowidgets/AlbumInfoWidget.ui
+ widgets/infowidgets/TrackInfoWidget.ui
playlist/topbar/TopBar.ui
playlist/QueueView.ui
context/ContextWidget.ui
diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp
index 58c6ffa0f..6e9c284a3 100644
--- a/src/libtomahawk/Query.cpp
+++ b/src/libtomahawk/Query.cpp
@@ -24,10 +24,10 @@
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "database/DatabaseCommand_LogPlayback.h"
-#include "database/DatabaseCommand_PlaybackHistory.h"
#include "database/DatabaseCommand_LoadPlaylistEntries.h"
#include "database/DatabaseCommand_LoadSocialActions.h"
#include "database/DatabaseCommand_SocialAction.h"
+#include "database/DatabaseCommand_TrackStats.h"
#include "Album.h"
#include "Collection.h"
#include "Pipeline.h"
@@ -74,6 +74,8 @@ Query::Query( const QString& artist, const QString& track, const QString& album,
, m_album( album )
, m_track( track )
, m_socialActionsLoaded( false )
+ , m_simTracksLoaded( false )
+ , m_infoJobs( 0 )
{
init();
@@ -505,6 +507,55 @@ Query::playedBy() const
}
+void
+Query::loadStats()
+{
+ query_ptr q = m_ownRef.toStrongRef();
+
+ DatabaseCommand_TrackStats* cmd = new DatabaseCommand_TrackStats( q );
+ Database::instance()->enqueue( QSharedPointer(cmd) );
+}
+
+
+QList< Tomahawk::PlaybackLog >
+Query::playbackHistory( const Tomahawk::source_ptr& source ) const
+{
+ QList< Tomahawk::PlaybackLog > history;
+
+ foreach ( const PlaybackLog& log, m_playbackHistory )
+ {
+ if ( source.isNull() || log.source == source )
+ {
+ history << log;
+ }
+ }
+
+ return history;
+}
+
+
+void
+Query::setPlaybackHistory( const QList< Tomahawk::PlaybackLog >& playbackData )
+{
+ m_playbackHistory = playbackData;
+ emit statsLoaded();
+}
+
+
+unsigned int
+Query::playbackCount( const source_ptr& source )
+{
+ unsigned int count = 0;
+ foreach ( const PlaybackLog& log, m_playbackHistory )
+ {
+ if ( source.isNull() || log.source == source )
+ count++;
+ }
+
+ return count;
+}
+
+
void
Query::loadSocialActions()
{
@@ -512,24 +563,17 @@ Query::loadSocialActions()
query_ptr q = m_ownRef.toStrongRef();
DatabaseCommand_LoadSocialActions* cmd = new DatabaseCommand_LoadSocialActions( q );
- connect( cmd, SIGNAL( finished() ), SLOT( onSocialActionsLoaded() ) );
Database::instance()->enqueue( QSharedPointer(cmd) );
}
-void
-Query::onSocialActionsLoaded()
-{
- parseSocialActions();
-
- emit socialActionsLoaded();
-}
-
-
void
Query::setAllSocialActions( const QList< SocialAction >& socialActions )
{
m_allSocialActions = socialActions;
+ parseSocialActions();
+
+ emit socialActionsLoaded();
}
@@ -690,7 +734,7 @@ Query::cover( const QSize& size, bool forceLoad ) const
if ( !m_albumPtr->cover( size ).isNull() )
return m_albumPtr->cover( size );
- return m_artistPtr->cover( size );
+ return m_artistPtr->cover( size, forceLoad );
}
return QPixmap();
@@ -698,6 +742,92 @@ Query::cover( const QSize& size, bool forceLoad ) const
#endif
+QList
+Query::similarTracks() const
+{
+ if ( !m_simTracksLoaded )
+ {
+ Tomahawk::InfoSystem::InfoStringHash trackInfo;
+ trackInfo["artist"] = artist();
+ trackInfo["track"] = track();
+
+ Tomahawk::InfoSystem::InfoRequestData requestData;
+ requestData.caller = id();
+ requestData.customData = QVariantMap();
+
+ requestData.input = QVariant::fromValue< Tomahawk::InfoSystem::InfoStringHash >( trackInfo );
+ requestData.type = Tomahawk::InfoSystem::InfoTrackSimilars;
+ requestData.requestId = TomahawkUtils::infosystemRequestId();
+
+ connect( Tomahawk::InfoSystem::InfoSystem::instance(),
+ SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
+ SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ), Qt::UniqueConnection );
+
+ connect( Tomahawk::InfoSystem::InfoSystem::instance(),
+ SIGNAL( finished( QString ) ),
+ SLOT( infoSystemFinished( QString ) ), Qt::UniqueConnection );
+
+ m_infoJobs++;
+ Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
+ }
+
+ return m_similarTracks;
+}
+
+
+void
+Query::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output )
+{
+ if ( requestData.caller != id() )
+ return;
+
+ QVariantMap returnedData = output.value< QVariantMap >();
+ switch ( requestData.type )
+ {
+ case InfoSystem::InfoTrackSimilars:
+ {
+ const QStringList artists = returnedData["artists"].toStringList();
+ const QStringList tracks = returnedData["tracks"].toStringList();
+
+ for ( int i = 0; i < tracks.count() && i < 50; i++ )
+ {
+ m_similarTracks << Query::get( artists.at( i ), tracks.at( i ), QString(), uuid(), true );
+ }
+
+ m_simTracksLoaded = true;
+ emit similarTracksLoaded();
+
+ break;
+ }
+
+ default:
+ Q_ASSERT( false );
+ }
+}
+
+
+void
+Query::infoSystemFinished( QString target )
+{
+ tDebug() << Q_FUNC_INFO;
+ Q_UNUSED( target );
+
+ if ( target != id() )
+ return;
+
+ if ( --m_infoJobs == 0 )
+ {
+ disconnect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
+ this, SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) );
+
+ disconnect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ),
+ this, SLOT( infoSystemFinished( QString ) ) );
+ }
+
+ emit updated();
+}
+
+
int
Query::levenshtein( const QString& source, const QString& target )
{
diff --git a/src/libtomahawk/Query.h b/src/libtomahawk/Query.h
index 6565c2e55..a2656684e 100644
--- a/src/libtomahawk/Query.h
+++ b/src/libtomahawk/Query.h
@@ -27,6 +27,7 @@
#include "Typedefs.h"
#include "Result.h"
+#include "infosystem/InfoSystem.h"
#include "DllMacro.h"
@@ -39,6 +40,22 @@ namespace Tomahawk
class Resolver;
+struct SocialAction
+{
+ QVariant action;
+ QVariant value;
+ QVariant timestamp;
+ Tomahawk::source_ptr source;
+};
+
+struct PlaybackLog
+{
+ Tomahawk::source_ptr source;
+ unsigned int timestamp;
+ unsigned int secsPlayed;
+};
+
+
class DLLEXPORT Query : public QObject
{
Q_OBJECT
@@ -119,11 +136,18 @@ public:
void setLoved( bool loved );
bool loved();
+ void loadStats();
+ QList< Tomahawk::PlaybackLog > playbackHistory( const Tomahawk::source_ptr& source = Tomahawk::source_ptr() ) const;
+ void setPlaybackHistory( const QList< Tomahawk::PlaybackLog >& playbackData );
+ unsigned int playbackCount( const Tomahawk::source_ptr& source = Tomahawk::source_ptr() );
+
void loadSocialActions();
QList< Tomahawk::SocialAction > allSocialActions() const;
void setAllSocialActions( const QList< Tomahawk::SocialAction >& socialActions );
QString socialActionDescription( const QString& action, DescriptionMode mode ) const;
+ QList similarTracks() const;
+
QWeakPointer< Tomahawk::Query > weakRef() { return m_ownRef; }
void setWeakRef( QWeakPointer< Tomahawk::Query > weakRef ) { m_ownRef = weakRef; }
@@ -141,8 +165,9 @@ signals:
void coverChanged();
- // emitted when social actions are loaded
void socialActionsLoaded();
+ void statsLoaded();
+ void similarTracksLoaded();
void updated();
public slots:
@@ -160,9 +185,11 @@ public slots:
void onResolverRemoved();
private slots:
+ void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output );
+ void infoSystemFinished( QString target );
+
void onResultStatusChanged();
void refreshResults();
- void onSocialActionsLoaded();
private:
Query();
@@ -211,12 +238,19 @@ private:
QList< QWeakPointer< Tomahawk::Resolver > > m_resolvers;
mutable QMutex m_mutex;
-
QWeakPointer< Tomahawk::Query > m_ownRef;
+ bool m_playbackHistoryLoaded;
+ QList< PlaybackLog > m_playbackHistory;
+
bool m_socialActionsLoaded;
QHash< QString, QVariant > m_currentSocialActions;
QList< SocialAction > m_allSocialActions;
+
+ bool m_simTracksLoaded;
+ QList m_similarTracks;
+
+ mutable int m_infoJobs;
};
}; //ns
diff --git a/src/libtomahawk/Result.h b/src/libtomahawk/Result.h
index be86e0157..bfa6ded64 100644
--- a/src/libtomahawk/Result.h
+++ b/src/libtomahawk/Result.h
@@ -36,16 +36,6 @@ class DatabaseCommand_LoadFile;
namespace Tomahawk
{
-
-struct SocialAction
-{
- QVariant action;
- QVariant value;
- QVariant timestamp;
- Tomahawk::source_ptr source;
-};
-
-
class DLLEXPORT Result : public QObject
{
Q_OBJECT
diff --git a/src/libtomahawk/Source.cpp b/src/libtomahawk/Source.cpp
index 00fe429f0..cd625a06b 100644
--- a/src/libtomahawk/Source.cpp
+++ b/src/libtomahawk/Source.cpp
@@ -31,9 +31,11 @@
#include "database/Database.h"
#include
+#include
#include "utils/Logger.h"
#include "utils/TomahawkUtilsGui.h"
+#include "utils/TomahawkCache.h"
#include "database/DatabaseCommand_SocialAction.h"
using namespace Tomahawk;
@@ -125,12 +127,35 @@ Source::setAvatar( const QPixmap& avatar )
{
delete m_avatar;
m_avatar = new QPixmap( avatar );
+ m_fancyAvatar = 0;
+
+ QByteArray ba;
+ QBuffer buffer( &ba );
+ buffer.open( QIODevice::WriteOnly );
+ avatar.save( &buffer, "PNG" );
+
+ tDebug() << Q_FUNC_INFO << friendlyName() << m_username << ba.count();
+ TomahawkUtils::Cache::instance()->putData( "Sources", 7776000000 /* 90 days */, m_username, ba );
}
QPixmap
Source::avatar( AvatarStyle style, const QSize& size ) const
{
+ if ( !m_avatar )
+ {
+ m_avatar = new QPixmap();
+ QByteArray ba = TomahawkUtils::Cache::instance()->getData( "Sources", m_username ).toByteArray();
+
+ if ( ba.count() )
+ m_avatar->loadFromData( ba );
+ if ( m_avatar->isNull() )
+ {
+ delete m_avatar;
+ m_avatar = 0;
+ }
+ }
+
if ( style == FancyStyle && m_avatar && !m_fancyAvatar )
m_fancyAvatar = new QPixmap( TomahawkUtils::createAvatarFrame( QPixmap( *m_avatar ) ) );
diff --git a/src/libtomahawk/Source.h b/src/libtomahawk/Source.h
index 1c3dc82ee..cd45bbc83 100644
--- a/src/libtomahawk/Source.h
+++ b/src/libtomahawk/Source.h
@@ -157,7 +157,7 @@ private:
QList< QSharedPointer > m_cmds;
int m_commandCount;
- QPixmap* m_avatar;
+ mutable QPixmap* m_avatar;
mutable QPixmap* m_fancyAvatar;
mutable QHash< int, QPixmap > m_coverCache;
diff --git a/src/libtomahawk/SourcePlaylistInterface.cpp b/src/libtomahawk/SourcePlaylistInterface.cpp
index 40bd9bc20..c2d818bcc 100644
--- a/src/libtomahawk/SourcePlaylistInterface.cpp
+++ b/src/libtomahawk/SourcePlaylistInterface.cpp
@@ -75,7 +75,12 @@ SourcePlaylistInterface::nextItem()
}
m_gotNextItem = false;
- m_currentItem = m_source.data()->currentTrack()->results().first();
+
+ if ( m_source.data()->currentTrack()->numResults() )
+ m_currentItem = m_source.data()->currentTrack()->results().first();
+ else
+ m_currentItem = result_ptr();
+
return m_currentItem;
}
diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp
index 56a57df17..f8aa166e3 100644
--- a/src/libtomahawk/ViewManager.cpp
+++ b/src/libtomahawk/ViewManager.cpp
@@ -51,6 +51,7 @@
#include "widgets/infowidgets/SourceInfoWidget.h"
#include "widgets/infowidgets/ArtistInfoWidget.h"
#include "widgets/infowidgets/AlbumInfoWidget.h"
+#include "widgets/infowidgets/TrackInfoWidget.h"
#include "widgets/NewPlaylistWidget.h"
#include "widgets/AnimatedSplitter.h"
@@ -256,6 +257,25 @@ ViewManager::show( const Tomahawk::album_ptr& album, Tomahawk::ModelMode initial
}
+Tomahawk::ViewPage*
+ViewManager::show( const Tomahawk::query_ptr& query )
+{
+ TrackInfoWidget* swidget;
+ if ( !m_trackViews.contains( query ) || m_trackViews.value( query ).isNull() )
+ {
+ swidget = new TrackInfoWidget( query );
+ m_trackViews.insert( query, swidget );
+ }
+ else
+ {
+ swidget = m_trackViews.value( query ).data();
+ }
+
+ setPage( swidget );
+ return swidget;
+}
+
+
Tomahawk::ViewPage*
ViewManager::show( const Tomahawk::collection_ptr& collection )
{
@@ -474,6 +494,8 @@ ViewManager::showRecentPlaysPage()
pv->setAttribute( Qt::WA_MacShowFocusRect, 0 );
RecentlyPlayedModel* raModel = new RecentlyPlayedModel( source_ptr(), pv );
+ raModel->setTitle( tr( "Recently Played Tracks" ) );
+ raModel->setDescription( tr( "Recently played tracks from all your friends" ) );
raModel->setStyle( TrackModel::Large );
PlaylistLargeItemDelegate* del = new PlaylistLargeItemDelegate( PlaylistLargeItemDelegate::RecentlyPlayed, pv, pv->proxyModel() );
diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h
index f84511476..31d86012e 100644
--- a/src/libtomahawk/ViewManager.h
+++ b/src/libtomahawk/ViewManager.h
@@ -55,6 +55,7 @@ class TrackView;
class SourceInfoWidget;
class InfoBar;
class TopBar;
+class TrackInfoWidget;
class WelcomeWidget;
class WhatsHotWidget;
class QPushButton;
@@ -151,6 +152,7 @@ public slots:
Tomahawk::ViewPage* show( const Tomahawk::dynplaylist_ptr& playlist );
Tomahawk::ViewPage* show( const Tomahawk::artist_ptr& artist );
Tomahawk::ViewPage* show( const Tomahawk::album_ptr& album, Tomahawk::ModelMode withInitialMode = Tomahawk::InfoSystemMode );
+ Tomahawk::ViewPage* show( const Tomahawk::query_ptr& query );
Tomahawk::ViewPage* show( const Tomahawk::collection_ptr& collection );
Tomahawk::ViewPage* show( const Tomahawk::source_ptr& source );
@@ -217,6 +219,7 @@ private:
QHash< Tomahawk::collection_ptr, QWeakPointer > m_collectionAlbumViews;
QHash< Tomahawk::artist_ptr, QWeakPointer > m_artistViews;
QHash< Tomahawk::album_ptr, QWeakPointer > m_albumViews;
+ QHash< Tomahawk::query_ptr, QWeakPointer > m_trackViews;
QHash< Tomahawk::playlist_ptr, QWeakPointer > m_playlistViews;
QHash< Tomahawk::source_ptr, QWeakPointer > m_sourceViews;
diff --git a/src/libtomahawk/database/DatabaseCommand_TrackStats.cpp b/src/libtomahawk/database/DatabaseCommand_TrackStats.cpp
new file mode 100644
index 000000000..a85397dee
--- /dev/null
+++ b/src/libtomahawk/database/DatabaseCommand_TrackStats.cpp
@@ -0,0 +1,90 @@
+/* === This file is part of Tomahawk Player - ===
+ *
+ * Copyright 2012, Christian Muehlhaeuser
+ *
+ * Tomahawk is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Tomahawk is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Tomahawk. If not, see .
+ */
+
+#include "DatabaseCommand_TrackStats.h"
+
+#include "DatabaseImpl.h"
+#include "SourceList.h"
+#include "utils/Logger.h"
+
+using namespace Tomahawk;
+
+
+DatabaseCommand_TrackStats::DatabaseCommand_TrackStats( const query_ptr& query, QObject* parent )
+ : DatabaseCommand( parent )
+ , m_query( query )
+{
+}
+
+
+DatabaseCommand_TrackStats::DatabaseCommand_TrackStats( const artist_ptr& artist, QObject* parent )
+ : DatabaseCommand( parent )
+ , m_artist( artist )
+{
+}
+
+
+void
+DatabaseCommand_TrackStats::exec( DatabaseImpl* dbi )
+{
+ TomahawkSqlQuery query = dbi->newquery();
+
+ if ( !m_query.isNull() )
+ {
+ int artid = dbi->artistId( m_query->artist(), false );
+ if( artid < 1 )
+ return;
+
+ int trkid = dbi->trackId( artid, m_query->track(), false );
+ if( trkid < 1 )
+ return;
+
+ query.prepare( "SELECT * "
+ "FROM playback_log "
+ "WHERE track = ?" );
+ query.addBindValue( trkid );
+ query.exec();
+ }
+ else if ( !m_artist.isNull() )
+ {
+ query.prepare( "SELECT playback_log.* "
+ "FROM playback_log, track "
+ "WHERE playback_log.track = track.id AND track.artist = ?" );
+ query.addBindValue( m_artist->id() );
+ query.exec();
+ }
+
+ QList< Tomahawk::PlaybackLog > playbackData;
+ while ( query.next() )
+ {
+ Tomahawk::PlaybackLog log;
+ log.source = SourceList::instance()->get( query.value( 1 ).toInt() ); // source
+ log.timestamp = query.value( 3 ).toUInt();
+ log.secsPlayed = query.value( 4 ).toUInt();
+
+ if ( !log.source.isNull() )
+ playbackData.append( log );
+ }
+
+ if ( !m_query.isNull() )
+ m_query->setPlaybackHistory( playbackData );
+ else
+ m_artist->setPlaybackHistory( playbackData );
+
+ emit done( playbackData );
+}
diff --git a/src/libtomahawk/database/DatabaseCommand_TrackStats.h b/src/libtomahawk/database/DatabaseCommand_TrackStats.h
new file mode 100644
index 000000000..2b8b5483b
--- /dev/null
+++ b/src/libtomahawk/database/DatabaseCommand_TrackStats.h
@@ -0,0 +1,51 @@
+/* === This file is part of Tomahawk Player - ===
+ *
+ * Copyright 2012, Christian Muehlhaeuser
+ *
+ * Tomahawk is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Tomahawk is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Tomahawk. If not, see .
+ */
+
+#ifndef DATABASECOMMAND_TRACKSTATS_H
+#define DATABASECOMMAND_TRACKSTATS_H
+
+#include
+
+#include "DatabaseCommand.h"
+#include "Typedefs.h"
+#include "Query.h"
+#include "Artist.h"
+
+#include "DllMacro.h"
+
+class DLLEXPORT DatabaseCommand_TrackStats : public DatabaseCommand
+{
+Q_OBJECT
+
+public:
+ explicit DatabaseCommand_TrackStats( const Tomahawk::query_ptr& query, QObject* parent = 0 );
+ explicit DatabaseCommand_TrackStats( const Tomahawk::artist_ptr& artist, QObject* parent = 0 );
+
+ virtual void exec( DatabaseImpl* lib );
+ virtual bool doesMutates() const { return false; }
+ virtual QString commandname() const { return "trackstats"; }
+
+signals:
+ void done( QList< Tomahawk::PlaybackLog >& playbackData );
+
+private:
+ Tomahawk::query_ptr m_query;
+ Tomahawk::artist_ptr m_artist;
+};
+
+#endif // DATABASECOMMAND_TRACKSTATS_H
diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h
index 8298c8166..1689e2bbb 100644
--- a/src/libtomahawk/infosystem/InfoSystem.h
+++ b/src/libtomahawk/infosystem/InfoSystem.h
@@ -73,6 +73,7 @@ enum InfoType { // as items are saved in cache, mark them here to not change the
InfoTrackDanceability = 20,
InfoTrackTempo = 21,
InfoTrackLoudness = 22,
+ InfoTrackSimilars = 23, // cached -- do not change
InfoArtistID = 25,
InfoArtistName = 26,
diff --git a/src/libtomahawk/infosystem/infoplugins/mac/AdiumPlugin.cpp b/src/libtomahawk/infosystem/infoplugins/mac/AdiumPlugin.cpp
index 1422eb710..0a50d1be2 100644
--- a/src/libtomahawk/infosystem/infoplugins/mac/AdiumPlugin.cpp
+++ b/src/libtomahawk/infosystem/infoplugins/mac/AdiumPlugin.cpp
@@ -141,6 +141,9 @@ AdiumPlugin::audioStarted( const Tomahawk::InfoSystem::PushInfoPair pushInfoPair
QVariantMap map = pushInfoPair.second.toMap();
+ if ( map.contains( "private" ) && map[ "private" ] == TomahawkSettings::FullyPrivate )
+ return;
+
if ( !map.contains( "trackinfo" ) || !map[ "trackinfo" ].canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
return;
diff --git a/src/libtomahawk/playlist/AlbumItem.cpp b/src/libtomahawk/playlist/AlbumItem.cpp
index 5759c861e..d97b222bf 100644
--- a/src/libtomahawk/playlist/AlbumItem.cpp
+++ b/src/libtomahawk/playlist/AlbumItem.cpp
@@ -103,3 +103,29 @@ AlbumItem::AlbumItem( const Tomahawk::artist_ptr& artist, AlbumItem* parent, int
connect( artist.data(), SIGNAL( updated() ), SIGNAL( dataChanged() ) );
}
+
+
+AlbumItem::AlbumItem( const Tomahawk::query_ptr& query, AlbumItem* parent, int row )
+ : QObject( parent )
+ , m_query( query )
+{
+ this->parent = parent;
+ if ( parent )
+ {
+ if ( row < 0 )
+ {
+ parent->children.append( this );
+ row = parent->children.count() - 1;
+ }
+ else
+ {
+ parent->children.insert( row, this );
+ }
+
+ this->model = parent->model;
+ }
+
+ toberemoved = false;
+
+ connect( query.data(), SIGNAL( updated() ), SIGNAL( dataChanged() ) );
+}
diff --git a/src/libtomahawk/playlist/AlbumItem.h b/src/libtomahawk/playlist/AlbumItem.h
index f5f70e0d6..7ced56118 100644
--- a/src/libtomahawk/playlist/AlbumItem.h
+++ b/src/libtomahawk/playlist/AlbumItem.h
@@ -26,6 +26,7 @@
#include "Artist.h"
#include "Album.h"
+#include "Query.h"
#include "DllMacro.h"
@@ -39,9 +40,11 @@ public:
explicit AlbumItem( AlbumItem* parent = 0, QAbstractItemModel* model = 0 );
explicit AlbumItem( const Tomahawk::artist_ptr& artist, AlbumItem* parent = 0, int row = -1 );
explicit AlbumItem( const Tomahawk::album_ptr& album, AlbumItem* parent = 0, int row = -1 );
+ explicit AlbumItem( const Tomahawk::query_ptr& query, AlbumItem* parent = 0, int row = -1 );
const Tomahawk::artist_ptr& artist() const { return m_artist; }
const Tomahawk::album_ptr& album() const { return m_album; }
+ const Tomahawk::query_ptr& query() const { return m_query; }
AlbumItem* parent;
QList children;
@@ -57,6 +60,7 @@ signals:
private:
Tomahawk::artist_ptr m_artist;
Tomahawk::album_ptr m_album;
+ Tomahawk::query_ptr m_query;
};
#endif // ALBUMITEM_H
diff --git a/src/libtomahawk/playlist/AlbumItemDelegate.cpp b/src/libtomahawk/playlist/AlbumItemDelegate.cpp
index db0a0a74f..b8a3b2a78 100644
--- a/src/libtomahawk/playlist/AlbumItemDelegate.cpp
+++ b/src/libtomahawk/playlist/AlbumItemDelegate.cpp
@@ -71,7 +71,7 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
painter->save();
painter->setRenderHint( QPainter::Antialiasing );
- if ( !( option.state & QStyle::State_Selected ) )
+/* if ( !( option.state & QStyle::State_Selected ) )
{
QRect shadowRect = option.rect.adjusted( 5, 4, -5, -40 );
painter->setPen( QColor( 90, 90, 90 ) );
@@ -92,24 +92,54 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
painter->drawLine( shadowRect.topLeft() + QPoint( -2, 3 ), shadowRect.bottomLeft() + QPoint( -2, 1 ) );
painter->drawLine( shadowRect.topRight() + QPoint( 3, 3 ), shadowRect.bottomRight() + QPoint( 3, 1 ) );
painter->drawLine( shadowRect.bottomLeft() + QPoint( 0, 4 ), shadowRect.bottomRight() + QPoint( 0, 4 ) );
- }
+ }*/
- QRect r = option.rect.adjusted( 6, 5, -6, -41 );
+// QRect r = option.rect.adjusted( 6, 5, -6, -41 );
+ QRect r = option.rect;
+
+ QString top, bottom;
+ if ( !item->album().isNull() )
+ {
+ top = item->album()->name();
+
+ if ( !item->album()->artist().isNull() )
+ bottom = item->album()->artist()->name();
+ }
+ else if ( !item->artist().isNull() )
+ {
+ top = item->artist()->name();
+ }
+ else
+ {
+ top = item->query()->track();
+ bottom = item->query()->artist();
+ }
if ( !m_covers.contains( index ) )
{
- m_covers.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->album(), r.size(), TomahawkUtils::CoverInCase ) ) );
- _detail::Closure* closure = NewClosure( m_covers[ index ], SIGNAL( repaintRequest() ), const_cast(this), SLOT( doUpdateIndex( const QPersistentModelIndex& ) ), QPersistentModelIndex( index ) );
+ if ( !item->album().isNull() )
+ {
+ m_covers.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->album(), r.size(), TomahawkUtils::Grid ) ) );
+ }
+ else if ( !item->artist().isNull() )
+ {
+ m_covers.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->artist(), r.size(), TomahawkUtils::Grid ) ) );
+ }
+ else
+ {
+ m_covers.insert( index, QSharedPointer< Tomahawk::PixmapDelegateFader >( new Tomahawk::PixmapDelegateFader( item->query(), r.size(), TomahawkUtils::Grid ) ) );
+ }
+
+ _detail::Closure* closure = NewClosure( m_covers[ index ], SIGNAL( repaintRequest() ), const_cast(this), SLOT( doUpdateIndex( QPersistentModelIndex ) ), QPersistentModelIndex( index ) );
closure->setAutoDelete( false );
}
const QPixmap cover = m_covers[ index ]->currentPixmap();
- if ( option.state & QStyle::State_Selected )
+ if ( false && option.state & QStyle::State_Selected )
{
#if defined(Q_WS_MAC) || defined(Q_WS_WIN)
painter->save();
- painter->setRenderHint( QPainter::Antialiasing );
QPainterPath border;
border.addRoundedRect( r.adjusted( -2, -2, 2, 2 ), 3, 3 );
@@ -124,46 +154,63 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
#endif
}
- painter->drawPixmap( r, cover );
+ painter->drawPixmap( r, cover.scaled( r.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );
- painter->setPen( opt.palette.color( QPalette::Text ) );
+ if ( m_hoverIndex == index )
+ {
+ painter->save();
+
+ painter->setPen( QColor( 33, 33, 33 ) );
+ painter->setBrush( QColor( 33, 33, 33 ) );
+ painter->setOpacity( 0.5 );
+ painter->drawRect( r );
+
+ painter->restore();
+ }
+
+ painter->save();
+
+ painter->setPen( QColor( 33, 33, 33 ) );
+ painter->setBrush( QColor( 33, 33, 33 ) );
+ painter->setOpacity( 0.5 );
+ painter->drawRoundedRect( r.adjusted( 4, +r.height() - 36, -4, -4 ), 3, 3 );
+
+ painter->restore();
+
+ painter->setPen( opt.palette.color( QPalette::HighlightedText ) );
QTextOption to;
to.setWrapMode( QTextOption::NoWrap );
QString text;
QFont font = opt.font;
- font.setPixelSize( 11 );
+ font.setPixelSize( 10 );
QFont boldFont = font;
boldFont.setBold( true );
+ boldFont.setPixelSize( 14 );
- QRect textRect = option.rect.adjusted( 0, option.rect.height() - 32, 0, -2 );
-
- QString name;
- if ( !item->album().isNull() )
- name = item->album()->name();
- else if ( !item->artist().isNull() )
- name = item->artist()->name();
+ QRect textRect = option.rect.adjusted( 6, option.rect.height() - 36, -4, -6 );
painter->setFont( boldFont );
bool oneLiner = false;
- if ( item->album().isNull() || item->album()->artist().isNull() )
+ if ( bottom.isEmpty() )
oneLiner = true;
else
- oneLiner = ( textRect.height() / 2 < painter->fontMetrics().boundingRect( item->album()->name() ).height() ||
- textRect.height() / 2 < painter->fontMetrics().boundingRect( item->album()->artist()->name() ).height() );
+ oneLiner = ( textRect.height() / 2 < painter->fontMetrics().boundingRect( top ).height() ||
+ textRect.height() / 2 < painter->fontMetrics().boundingRect( bottom ).height() );
if ( oneLiner )
{
to.setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
- text = painter->fontMetrics().elidedText( name, Qt::ElideRight, textRect.width() - 3 );
+ text = painter->fontMetrics().elidedText( top, Qt::ElideRight, textRect.width() - 3 );
painter->drawText( textRect, text, to );
}
else
{
to.setAlignment( Qt::AlignHCenter | Qt::AlignTop );
- text = painter->fontMetrics().elidedText( item->album()->name(), Qt::ElideRight, textRect.width() - 3 );
+ text = painter->fontMetrics().elidedText( top, Qt::ElideRight, textRect.width() - 3 );
painter->drawText( textRect, text, to );
+ painter->setFont( font );
// If the user is hovering over an artist rect, draw a background so she knows it's clickable
QRect r = textRect;
r.setTop( r.bottom() - painter->fontMetrics().height() );
@@ -175,16 +222,16 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
}
else
{
- if ( !( option.state & QStyle::State_Selected ) )
+/* if ( !( option.state & QStyle::State_Selected ) )
#ifdef Q_WS_MAC
painter->setPen( opt.palette.color( QPalette::Dark ).darker( 200 ) );
#else
painter->setPen( opt.palette.color( QPalette::Dark ) );
-#endif
+#endif*/
}
to.setAlignment( Qt::AlignHCenter | Qt::AlignBottom );
- text = painter->fontMetrics().elidedText( item->album()->artist()->name(), Qt::ElideRight, textRect.width() - 10 );
+ text = painter->fontMetrics().elidedText( bottom, Qt::ElideRight, textRect.width() - 10 );
painter->drawText( textRect.adjusted( 5, -1, -5, -1 ), text, to );
// Calculate rect of artist on-hover button click area
@@ -207,6 +254,9 @@ AlbumItemDelegate::editorEvent( QEvent* event, QAbstractItemModel* model, const
event->type() != QEvent::Leave )
return false;
+ if ( event->type() == QEvent::MouseMove )
+ m_hoverIndex = index;
+
if ( m_artistNameRects.contains( index ) )
{
QMouseEvent* ev = static_cast< QMouseEvent* >( event );
diff --git a/src/libtomahawk/playlist/AlbumItemDelegate.h b/src/libtomahawk/playlist/AlbumItemDelegate.h
index cb25c7889..45b8853f3 100644
--- a/src/libtomahawk/playlist/AlbumItemDelegate.h
+++ b/src/libtomahawk/playlist/AlbumItemDelegate.h
@@ -61,6 +61,7 @@ private:
mutable QHash< QPersistentModelIndex, QSharedPointer< Tomahawk::PixmapDelegateFader > > m_covers;
QPersistentModelIndex m_hoveringOver;
+ QPersistentModelIndex m_hoverIndex;
QPixmap m_shadowPixmap;
};
diff --git a/src/libtomahawk/playlist/AlbumModel.cpp b/src/libtomahawk/playlist/AlbumModel.cpp
index 2b709ff1a..98ad354e0 100644
--- a/src/libtomahawk/playlist/AlbumModel.cpp
+++ b/src/libtomahawk/playlist/AlbumModel.cpp
@@ -110,7 +110,7 @@ AlbumModel::data( const QModelIndex& index, int role ) const
{
if ( role == Qt::SizeHintRole )
{
- return QSize( 116, 150 );
+ return m_itemSize;
}
AlbumItem* entry = itemFromIndex( index );
@@ -399,6 +399,35 @@ AlbumModel::addArtists( const QList& artists )
}
+void
+AlbumModel::addQueries( const QList& queries )
+{
+ emit loadingFinished();
+
+ if ( m_overwriteOnAdd )
+ clear();
+
+ int c = rowCount( QModelIndex() );
+ QPair< int, int > crows;
+ crows.first = c;
+ crows.second = c + queries.count() - 1;
+
+ emit beginInsertRows( QModelIndex(), crows.first, crows.second );
+
+ AlbumItem* albumitem;
+ foreach ( const query_ptr& query, queries )
+ {
+ albumitem = new AlbumItem( query, m_rootItem );
+ albumitem->index = createIndex( m_rootItem->children.count() - 1, 0, albumitem );
+
+ connect( albumitem, SIGNAL( dataChanged() ), SLOT( onDataChanged() ) );
+ }
+
+ emit endInsertRows();
+ emit itemCountChanged( rowCount( QModelIndex() ) );
+}
+
+
void
AlbumModel::onSourceAdded( const Tomahawk::source_ptr& source )
{
diff --git a/src/libtomahawk/playlist/AlbumModel.h b/src/libtomahawk/playlist/AlbumModel.h
index 297e600c6..3a1d80437 100644
--- a/src/libtomahawk/playlist/AlbumModel.h
+++ b/src/libtomahawk/playlist/AlbumModel.h
@@ -72,6 +72,9 @@ public:
virtual void setTitle( const QString& title ) { m_title = title; }
virtual void setDescription( const QString& description ) { m_description = description; }
+ QSize itemSize() const { return m_itemSize; }
+ void setItemSize( const QSize& size ) { m_itemSize = size; }
+
AlbumItem* findItem( const Tomahawk::artist_ptr& artist ) const;
AlbumItem* findItem( const Tomahawk::album_ptr& album ) const;
@@ -91,6 +94,7 @@ public slots:
void addAlbums( const QList& albums );
void addArtists( const QList& artists );
+ void addQueries( const QList& queries );
signals:
void repeatModeChanged( Tomahawk::PlaylistInterface::RepeatMode mode );
@@ -115,6 +119,8 @@ private:
QString m_description;
bool m_overwriteOnAdd;
+ QSize m_itemSize;
+
Tomahawk::collection_ptr m_collection;
};
diff --git a/src/libtomahawk/playlist/AlbumView.cpp b/src/libtomahawk/playlist/AlbumView.cpp
index 881a566b8..8db466435 100644
--- a/src/libtomahawk/playlist/AlbumView.cpp
+++ b/src/libtomahawk/playlist/AlbumView.cpp
@@ -54,9 +54,10 @@ AlbumView::AlbumView( QWidget* parent )
setDropIndicatorShown( false );
setDragDropOverwriteMode( false );
setUniformItemSizes( true );
- setSpacing( 16 );
+ setSpacing( 0 );
setContentsMargins( 0, 0, 0, 0 );
setMouseTracking( true );
+ setStyleSheet( "QListView { background-color: #323435; }" );
setResizeMode( Adjust );
setViewMode( IconMode );
@@ -144,6 +145,8 @@ AlbumView::onItemActivated( const QModelIndex& index )
ViewManager::instance()->show( item->album() );
else if ( !item->artist().isNull() )
ViewManager::instance()->show( item->artist() );
+ else if ( item->query()->numResults() )
+ AudioEngine::instance()->playItem( playlistinterface_ptr(), item->query()->results().first() );
}
}
@@ -179,21 +182,22 @@ AlbumView::resizeEvent( QResizeEvent* event )
if ( autoFitItems() )
{
#ifdef Q_WS_X11
- int scrollbar = verticalScrollBar()->isVisible() ? verticalScrollBar()->width() : 0;
+ int scrollbar = verticalScrollBar()->isVisible() ? verticalScrollBar()->width() + 16 : 0;
#else
int scrollbar = verticalScrollBar()->rect().width();
#endif
- int rectWidth = contentsRect().width() - scrollbar - 16 - 3;
+ int rectWidth = contentsRect().width() - scrollbar - 3;
+ int itemWidth = 160;
QSize itemSize = m_proxyModel->data( QModelIndex(), Qt::SizeHintRole ).toSize();
- int itemsPerRow = qFloor( rectWidth / ( itemSize.width() + 16 ) );
- int rightSpacing = rectWidth - ( itemsPerRow * ( itemSize.width() + 16 ) );
- int newSpacing = 16 + floor( rightSpacing / ( itemsPerRow + 1 ) );
+ int itemsPerRow = qFloor( rectWidth / itemWidth );
+// int rightSpacing = rectWidth - ( itemsPerRow * ( itemSize.width() + 16 ) );
+// int newSpacing = 16 + floor( rightSpacing / ( itemsPerRow + 1 ) );
- if ( itemsPerRow < 1 )
- setSpacing( 16 );
- else
- setSpacing( newSpacing );
+ int remSpace = rectWidth - ( itemsPerRow * itemWidth );
+ int extraSpace = remSpace / itemsPerRow;
+ int newItemWidth = itemWidth + extraSpace;
+ m_model->setItemSize( QSize( newItemWidth, newItemWidth ) );
if ( !m_inited )
{
diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp
index cfe4a03eb..d324e1dab 100644
--- a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp
+++ b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp
@@ -232,7 +232,7 @@ PlaylistItemDelegate::paintDetailed( QPainter* painter, const QStyleOptionViewIt
qApp->style()->drawControl( QStyle::CE_ItemViewItem, &opt, painter );
if ( m_view->hoveredIndex().row() == index.row() && m_view->hoveredIndex().column() == index.column() &&
- ( index.column() == TrackModel::Artist || index.column() == TrackModel::Album ) )
+ ( index.column() == TrackModel::Artist || index.column() == TrackModel::Album || index.column() == TrackModel::Track ) )
{
opt.rect.setWidth( opt.rect.width() - 16 );
QRect arrowRect( opt.rect.x() + opt.rect.width(), opt.rect.y() + 1, opt.rect.height() - 2, opt.rect.height() - 2 );
diff --git a/src/libtomahawk/playlist/TrackView.cpp b/src/libtomahawk/playlist/TrackView.cpp
index 74651b917..a49f5cc4c 100644
--- a/src/libtomahawk/playlist/TrackView.cpp
+++ b/src/libtomahawk/playlist/TrackView.cpp
@@ -600,7 +600,7 @@ TrackView::updateHoverIndex( const QPoint& pos )
if ( !m_model || m_model->style() != TrackModel::Detailed )
return;
- if ( idx.column() == TrackModel::Artist || idx.column() == TrackModel::Album )
+ if ( idx.column() == TrackModel::Artist || idx.column() == TrackModel::Album || idx.column() == TrackModel::Track )
{
if ( pos.x() > header()->sectionViewportPosition( idx.column() ) + header()->sectionSize( idx.column() ) - 16 &&
pos.x() < header()->sectionViewportPosition( idx.column() ) + header()->sectionSize( idx.column() ) )
@@ -686,6 +686,12 @@ TrackView::mousePressEvent( QMouseEvent* event )
break;
}
+ case TrackModel::Track:
+ {
+ ViewManager::instance()->show( item->query() );
+ break;
+ }
+
default:
break;
}
diff --git a/src/libtomahawk/utils/PixmapDelegateFader.cpp b/src/libtomahawk/utils/PixmapDelegateFader.cpp
index c0a72fd63..232e9e886 100644
--- a/src/libtomahawk/utils/PixmapDelegateFader.cpp
+++ b/src/libtomahawk/utils/PixmapDelegateFader.cpp
@@ -51,13 +51,15 @@ PixmapDelegateFader::PixmapDelegateFader( const artist_ptr& artist, const QSize&
{
if ( !m_artist.isNull() )
{
- connect( m_artist.data(), SIGNAL( coverChanged() ), this, SLOT( artistChanged() ) );
+ connect( m_artist.data(), SIGNAL( updated() ), SLOT( trackChanged() ) );
+ connect( m_artist.data(), SIGNAL( coverChanged() ), SLOT( artistChanged() ) );
m_currentReference = m_artist->cover( size, forceLoad );
}
init();
}
+
PixmapDelegateFader::PixmapDelegateFader( const album_ptr& album, const QSize& size, TomahawkUtils::ImageMode mode, bool forceLoad )
: m_album( album )
, m_size( size )
@@ -68,7 +70,8 @@ PixmapDelegateFader::PixmapDelegateFader( const album_ptr& album, const QSize& s
{
if ( !m_album.isNull() )
{
- connect( m_album.data(), SIGNAL( coverChanged() ), this, SLOT( albumChanged() ) );
+ connect( m_album.data(), SIGNAL( updated() ), SLOT( trackChanged() ) );
+ connect( m_album.data(), SIGNAL( coverChanged() ), SLOT( albumChanged() ) );
m_currentReference = m_album->cover( size, forceLoad );
}
@@ -86,7 +89,8 @@ PixmapDelegateFader::PixmapDelegateFader( const query_ptr& track, const QSize& s
{
if ( !m_track.isNull() )
{
- connect( m_track.data(), SIGNAL( coverChanged() ), this, SLOT( trackChanged() ) );
+ connect( m_track.data(), SIGNAL( updated() ), SLOT( trackChanged() ) );
+ connect( m_track.data(), SIGNAL( coverChanged() ), SLOT( trackChanged() ) );
m_currentReference = m_track->cover( size, forceLoad );
}
@@ -96,7 +100,6 @@ PixmapDelegateFader::PixmapDelegateFader( const query_ptr& track, const QSize& s
PixmapDelegateFader::~PixmapDelegateFader()
{
-
}
@@ -114,7 +117,7 @@ PixmapDelegateFader::init()
else if ( !m_artist.isNull() )
m_current = m_currentReference = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, m_mode, m_size );
else if ( !m_track.isNull() )
- m_current = m_currentReference = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, m_mode, m_size );
+ m_current = m_currentReference = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultArtistImage, m_mode, m_size );
return;
}
@@ -136,6 +139,7 @@ PixmapDelegateFader::albumChanged()
QMetaObject::invokeMethod( this, "setPixmap", Qt::QueuedConnection, Q_ARG( QPixmap, m_album->cover( m_size ) ) );
}
+
void
PixmapDelegateFader::artistChanged()
{
diff --git a/src/libtomahawk/utils/TomahawkUtils.cpp b/src/libtomahawk/utils/TomahawkUtils.cpp
index 101954090..9d5049ada 100644
--- a/src/libtomahawk/utils/TomahawkUtils.cpp
+++ b/src/libtomahawk/utils/TomahawkUtils.cpp
@@ -409,15 +409,15 @@ proxyFactory( bool makeClone, bool noMutexLocker )
{
if ( s_threadProxyFactoryHash.contains( QThread::currentThread() ) )
return s_threadProxyFactoryHash[ QThread::currentThread() ];
-
- if ( !s_threadProxyFactoryHash.contains( TOMAHAWK_APPLICATION::instance()->thread() ) )
- return 0;
}
// create a new proxy factory for this thread
- TomahawkUtils::NetworkProxyFactory *mainProxyFactory = s_threadProxyFactoryHash[ TOMAHAWK_APPLICATION::instance()->thread() ];
TomahawkUtils::NetworkProxyFactory *newProxyFactory = new TomahawkUtils::NetworkProxyFactory();
- *newProxyFactory = *mainProxyFactory;
+ if ( s_threadProxyFactoryHash.contains( TOMAHAWK_APPLICATION::instance()->thread() ) )
+ {
+ TomahawkUtils::NetworkProxyFactory *mainProxyFactory = s_threadProxyFactoryHash[ TOMAHAWK_APPLICATION::instance()->thread() ];
+ *newProxyFactory = *mainProxyFactory;
+ }
if ( !makeClone )
s_threadProxyFactoryHash[ QThread::currentThread() ] = newProxyFactory;
diff --git a/src/libtomahawk/utils/TomahawkUtils.h b/src/libtomahawk/utils/TomahawkUtils.h
index 83441a3fd..7a4d5c1af 100644
--- a/src/libtomahawk/utils/TomahawkUtils.h
+++ b/src/libtomahawk/utils/TomahawkUtils.h
@@ -53,12 +53,14 @@ namespace TomahawkUtils
NowPlayingSpeaker,
InfoIcon
};
+
enum ImageMode
{
Original,
CoverInCase,
AvatarInFrame,
- ScaledCover
+ ScaledCover,
+ Grid
};
diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp
index 5e9f5478d..7bc83dc8f 100644
--- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp
+++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp
@@ -338,11 +338,16 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size )
case DefaultAlbumCover:
if ( mode == CoverInCase )
pixmap = QPixmap( RESPATH "images/no-album-art-placeholder.png" );
+ else if ( mode == Grid )
+ pixmap = QPixmap( RESPATH "images/album-placeholder-grid.png" );
else
pixmap = QPixmap( RESPATH "images/no-album-no-case.png" );
break;
case DefaultArtistImage:
+ if ( mode == Grid )
+ pixmap = QPixmap( RESPATH "images/artist-placeholder-grid.png" );
+ else
pixmap = QPixmap( RESPATH "images/no-artist-image-placeholder.png" );
break;
diff --git a/src/libtomahawk/widgets/WelcomeWidget.cpp b/src/libtomahawk/widgets/WelcomeWidget.cpp
index 12a18a6b6..e991e1ef5 100644
--- a/src/libtomahawk/widgets/WelcomeWidget.cpp
+++ b/src/libtomahawk/widgets/WelcomeWidget.cpp
@@ -249,7 +249,7 @@ PlaylistDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
rect.setTop( pixmapRect.bottom() - painter->fontMetrics().height() - 1 );
rect.setBottom( pixmapRect.bottom() + 1 );
- QColor figColor( 153, 153, 153 );
+ QColor figColor( "#464b55" );
painter->setPen( figColor );
painter->setBrush( figColor );
diff --git a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp
new file mode 100644
index 000000000..0e79b788a
--- /dev/null
+++ b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.cpp
@@ -0,0 +1,213 @@
+/* === This file is part of Tomahawk Player - ===
+ *
+ * Copyright 2010-2011, Christian Muehlhaeuser
+ * Copyright 2010-2012, Jeff Mitchell
+ * Copyright 2010-2011, Leo Franchi
+ *
+ * Tomahawk is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Tomahawk is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Tomahawk. If not, see .
+ */
+
+#include "TrackInfoWidget.h"
+#include "ui_TrackInfoWidget.h"
+
+#include "ViewManager.h"
+#include "SourceList.h"
+#include "playlist/AlbumModel.h"
+
+#include "utils/TomahawkUtils.h"
+#include "utils/Logger.h"
+
+using namespace Tomahawk;
+
+
+TrackInfoWidget::TrackInfoWidget( const Tomahawk::query_ptr& query, QWidget* parent )
+ : QWidget( parent )
+ , ui( new Ui::TrackInfoWidget )
+ , m_infoId( uuid() )
+{
+ ui->setupUi( this );
+
+ layout()->setSpacing( 0 );
+ ui->headerWidget->setStyleSheet( "QWidget#headerWidget { background-image: url(" RESPATH "images/playlist-header-tiled.png); }" );
+ ui->tracksWidget->setStyleSheet( "background-color: #323435;" );
+ ui->statsLabel->setStyleSheet( "QLabel { background-image:url(); border: 2px solid #dddddd; background-color: #faf9f9; border-radius: 4px; padding: 12px; }" );
+
+ QFont f = font();
+ f.setBold( true );
+ f.setPixelSize( 18 );
+ ui->trackLabel->setFont( f );
+ ui->similarTracksLabel->setFont( f );
+
+ f.setPixelSize( 14 );
+ ui->artistLabel->setFont( f );
+ ui->albumLabel->setFont( f );
+ ui->byLabel->setFont( f );
+ ui->fromLabel->setFont( f );
+
+ f.setPixelSize( 12 );
+ ui->statsLabel->setFont( f );
+
+ ui->similarTracksView->setFrameShape( QFrame::NoFrame );
+ ui->similarTracksView->setAttribute( Qt::WA_MacShowFocusRect, 0 );
+ ui->similarTracksView->setStyleSheet( "QListView { background-color: transparent; } QListView::item { background-color: transparent; }" );
+
+ QPalette p = ui->trackLabel->palette();
+ p.setColor( QPalette::Foreground, Qt::white );
+ ui->trackLabel->setPalette( p );
+ ui->artistLabel->setPalette( p );
+ ui->albumLabel->setPalette( p );
+ ui->byLabel->setPalette( p );
+ ui->fromLabel->setPalette( p );
+
+ m_albumsModel = new AlbumModel( ui->similarTracksView );
+ ui->similarTracksView->setAlbumModel( m_albumsModel );
+ ui->similarTracksView->proxyModel()->sort( -1 );
+
+ m_pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultAlbumCover, TomahawkUtils::ScaledCover, QSize( 48, 48 ) );
+
+ load( query );
+}
+
+
+TrackInfoWidget::~TrackInfoWidget()
+{
+ delete ui;
+}
+
+
+Tomahawk::playlistinterface_ptr
+TrackInfoWidget::playlistInterface() const
+{
+ return ui->similarTracksView->playlistInterface();
+}
+
+
+bool
+TrackInfoWidget::isBeingPlayed() const
+{
+ //tDebug() << Q_FUNC_INFO << "audioengine playlistInterface = " << AudioEngine::instance()->currentTrackPlaylist()->id();
+ //tDebug() << Q_FUNC_INFO << "albumsView playlistInterface = " << ui->albumsView->playlistInterface()->id();
+ //tDebug() << Q_FUNC_INFO << "tracksView playlistInterface = " << ui->tracksView->playlistInterface()->id();
+ if ( ui->similarTracksView->playlistInterface() == AudioEngine::instance()->currentTrackPlaylist() )
+ return true;
+
+ return false;
+}
+
+
+void
+TrackInfoWidget::load( const query_ptr& query )
+{
+ m_query = query;
+ m_artist = Artist::get( m_query->artist() );
+ m_title = QString( "%1 - %2" ).arg( query->artist() ).arg( query->track() );
+
+ if ( !m_query.isNull() )
+ {
+ disconnect( m_query.data(), SIGNAL( statsLoaded() ), this, SLOT( onStatsLoaded() ) );
+ disconnect( m_query.data(), SIGNAL( updated() ), this, SLOT( onCoverUpdated() ) );
+ disconnect( m_artist.data(), SIGNAL( statsLoaded() ), this, SLOT( onStatsLoaded() ) );
+ disconnect( m_artist.data(), SIGNAL( similarArtistsLoaded() ), this, SLOT( onSimilarArtistsLoaded() ) );
+ }
+
+ connect( m_artist.data(), SIGNAL( similarArtistsLoaded() ), SLOT( onSimilarArtistsLoaded() ) );
+ connect( m_artist.data(), SIGNAL( statsLoaded() ), SLOT( onStatsLoaded() ) );
+ connect( m_query.data(), SIGNAL( similarTracksLoaded() ), SLOT( onSimilarTracksLoaded() ) );
+ connect( m_query.data(), SIGNAL( updated() ), SLOT( onCoverUpdated() ) );
+ connect( m_query.data(), SIGNAL( statsLoaded() ), SLOT( onStatsLoaded() ) );
+
+ m_artist->loadStats();
+ m_query->loadStats();
+ onCoverUpdated();
+
+ ui->trackLabel->setText( query->track() );
+ ui->artistLabel->setText( query->artist() );
+ ui->albumLabel->setText( query->album() );
+ ui->fromLabel->setVisible( !query->album().isEmpty() );
+
+ m_query->similarTracks();
+ m_albumsModel->addArtists( m_artist->similarArtists() );
+ m_albumsModel->clear();
+}
+
+
+void
+TrackInfoWidget::onCoverUpdated()
+{
+ if ( m_query->cover( QSize( 0, 0 ) ).isNull() )
+ return;
+
+ m_pixmap = m_query->cover( ui->cover->size() );
+ ui->cover->setPixmap( m_pixmap );
+}
+
+
+void
+TrackInfoWidget::onStatsLoaded()
+{
+ QList< Tomahawk::PlaybackLog > history = m_query->playbackHistory( SourceList::instance()->getLocal() );
+ const unsigned int trackCounter = m_query->playbackCount( SourceList::instance()->getLocal() );
+ const unsigned int artistCounter = m_artist->playbackCount( SourceList::instance()->getLocal() );
+
+ QString stats;
+
+ if ( trackCounter )
+ stats = tr( "You've listened to this track %n time(s).", "", trackCounter );
+ else
+ stats = tr( "You've never listened to this track before." );
+
+ if ( history.count() )
+ {
+ stats += "\n" + tr( "You first listened to it on %1." ).arg( QDateTime::fromTime_t( history.first().timestamp ).toString( "dd MMM yyyy" ) );
+ }
+
+ if ( artistCounter )
+ stats += "\n" + tr( "You've listened to %1 %n time(s).", "", artistCounter ).arg( m_artist->name() );
+ else
+ stats += "\n" + tr( "You've never listened to %1 before." ).arg( m_artist->name() );
+
+ ui->statsLabel->setText( stats );
+}
+
+
+void
+TrackInfoWidget::onSimilarArtistsLoaded()
+{
+ Artist* artist = qobject_cast( sender() );
+
+// m_albumsModel->addArtists( artist->similarArtists() );
+}
+
+
+void
+TrackInfoWidget::onSimilarTracksLoaded()
+{
+ m_albumsModel->addQueries( m_query->similarTracks() );
+}
+
+
+void
+TrackInfoWidget::changeEvent( QEvent* e )
+{
+ QWidget::changeEvent( e );
+ switch ( e->type() )
+ {
+ case QEvent::LanguageChange:
+ ui->retranslateUi( this );
+ break;
+
+ default:
+ break;
+ }
+}
diff --git a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.h b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.h
new file mode 100644
index 000000000..d03968dcd
--- /dev/null
+++ b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.h
@@ -0,0 +1,96 @@
+/* === This file is part of Tomahawk Player - ===
+ *
+ * Copyright 2010-2011, Christian Muehlhaeuser
+ * Copyright 2010-2011, Jeff Mitchell
+ * Copyright 2010-2011, Leo Franchi
+ *
+ * Tomahawk is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Tomahawk is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Tomahawk. If not, see .
+ */
+
+/**
+ * \class TrackInfoWidget
+ * \brief ViewPage, which displays a track
+ *
+ * This Tomahawk ViewPage displays a track
+ * It is our default ViewPage when showing an track via ViewManager.
+ *
+ */
+
+#ifndef TRACKINFOWIDGET_H
+#define TRACKINFOWIDGET_H
+
+#include
+
+#include "PlaylistInterface.h"
+#include "ViewPage.h"
+#include "infosystem/InfoSystem.h"
+
+#include "DllMacro.h"
+#include "Typedefs.h"
+
+class AlbumModel;
+
+namespace Ui
+{
+ class TrackInfoWidget;
+}
+
+class DLLEXPORT TrackInfoWidget : public QWidget, public Tomahawk::ViewPage
+{
+Q_OBJECT
+
+public:
+ TrackInfoWidget( const Tomahawk::query_ptr& query, QWidget* parent = 0 );
+ ~TrackInfoWidget();
+
+ virtual QWidget* widget() { return this; }
+ virtual Tomahawk::playlistinterface_ptr playlistInterface() const;
+
+ virtual QString title() const { return m_title; }
+ virtual QString description() const { return QString(); }
+ virtual QString longDescription() const { return QString(); }
+ virtual QPixmap pixmap() const { if ( m_pixmap.isNull() ) return Tomahawk::ViewPage::pixmap(); else return m_pixmap; }
+
+ virtual bool isTemporaryPage() const { return true; }
+ virtual bool showStatsBar() const { return false; }
+ virtual bool showInfoBar() const { return false; }
+
+ virtual bool jumpToCurrentTrack() { return false; }
+ virtual bool isBeingPlayed() const;
+
+public slots:
+ void load( const Tomahawk::query_ptr& query );
+
+protected:
+ void changeEvent( QEvent* e );
+
+private slots:
+ void onCoverUpdated();
+ void onStatsLoaded();
+ void onSimilarArtistsLoaded();
+ void onSimilarTracksLoaded();
+
+private:
+ Ui::TrackInfoWidget *ui;
+
+ Tomahawk::query_ptr m_query;
+ Tomahawk::artist_ptr m_artist;
+
+ AlbumModel* m_albumsModel;
+ QString m_title;
+ QPixmap m_pixmap;
+ QString m_infoId;
+};
+
+#endif // TRACKINFOWIDGET_H
diff --git a/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui
new file mode 100644
index 000000000..d6387b683
--- /dev/null
+++ b/src/libtomahawk/widgets/infowidgets/TrackInfoWidget.ui
@@ -0,0 +1,202 @@
+
+
+ TrackInfoWidget
+
+
+
+ 0
+ 0
+ 852
+ 571
+
+
+
+ Form
+
+
+
+ 0
+
+
+
+
+
+ 12
+
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+
+
+
+ Cover
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 16
+ 20
+
+
+
+
+
+
+
+
+
+ Track
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ by
+
+
+
+
+
+
+ Artist
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ from
+
+
+
+
+
+
+ Album
+
+
+
+
+
+
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Expanding
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 16
+ 20
+
+
+
+
+
+
+
+ Statistics
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+
+
+
+
+ Similar Tracks
+
+
+ 8
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ AlbumView
+ QListView
+ playlist/AlbumView.h
+
+
+
+
+
diff --git a/src/sourcetree/items/SourceItem.cpp b/src/sourcetree/items/SourceItem.cpp
index e6a6ee32c..1a4caa914 100644
--- a/src/sourcetree/items/SourceItem.cpp
+++ b/src/sourcetree/items/SourceItem.cpp
@@ -534,6 +534,12 @@ SourceItem::latestAdditionsClicked()
RecentlyAddedModel* raModel = new RecentlyAddedModel( m_source, cv );
raModel->setStyle( TrackModel::Large );
+ raModel->setTitle( tr( "Latest Additions" ) );
+
+ if ( m_source->isLocal() )
+ raModel->setDescription( tr( "Latest additions to your collection" ) );
+ else
+ raModel->setDescription( tr( "Latest additions to %1's collection" ).arg( m_source->friendlyName() ) );
PlaylistLargeItemDelegate* del = new PlaylistLargeItemDelegate( PlaylistLargeItemDelegate::LatestAdditions, cv, cv->proxyModel() );
connect( del, SIGNAL( updateIndex( QModelIndex ) ), cv, SLOT( update( QModelIndex ) ) );
@@ -568,6 +574,12 @@ SourceItem::recentPlaysClicked()
RecentlyPlayedModel* raModel = new RecentlyPlayedModel( m_source, pv );
raModel->setStyle( TrackModel::Large );
+ raModel->setTitle( tr( "Recently Played Tracks" ) );
+
+ if ( m_source->isLocal() )
+ raModel->setDescription( tr( "Your recently played tracks" ) );
+ else
+ raModel->setDescription( tr( "%1's recently played tracks" ).arg( m_source->friendlyName() ) );
PlaylistLargeItemDelegate* del = new PlaylistLargeItemDelegate( PlaylistLargeItemDelegate::RecentlyPlayed, pv, pv->proxyModel() );
connect( del, SIGNAL( updateIndex( QModelIndex ) ), pv, SLOT( update( QModelIndex ) ) );
diff --git a/src/sourcetree/items/TemporaryPageItem.cpp b/src/sourcetree/items/TemporaryPageItem.cpp
index 8da923333..669948e33 100644
--- a/src/sourcetree/items/TemporaryPageItem.cpp
+++ b/src/sourcetree/items/TemporaryPageItem.cpp
@@ -20,6 +20,7 @@
#include "ViewManager.h"
#include "widgets/infowidgets/AlbumInfoWidget.h"
#include "widgets/infowidgets/ArtistInfoWidget.h"
+#include "widgets/infowidgets/TrackInfoWidget.h"
#include "widgets/SearchWidget.h"
using namespace Tomahawk;
@@ -34,6 +35,8 @@ TemporaryPageItem::TemporaryPageItem ( SourcesModel* mdl, SourceTreeItem* parent
m_icon = QIcon( RESPATH "images/artist-icon.png" );
else if ( dynamic_cast< AlbumInfoWidget* >( page ) )
m_icon = QIcon( RESPATH "images/album-icon.png" );
+ else if ( dynamic_cast< TrackInfoWidget* >( page ) )
+ m_icon = QIcon( RESPATH "images/track-icon.png" );
else if ( dynamic_cast< SearchWidget* >( page ) )
m_icon = QIcon( RESPATH "images/search-icon.png" );
diff --git a/thirdparty/liblastfm2/README b/thirdparty/liblastfm2/README.md
similarity index 84%
rename from thirdparty/liblastfm2/README
rename to thirdparty/liblastfm2/README.md
index d39417ecc..4132ce5ea 100644
--- a/thirdparty/liblastfm2/README
+++ b/thirdparty/liblastfm2/README.md
@@ -4,19 +4,17 @@ liblastfm is a collection of libraries to help you integrate Last.fm services
into your rich desktop software. It is officially supported software developed
by Last.fm staff.
-Max Howell http://twitter.com/mxcl
-Jono Cole http://twitter.com/jonocole
-Doug Mansell http://twitter.com/dougma
+Michael Coffey http://twitter.com/eartle
-Fork it: http://github.com/mxcl/liblastfm
+Fork it: http://github.com/eartle/liblastfm
Dependencies
============
liblastfm dynamically links to:
-* Qt 4.4
- http://www.qtsoftware.com
+* Qt 4.8
+ http://qt.nokia.com/
* FFTW 3.2
Compiled with single precision
http://www.fftw.org
@@ -31,14 +29,6 @@ Mac OS X
sudo port upgrade installed
sudo port install libsamplerate fftw-3 qt4-mac-devel
-qt4-mac-devel will take a long time to build. So you may want to install the
-Trolltech binary package instead.
-
-MacPorts carries liblastfm now, so you may have downloaded this package simply
-to perform this next line:
-
- sudo port install liblastfm
-
Linux/*NIX
----------
Do something like this:
@@ -49,11 +39,11 @@ Additionally on Linux the configure process requires lsb_release. This is
usually already installed (correct me if I'm wrong).
Please note, we have only tested on Linux, but we think it'll work on all
-varieties of UNIX. If it doesn't, report the bug to mxcl on GitHub.
+varieties of UNIX. If it doesn't, report the bug to eartle on GitHub.
Windows
-------
-Install Ruby. Install Visual Studio 2005 or higher. Install Qt. Install the
+Install Ruby. Install Visual Studio 2008 or higher. Install Qt. Install the
Windows Server 2003 Platform SDK r2:
http://www.microsoft.com/Downloads/details.aspx?FamilyID=484269e2-3b89-47e3-8eb7-1f2be6d7123a
@@ -69,12 +59,10 @@ see the next section.
Installing liblastfm
====================
- ruby configure --release --prefix /usr/local && make && sudo make install
+ qmake && make && sudo make install
Packaging liblastfm
-------------------
-DESTDIR is supported.
-
liblastfm builds to two dynamic libraries (liblastfm.so and
liblastfm_fingerprint.so). liblastfm.so links only to Qt, but the
fingerprinting part has additional dependencies. So ideally, you would
diff --git a/thirdparty/liblastfm2/admin/lastfm.h.rb b/thirdparty/liblastfm2/admin/lastfm.h.rb
deleted file mode 100755
index 1582b7086..000000000
--- a/thirdparty/liblastfm2/admin/lastfm.h.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/ruby
-f = File.new(ARGV[0], "w")
-Dir["_include/lastfm/*"].each do |h|
- f.write %Q{#include "lastfm/#{File.basename h}"\n}
-end
\ No newline at end of file
diff --git a/thirdparty/liblastfm2/admin/utils.rb b/thirdparty/liblastfm2/admin/utils.rb
deleted file mode 100644
index 5a6772c4c..000000000
--- a/thirdparty/liblastfm2/admin/utils.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-cwd = File.dirname( __FILE__ )
-
-def h(s, n)
- puts '==> '+s
-end
-
-def h1 s
- h(s, 34)
-end
-
-def h2 s
- h(s, 33)
- yield
-end
-
-def qmake_env(env, qenv)
- env=Array.new(1,env) if env.instance_of? String
- values=Array.new
- env.each { |x| values << ENV[x] if ENV[x] }
- if values.size > 0
- "#{qenv} = #{values.join(' ')}\n"
- else
- nil
- end
-end
-
-class PkgConfigNotFound < RuntimeError; end
-class PkgNotFound < RuntimeError; end
-
-def pkgconfig pkg, prettyname
- system "pkg-config --exists '#{pkg}'"
- raise PkgConfigNotFound if $? == 127
- raise PkgNotFound.new(prettyname) if $? != 0
-end
diff --git a/thirdparty/liblastfm2/configure b/thirdparty/liblastfm2/configure
deleted file mode 100755
index f6c02fa88..000000000
--- a/thirdparty/liblastfm2/configure
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/ruby
-cwd = File.dirname( __FILE__ )
-require "#{cwd}/admin/utils.rb"
-
- h2 'Determining installation prefix' do
- if ARGV.include? '--prefix'
- n=ARGV.index '--prefix'
- ENV['LFM_PREFIX'] = ARGV[n+1]
- end
- ENV['LFM_PREFIX'] = '/usr/local' if ENV['LFM_PREFIX'].nil?
- if File.exists? ENV['LFM_PREFIX'] and !File.directory? ENV['LFM_PREFIX']
- abort "Installation prefix exists but isn't a directory: "+ENV['LFM_PREFIX']
- end
- puts "Will install to: "+ENV['LFM_PREFIX']
- end
-
- h2 "Configuring qmake..." do
- args=Array.new
- if ARGV.include? '--release'
- args << '-config release'
- else
- args << '-config debug'
- end
- if ARGV.include? '--no-strip'
- args << '"CONFIG += nostrip"'
- end
- ENV['LFM_QMAKE'] = "#{$qmake} #{args.join(' ')}"
- end
-
- h2 "Generating Makefile..." do
- hs = Array.new
- hs << 'global.h'
- hs << 'core/UrlBuilder.h' << 'core/XmlQuery.h' << 'core/misc.h'
- hs << 'fingerprint/Fingerprint.h' << 'fingerprint/FingerprintableSource.h'
- hs << 'radio/RadioStation.h' << 'radio/RadioTuner.h'
- hs << 'scrobble/Audioscrobbler.h' << 'scrobble/ScrobblePoint.h' << 'scrobble/ScrobbleCache.h'
- hs << 'types/Tasteometer.h' << 'types/AbstractType.h' << 'types/Track.h' << 'types/Mbid.h' << 'types/Artist.h' << 'types/Album.h' << 'types/FingerprintId.h' << 'types/Playlist.h' << 'types/Tag.h' << 'types/User.h' << 'types/Xspf.h'
- hs << 'ws/ws.h' << 'ws/InternetConnectionMonitor.h' << 'ws/NetworkAccessManager.h'
- uname = `uname`
- ENV['LFM_VERSION']="0.4.0"
- File.new("#{cwd}/Makefile", 'w').write `ruby admin/Makefile.rb #{hs.join(' ')}`
- end
-
- puts
- puts "Good, your configure is finished! Now type: make"
-
diff --git a/thirdparty/liblastfm2/lastfm.pro b/thirdparty/liblastfm2/lastfm.pro
new file mode 100644
index 000000000..32839418e
--- /dev/null
+++ b/thirdparty/liblastfm2/lastfm.pro
@@ -0,0 +1,142 @@
+TEMPLATE = lib
+CONFIG += dll
+QT = core network xml
+
+ROOT_DIR = .
+
+BUILD_DIR = _build
+DESTDIR = $$ROOT_DIR/_bin
+
+OBJECTS_DIR = $$BUILD_DIR
+MOC_DIR = $$BUILD_DIR
+UI_DIR = $$BUILD_DIR
+RCC_DIR = $$BUILD_DIR
+INCLUDEPATH += $$ROOT_DIR/_include
+
+win32:DEFINES += _CRT_SECURE_NO_WARNINGS WIN32_LEAN_AND_MEAN
+
+mac {
+ QMAKE_PKGINFO_TYPEINFO = last
+ QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4
+}
+
+*g++* {
+ # allow use of 'and', 'or', etc. as symbols
+ QMAKE_CXXFLAGS += -fno-operator-names
+ QMAKE_CXXFLAGS_RELEASE += -fvisibility-inlines-hidden -fvisibility=hidden
+}
+
+# used to determine if we should statically link the fingerprint library
+# used by lastfm-desktop and other projects
+CONFIG -= app_bundle
+
+win32{
+INSTALLS = headers
+headers.path = _include/lastfm
+headers.files = src/*.h
+}
+else{
+ isEmpty( PREFIX ) {
+ PREFIX=/usr/local
+ }
+INSTALLS = target headers
+target.path = $${PREFIX}/lib
+headers.path = $${PREFIX}/include/lastfm
+headers.files = src/*.h
+}
+
+INCLUDEPATH += src
+
+win32{
+ DEFINES += LASTFM_LIB _ATL_DLL
+ LIBS += winhttp.lib wbemuuid.lib # ws configuration
+}
+mac{
+ LIBS += -framework SystemConfiguration # ws configuration
+ #TODO we should only use these with the carbon version of Qt!
+ LIBS += -framework CoreFoundation # various
+}
+
+unix:!mac{
+ QT += dbus
+}
+
+SOURCES += \
+ src/ws.cpp \
+ src/NetworkConnectionMonitor.cpp \
+ src/NetworkAccessManager.cpp \
+ src/InternetConnectionMonitor.cpp \
+ src/Xspf.cpp \
+ src/User.cpp \
+ src/Track.cpp \
+ src/Tasteometer.cpp \
+ src/Tag.cpp \
+ src/Playlist.cpp \
+ src/Mbid.cpp \
+ src/FingerprintId.cpp \
+ src/Artist.cpp \
+ src/Album.cpp \
+ src/ScrobbleCache.cpp \
+ src/ScrobblePoint.cpp \
+ src/Audioscrobbler.cpp \
+ src/RadioTuner.cpp \
+ src/RadioStation.cpp \
+ src/XmlQuery.cpp \
+ src/UrlBuilder.cpp \
+ src/misc.cpp \
+ src/Chart.cpp \
+ src/Auth.cpp \
+ src/Library.cpp
+
+HEADERS += \
+ src/ws.h \
+ src/NetworkConnectionMonitor.h \
+ src/NetworkAccessManager.h \
+ src/InternetConnectionMonitor.h \
+ src/Xspf.h \
+ src/User.h \
+ src/Track.h \
+ src/Tasteometer.h \
+ src/Tag.h \
+ src/Playlist.h \
+ src/Mbid.h \
+ src/FingerprintId.h \
+ src/Artist.h \
+ src/Album.h \
+ src/AbstractType.h \
+ src/ScrobblePoint.h \
+ src/ScrobbleCache.h \
+ src/Audioscrobbler.h \
+ src/RadioTuner.h \
+ src/RadioStation.h \
+ src/global.h \
+ src/XmlQuery.h \
+ src/UrlBuilder.h \
+ src/misc.h \
+ src/Chart.h \
+ src/Auth.h \
+ src/Library.h
+
+win32:SOURCES += src/win/WNetworkConnectionMonitor_win.cpp \
+ src/win/WmiSink.cpp \
+ src/win/Pac.cpp \
+ src/win/NdisEvents.cpp
+
+win32:HEADERS += src/win/WNetworkConnectionMonitor.h \
+ src/win/WmiSink.h \
+ src/win/Pac.h \
+ src/win/NdisEvents.h \
+ src/win/IeSettings.h \
+ src/win/ComSetup.h
+
+mac:SOURCES += src/mac/MNetworkConnectionMonitor_mac.cpp
+
+mac:HEADERS += src/mac/ProxyDict.h \
+ src/mac/MNetworkConnectionMonitor.h
+
+unix:!mac:SOURCES += src/linux/LNetworkConnectionMonitor_linux.cpp
+unix:!mac:HEADERS += src/linux/LNetworkConnectionMonitor.h
+
+!win32:VERSION = 1.0.0
+
+
diff --git a/thirdparty/liblastfm2/src/types/Track.cpp b/thirdparty/liblastfm2/src/types/Track.cpp
index 0111b8a9d..e8cfc9fa3 100644
--- a/thirdparty/liblastfm2/src/types/Track.cpp
+++ b/thirdparty/liblastfm2/src/types/Track.cpp
@@ -454,6 +454,46 @@ lastfm::Track::params( const QString& method, bool use_mbid ) const
}
+QNetworkReply*
+lastfm::Track::getSimilar( int limit ) const
+{
+ QMap map = params("getSimilar");
+ if ( limit != -1 ) map["limit"] = QString::number( limit );
+ map["autocorrect"] = "1";
+ return ws::get( map );
+}
+
+
+QMap > /* static */
+lastfm::Track::getSimilar( QNetworkReply* r )
+{
+ QMap > tracks;
+ try
+ {
+ QByteArray b = r->readAll();
+ XmlQuery lfm = b;
+ foreach (XmlQuery e, lfm.children( "track" ))
+ {
+ QPair< QString, QString > track;
+ track.first = e["name"].text();
+
+ XmlQuery artist = e.children( "artist" ).first();
+ track.second = artist["name"].text();
+
+ // convert floating percentage to int in range 0 to 10,000
+ int const match = e["match"].text().toFloat() * 100;
+ tracks.insertMulti( match, track );
+ }
+ }
+ catch (ws::ParseError& e)
+ {
+ qWarning() << e.what();
+ }
+
+ return tracks;
+}
+
+
QNetworkReply*
lastfm::Track::getTopTags() const
{
diff --git a/thirdparty/liblastfm2/src/types/Track.h b/thirdparty/liblastfm2/src/types/Track.h
index 56e97b272..4fa0c7043 100644
--- a/thirdparty/liblastfm2/src/types/Track.h
+++ b/thirdparty/liblastfm2/src/types/Track.h
@@ -244,6 +244,14 @@ public:
/** See last.fm/api Track section */
QNetworkReply* share( const QStringList& recipients, const QString& message = "", bool isPublic = true ) const;
+ QNetworkReply* getSimilar( int limit = -1 ) const;
+ /** The match percentage is returned from last.fm as a 4 significant
+ * figure floating point value. So we multply it by 100 to make an
+ * integer in the range of 0 to 10,000. This is possible confusing
+ * for you, but I felt it best not to lose any precision, and floats
+ * aren't much fun. */
+ static QMap > getSimilar( QNetworkReply* );
+
/** you can get any QNetworkReply TagList using Tag::list( QNetworkReply* ) */
QNetworkReply* getTags() const; // for the logged in user
QNetworkReply* getTopTags() const;