Add all show all songs by artist option
This commit is contained in:
parent
02f17e8592
commit
3585390fa5
|
@ -359,6 +359,9 @@
|
|||
<string name="settings.video_default">Défaut</string>
|
||||
<string name="settings.video_flash">Flash</string>
|
||||
<string name="menu.share">Partager</string>
|
||||
<string name="select_album_all_songs">All Songs by %s</string>
|
||||
<string name="settings.show_all_songs_by_artist">Show All Songs By Artist</string>
|
||||
<string name="settings.show_all_songs_by_artist_summary">Add new entry in artist view to access all songs for an artist</string>
|
||||
|
||||
<plurals name="select_album_n_songs">
|
||||
<item quantity="zero">Aucun titre</item>
|
||||
|
|
|
@ -20,12 +20,12 @@
|
|||
<string name="common.comment">Megjegyzés</string>
|
||||
<string name="common.confirm">Jóváhagyás</string>
|
||||
<string name="common.delete">Törlés</string>
|
||||
<string name="common.download">Letöltés</string>
|
||||
<string name="common.download">Letöltés (Gyorsítótárba)</string>
|
||||
<string name="common.info">Részletek</string>
|
||||
<string name="common.multiple_genres">Többféle műfaj</string>
|
||||
<string name="common.name">Név</string>
|
||||
<string name="common.ok">OK</string>
|
||||
<string name="common.pin">Tárolás</string>
|
||||
<string name="common.pin">Tárolás (Megőrzés az eszközön)</string>
|
||||
<string name="common.play_last">Lejátszás (Utolsóként)</string>
|
||||
<string name="common.play_next">Lejátszás (Következőként)</string>
|
||||
<string name="common.play_now">Lejátszás</string>
|
||||
|
@ -37,22 +37,22 @@
|
|||
<string name="delete_playlist">Biztos, hogy törölni akarja? %1$s</string>
|
||||
<string name="download.bookmark_removed" formatted="false">Könyvjelző eltávolítva.</string>
|
||||
<string name="download.bookmark_set_at_position" formatted="false">Könyvjelző beállítva %s.</string>
|
||||
<string name="download.empty">A lejátszási lista üres!</string>
|
||||
<string name="download.empty">A várólista üres!</string>
|
||||
<string name="download.jukebox_not_authorized">A távvezérlés nem áll rendelkezésre. Kérjük, engedélyezze a Jukebox módot a <b>Felhasználók > Beállítások</b> menüpontban, az Ön Subsonic kiszolgálóján!</string>
|
||||
<string name="download.jukebox_off">Távvezérlés kikapcsolása. A zenelejátszás a telefonon történik.</string>
|
||||
<string name="download.jukebox_offline">A távvezérlés nem lehetséges kapcsolat nélküli módban!</string>
|
||||
<string name="download.jukebox_on">Távvezérlés bekapcsolása. A zenelejátszás a kiszolgálón történik.</string>
|
||||
<string name="download.jukebox_server_too_old">A távvezérlés nem támogatott. Kérjük, frissítse a Subsonic kiszolgálót!</string>
|
||||
<string name="download.jukebox_volume">Távoli hangerő</string>
|
||||
<string name="download.jukebox_volume">Hangerő távvezérlése</string>
|
||||
<string name="download.menu_equalizer">Equalizer</string>
|
||||
<string name="download.menu_jukebox_off">Jukebox ki</string>
|
||||
<string name="download.menu_jukebox_on">Jukebox be</string>
|
||||
<string name="download.menu_lyrics">Dalszövegek</string>
|
||||
<string name="download.menu_lyrics">Dalszöveg</string>
|
||||
<string name="download.menu_remove">Dal eltávolítása</string>
|
||||
<string name="download.menu_save">Lejátszási lista mentése</string>
|
||||
<string name="download.menu_save">Mentés lejátszási listába</string>
|
||||
<string name="download.menu_screen_off">Kijelző ki</string>
|
||||
<string name="download.menu_screen_on">Kijelző be</string>
|
||||
<string name="download.menu_show_album">Album megjelenítése</string>
|
||||
<string name="download.menu_show_album">Ugrás az albumhoz</string>
|
||||
<string name="download.menu_shuffle">Véletlen sorrendű</string>
|
||||
<string name="download.menu_shuffle_notification">Véletlen sorrendű lejátszás</string>
|
||||
<string name="download.menu_visualizer">Visualizer</string>
|
||||
|
@ -74,16 +74,16 @@
|
|||
<string name="equalizer.preset">Profil kiválasztása</string>
|
||||
<string name="error.label">Hiba!</string>
|
||||
<string name="help.url">file:///android_asset/html/en/index.html</string>
|
||||
<string name="jukebox.is_default">Jukebox alapértelmezettként</string>
|
||||
<string name="jukebox.is_default">Jukebox alapértelmezésként</string>
|
||||
<string name="lyrics.nomatch">Dalszöveg nem található!</string>
|
||||
<string name="main.albums_alphaByArtist">Előadónév szerint</string>
|
||||
<string name="main.albums_alphaByName">Albumnév szerint</string>
|
||||
<string name="main.albums_alphaByName">Albumcím szerint</string>
|
||||
<string name="main.albums_frequent">Legtöbbször lejátszott</string>
|
||||
<string name="main.albums_highest">Legjobbra értékelt</string>
|
||||
<string name="main.albums_newest">Utoljára hozzáadott</string>
|
||||
<string name="main.albums_random">Véletlenszerű</string>
|
||||
<string name="main.albums_recent">Utoljára lejátszott</string>
|
||||
<string name="main.albums_starred">Csillagozott</string>
|
||||
<string name="main.albums_starred">Csillaggal megjelölt</string>
|
||||
<string name="main.albums_title">Albumok</string>
|
||||
<string name="main.artists_title">Előadók</string>
|
||||
<string name="main.genres_title">Műfajok</string>
|
||||
|
@ -92,10 +92,10 @@
|
|||
<string name="main.select_server">Kiszolgáló kiválasztása</string>
|
||||
<string name="main.shuffle">Véletlen sorrendű</string>
|
||||
<string name="main.songs_random">Véletlenszerű</string>
|
||||
<string name="main.songs_starred">Csillagozott</string>
|
||||
<string name="main.songs_starred">Csillaggal megjelölt</string>
|
||||
<string name="main.songs_title">Dalok</string>
|
||||
<string name="main.videos">Videók</string>
|
||||
<string name="main.welcome_text">Üdvözli az UltraSonic! Az alkalmazás még nincs beállítva. Miután konfigurálta saját kiszolgálóját (elérhető: <b>subsonic.org</b>), húzza jobbra a képernyőt, lépjen be a <b>Beállítások</b> menüpontba, és adja meg csatlakozási adatokat!</string>
|
||||
<string name="main.welcome_text">Üdvözli az UltraSonic! Az alkalmazás még nincs beállítva. Miután konfigurálta saját kiszolgálóját (elérhető: <b>subsonic.org</b>), húzza balról jobbra az oldalsávot, lépjen be a <b>Beállítások</b> menüpontba, és adja meg csatlakozási adatokat!</string>
|
||||
<string name="main.welcome_title">Üdvözlet!</string>
|
||||
<string name="menu.about">Névjegy</string>
|
||||
<string name="menu.common">Általános</string>
|
||||
|
@ -127,7 +127,7 @@
|
|||
<string name="search.search">Érintse meg a kereséshez</string>
|
||||
<string name="search.songs">Dalok</string>
|
||||
<string name="search.title">Keresés</string>
|
||||
<string name="select_album.donate_dialog_0_trial_days_left">A próba időszak lejárt!</string>
|
||||
<string name="select_album.donate_dialog_0_trial_days_left">A próbaidőszak lejárt!</string>
|
||||
<string name="select_album.donate_dialog_later">Később</string>
|
||||
<string name="select_album.donate_dialog_message">Korlátlan letöltéshez juthat a Subsonic támogatásával.</string>
|
||||
<string name="select_album.donate_dialog_now">Most</string>
|
||||
|
@ -143,19 +143,19 @@
|
|||
<string name="select_genre.empty">Műfajok nem találhatók!</string>
|
||||
<string name="select_playlist.empty">Nincs mentett lejátszási lista a kiszolgálón.</string>
|
||||
<string name="service.connecting">Csatlakozás a kiszolgálóhoz, kérem várjon!</string>
|
||||
<string name="settings.appearance_title">Megjelenítés</string>
|
||||
<string name="settings.appearance_title">Megjelenés</string>
|
||||
<string name="settings.buffer_length">Pufferméret</string>
|
||||
<string name="settings.buffer_length_0">Letiltva</string>
|
||||
<string name="settings.buffer_length_1">1 másodperc</string>
|
||||
<string name="settings.buffer_length_10">10 másodperc</string>
|
||||
<string name="settings.buffer_length_12">12 másodperc</string>
|
||||
<string name="settings.buffer_length_120">2 minutes</string>
|
||||
<string name="settings.buffer_length_120">2 perc</string>
|
||||
<string name="settings.buffer_length_15">15 másodperc</string>
|
||||
<string name="settings.buffer_length_2">2 másodperc</string>
|
||||
<string name="settings.buffer_length_20">20 másodperc</string>
|
||||
<string name="settings.buffer_length_30">30 másodperc</string>
|
||||
<string name="settings.buffer_length_5">5 másodperc</string>
|
||||
<string name="settings.buffer_length_60">60 másodperc</string>
|
||||
<string name="settings.buffer_length_60">1 perc</string>
|
||||
<string name="settings.buffer_length_8">8 másodperc</string>
|
||||
<string name="settings.cache_location">Gyorsítótár helye</string>
|
||||
<string name="settings.cache_location_error">Hibás gyorsítótár hely! Az alapértelmezett használata.</string>
|
||||
|
@ -173,8 +173,8 @@
|
|||
<string name="settings.chat_refresh">Csevegés frissítési gyakorisága</string>
|
||||
<string name="settings.clear_bookmark">Könyvjelző törlése</string>
|
||||
<string name="settings.clear_bookmark_summary">Könyvjelző törlése a dal lejátszása után.</string>
|
||||
<string name="settings.clear_playlist">Lejátszási lista törlése</string>
|
||||
<string name="settings.clear_playlist_summary">Lejátszási lista törlése az összes dal lejátszása után.</string>
|
||||
<string name="settings.clear_playlist">Várólista törlése</string>
|
||||
<string name="settings.clear_playlist_summary">Várólista törlése az összes dal lejátszása után.</string>
|
||||
<string name="settings.clear_search_history">Keresési előzmények törlése</string>
|
||||
<string name="settings.connection_failure">Csatlakozási hiba!</string>
|
||||
<string name="settings.default_albums">Albumok találati száma</string>
|
||||
|
@ -229,8 +229,8 @@
|
|||
<string name="settings.network_timeout_60000">60 másodperc</string>
|
||||
<string name="settings.network_timeout_75000">75 másodperc</string>
|
||||
<string name="settings.network_timeout_90000">90 másodperc</string>
|
||||
<string name="settings.network_title">Hálózat</string>
|
||||
<string name="settings.notifications_title">Értesítések</string>
|
||||
<string name="settings.network_title">Hálózat</string>
|
||||
<string name="settings.other_title">Egyéb beállítások</string>
|
||||
<string name="settings.playback_control_title">Lejátszás-vezérlés beállításai</string>
|
||||
<string name="settings.preload">Dalok előolvasása</string>
|
||||
|
@ -240,7 +240,7 @@
|
|||
<string name="settings.preload_3">3 dal</string>
|
||||
<string name="settings.preload_5">5 dal</string>
|
||||
<string name="settings.preload_unlimited">Korlátlan</string>
|
||||
<string name="settings.screen_lit_summary">Képernyő ébrentartása a letöltési sebesség növelése érdekében.</string>
|
||||
<string name="settings.screen_lit_summary">Képernyő ébrentartása a letöltés alatt, a magasabb letöltési sebesség érdekében.</string>
|
||||
<string name="settings.screen_lit_title">Képernyő ébrentartása</string>
|
||||
<string name="settings.scrobble_summary">A Last.fm felhasználónevet és jelszót be kell állítani a Subsonic kiszolgálón!</string>
|
||||
<string name="settings.scrobble_title">Továbbítás Last.fm-re (Scrobbling)</string>
|
||||
|
@ -278,7 +278,7 @@
|
|||
<string name="settings.show_lockscreen_controls_summary">Lejátszó-kezelőpanel megjelenítése a képernyőzáron.</string>
|
||||
<string name="settings.show_notification">Értesítések megjelenítése</string>
|
||||
<string name="settings.show_notification_always">Állandó kijelzés</string>
|
||||
<string name="settings.show_notification_always_summary">Lejátszás jelzése az értesítési sávon, míg a lejátszási lista aktív.</string>
|
||||
<string name="settings.show_notification_always_summary">Lejátszás jelzése az értesítési sávon, míg a várólista aktív.</string>
|
||||
<string name="settings.show_notification_summary">Lejátszás jelzése az értesítési sávon.</string>
|
||||
<string name="settings.show_now_playing">Lejátszó-kezelőpanel</string>
|
||||
<string name="settings.show_now_playing_summary">Lejátszó-kezelőpanel megjelenítése minden oldalon.</string>
|
||||
|
@ -292,24 +292,24 @@
|
|||
<string name="settings.theme_light">Világos</string>
|
||||
<string name="settings.theme_title">Téma</string>
|
||||
<string name="settings.use_folder_for_album_artist">Mappanevek használata az előadók neveként</string>
|
||||
<string name="settings.use_folder_for_album_artist_summary">Feltételezi, hogy a legfelső szintű mappa az elődó neve.</string>
|
||||
<string name="settings.use_folder_for_album_artist_summary">Feltételezi, hogy a legfelső szintű mappa az előadó neve.</string>
|
||||
<string name="settings.use_id3">Böngészés ID3 Tag használatával</string>
|
||||
<string name="settings.use_id3_summary">ID3 Tag módszer használata a fájlredszer alapú mód helyett.</string>
|
||||
<string name="settings.video_title">Videó</string>
|
||||
<string name="settings.video_player">Videólejátszó</string>
|
||||
<string name="settings.view_refresh">Megtekinté Frissítési</string>
|
||||
<string name="settings.view_refresh_500">0,5 másodperc</string>
|
||||
<string name="settings.view_refresh">Nézet frissítési gyakorisága</string>
|
||||
<string name="settings.view_refresh_500">.5 másodperc</string>
|
||||
<string name="settings.view_refresh_1000">1 másodperc</string>
|
||||
<string name="settings.view_refresh_1500">1,5 másodperc</string>
|
||||
<string name="settings.view_refresh_1500">1.5 másodperc</string>
|
||||
<string name="settings.view_refresh_2000">2 másodperc</string>
|
||||
<string name="settings.view_refresh_2500">2,5 másodperc</string>
|
||||
<string name="settings.view_refresh_2500">2.5 másodperc</string>
|
||||
<string name="settings.view_refresh_3000">3 másodperc</string>
|
||||
<string name="settings.view_refresh_3500">3,5 másodperc</string>
|
||||
<string name="settings.view_refresh_3500">3.5 másodperc</string>
|
||||
<string name="settings.view_refresh_4000">4 másodperc</string>
|
||||
<string name="settings.view_refresh_4500">4,5 másodperc</string>
|
||||
<string name="settings.view_refresh_4500">4.5 másodperc</string>
|
||||
<string name="settings.view_refresh_5000">5 másodperc</string>
|
||||
<string name="settings.wifi_required_summary">Streaming, csak ha rendelkezésre áll Wi-Fi kapcsolat.</string>
|
||||
<string name="settings.wifi_required_title">Csak Wi-Fi streaming</string>
|
||||
<string name="settings.wifi_required_summary">Streaming csak Wi-Fi hálózaton keresztül.</string>
|
||||
<string name="settings.wifi_required_title">Streaming csak Wi-Fivel</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
|
@ -323,42 +323,45 @@
|
|||
<string name="widget.initial_text">Érintse meg a zene kiválasztásához</string>
|
||||
<string name="widget.sdcard_busy">Az SD kártya nem elérhető!</string>
|
||||
<string name="widget.sdcard_missing">Nincs SD kártya!</string>
|
||||
<string name="settings.share_description_default">Alapértelmezett share leírás</string>
|
||||
<string name="settings.sharing_title">Megosztása</string>
|
||||
<string name="settings.sharing_always_ask_for_details_summary">Mindig kérjen leírása és lejárati létrehozásakor a részvény</string>
|
||||
<string name="settings.sharing_always_ask_for_details">Mindig kérjen részleteket</string>
|
||||
<string name="settings.share_expiration_default">Alapértelmezett idő a lejárati</string>
|
||||
<string name="do_not_show_dialog_again">Ne mutassa párbeszédablak többé</string>
|
||||
<string name="share_set_share_options">Megosztási lehetőségek</string>
|
||||
<string name="no_expiration">Nincs lejárati</string>
|
||||
<string name="download.toggle_playlist">Kapcsoló lejátszási lista nézet</string>
|
||||
<string name="download.bookmark_set">Beállított könyvjelző</string>
|
||||
<string name="settings.share_description_default">Megosztás alapértelmezett leírása</string>
|
||||
<string name="settings.sharing_title">Megosztás</string>
|
||||
<string name="settings.sharing_always_ask_for_details_summary">Megosztás létrehozásakor mindig kérje be a leírást és a lejárati időt.</string>
|
||||
<string name="settings.sharing_always_ask_for_details">Mindig kérdezzen rá a részletekre</string>
|
||||
<string name="settings.share_expiration_default">Alapértelmezett lejárati idő</string>
|
||||
<string name="do_not_show_dialog_again">A párbeszédablak ne jelenjen meg többé</string>
|
||||
<string name="share_set_share_options">Megosztás beállításai</string>
|
||||
<string name="no_expiration">Nincs lejárati idő</string>
|
||||
<string name="download.toggle_playlist">Toggle Playlist</string>
|
||||
<string name="download.bookmark_set">Könyvjelző létrehozása</string>
|
||||
<string name="download.bookmark_delete">Könyvjelző törlése</string>
|
||||
<string name="download.menu_star">Csillag</string>
|
||||
<string name="download.menu_clear_playlist">Törölje a lejátszási lista</string>
|
||||
<string name="button_bar.shares">Dalok osztani másokkal</string>
|
||||
<string name="select_share.empty">Nincs dalok osztani másokkal elérhető a szerveren</string>
|
||||
<string name="menu_deleted_share">Megosztani törölték %s</string>
|
||||
<string name="menu_deleted_share_error">Nem törölheti megosztott dal másokkal %s</string>
|
||||
<string name="settings.share_milliseconds">Milliszekundum</string>
|
||||
<string name="download.menu_clear_playlist">Clear Playlist</string>
|
||||
<string name="button_bar.shares">Megosztás</string>
|
||||
<string name="select_share.empty">Nincs mentett megosztás a kiszolgálón.</string>
|
||||
<string name="menu_deleted_share">%s megosztás törölve</string>
|
||||
<string name="menu_deleted_share_error">%s megosztás törlése sikertelen!</string>
|
||||
<string name="settings.share_milliseconds">Ezredmásodperc</string>
|
||||
<string name="settings.share_seconds">Másodperc</string>
|
||||
<string name="settings.share_minutes">Perc</string>
|
||||
<string name="settings.share_hours">Óra</string>
|
||||
<string name="settings.share_days">Nap</string>
|
||||
<string name="time_span_disable">Tiltsa</string>
|
||||
<string name="time_span_disabled">Rokkant</string>
|
||||
<string name="save_as_defaults">Menteni az alapértelmezett</string>
|
||||
<string name="time_span_disable">Letiltva</string>
|
||||
<string name="time_span_disabled">Letiltva</string>
|
||||
<string name="save_as_defaults">Mentés alapértelmezésként</string>
|
||||
<string name="share_comment">Megjegyzés</string>
|
||||
<string name="settings.share_expiration">Lejárati</string>
|
||||
<string name="download_song_removed">\"%s\" ez a dal törölték</string>
|
||||
<string name="download.share_playlist">Ossza meg ezt a lejátszási lista</string>
|
||||
<string name="settings.share_greeting_default">Alapértelmezett megosztási üdvözlő</string>
|
||||
<string name="share_default_greeting">Nézd meg ezt a zenét közös nektek %s</string>
|
||||
<string name="share_via">Megosztani dalok</string>
|
||||
<string name="settings.share_expiration">Lejárati idő</string>
|
||||
<string name="download_song_removed">\"%s\" eltávolítva a várólistáról</string>
|
||||
<string name="download.share_playlist">Várólista megosztása</string>
|
||||
<string name="settings.share_greeting_default">Alapértelmezett megosztási üzenet</string>
|
||||
<string name="share_default_greeting">Hallgasd meg ezt a zenét, megosztottam innen: %s</string>
|
||||
<string name="share_via">Dalok megosztása ezzel</string>
|
||||
<string name="settings.video_mx_player">MX Player</string>
|
||||
<string name="settings.video_default">Alapértelmezett</string>
|
||||
<string name="settings.video_flash">Flash</string>
|
||||
<string name="menu.share">Megosztani</string>
|
||||
<string name="menu.share">Megosztás</string>
|
||||
<string name="select_album_all_songs">All Songs by %s</string>
|
||||
<string name="settings.show_all_songs_by_artist">Show All Songs By Artist</string>
|
||||
<string name="settings.show_all_songs_by_artist_summary">Add new entry in artist view to access all songs for an artist</string>
|
||||
|
||||
<plurals name="select_album_n_songs">
|
||||
<item quantity="zero">Nincsenek dalok</item>
|
||||
|
@ -378,16 +381,16 @@
|
|||
<item quantity="other">%d dal tárolása visszavonva.</item>
|
||||
</plurals>
|
||||
<plurals name="select_album_n_songs_added">
|
||||
<item quantity="one">1 dal hozzáadva a lejátszási sorhoz.</item>
|
||||
<item quantity="other">%d dal hozzáadva a lejátszási sorhoz.</item>
|
||||
<item quantity="one">1 dal hozzáadva a várólistához utolsóként.</item>
|
||||
<item quantity="other">%d dal hozzáadva a várólistához utolsóként.</item>
|
||||
</plurals>
|
||||
<plurals name="select_album_n_songs_play_next">
|
||||
<item quantity="one">1 dal hozzáadva következőként.</item>
|
||||
<item quantity="other">%d dal hozzáadva következőként.</item>
|
||||
<item quantity="one">1 dal hozzáadva a várólistához következőként.</item>
|
||||
<item quantity="other">%d dal hozzáadva a várólistához következőként.</item>
|
||||
</plurals>
|
||||
<plurals name="select_album_donate_dialog_n_trial_days_left">
|
||||
<item quantity="one">1 nap van hátra a próba időszakból.</item>
|
||||
<item quantity="other">%d nap van hátra a próba időszakból.</item>
|
||||
</plurals>
|
||||
|
||||
</resources>
|
||||
</resources>
|
|
@ -359,6 +359,9 @@
|
|||
<string name="settings.video_default">Default</string>
|
||||
<string name="settings.video_flash">Flash</string>
|
||||
<string name="menu.share">Share</string>
|
||||
<string name="select_album_all_songs">All Songs by %s</string>
|
||||
<string name="settings.show_all_songs_by_artist">Show All Songs By Artist</string>
|
||||
<string name="settings.show_all_songs_by_artist_summary">Add new entry in artist view to access all songs for an artist</string>
|
||||
|
||||
<plurals name="select_album_n_songs">
|
||||
<item quantity="zero">No songs</item>
|
||||
|
|
|
@ -56,6 +56,11 @@
|
|||
a:key="mediaButtons"
|
||||
a:summary="@string/settings.media_button_summary"
|
||||
a:title="@string/settings.media_button_title" />
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="false"
|
||||
a:key="showAllSongsByArtist"
|
||||
a:summary="@string/settings.show_all_songs_by_artist_summary"
|
||||
a:title="@string/settings.show_all_songs_by_artist"/>
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="true"
|
||||
a:key="transitionToDownloadOnPlay"
|
||||
|
|
|
@ -49,7 +49,9 @@ import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
|||
import com.thejoshwa.ultrasonic.androidapp.view.EntryAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
|
@ -58,6 +60,7 @@ import static com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshList
|
|||
public class SelectAlbumActivity extends SubsonicTabActivity
|
||||
{
|
||||
|
||||
public static final String allSongsId = "-1";
|
||||
private PullToRefreshListView refreshAlbumListView;
|
||||
private ListView albumListView;
|
||||
private View header;
|
||||
|
@ -77,7 +80,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
private MenuItem playAllButton;
|
||||
private MenuItem shareButton;
|
||||
private boolean showHeader = true;
|
||||
private Random random = new Random();
|
||||
private Random random = new java.security.SecureRandom();
|
||||
|
||||
/**
|
||||
* Called when the activity is first created.
|
||||
|
@ -119,6 +122,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ID, entry.getId());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_IS_ALBUM, entry.isDirectory());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, entry.getTitle());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID, entry.getParent());
|
||||
Util.startActivityWithoutTransition(SelectAlbumActivity.this, intent);
|
||||
}
|
||||
else if (entry != null && entry.isVideo())
|
||||
|
@ -221,6 +225,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
String id = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ID);
|
||||
boolean isAlbum = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_IS_ALBUM, false);
|
||||
String name = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_NAME);
|
||||
String parentId = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID);
|
||||
String playlistId = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID);
|
||||
String playlistName = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME);
|
||||
String shareId = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_SHARE_ID);
|
||||
|
@ -271,7 +276,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
{
|
||||
if (isAlbum)
|
||||
{
|
||||
getAlbum(id, name);
|
||||
getAlbum(id, name, parentId);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -280,7 +285,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
}
|
||||
else
|
||||
{
|
||||
getMusicDirectory(id, name);
|
||||
getMusicDirectory(id, name, parentId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -320,7 +325,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
{
|
||||
List<MusicDirectory.Entry> selectedSongs = getSelectedSongs(albumListView);
|
||||
|
||||
if (selectedSongs.size() > 0)
|
||||
if (!selectedSongs.isEmpty())
|
||||
{
|
||||
download(append, false, !append, false, shuffle, selectedSongs);
|
||||
selectAll(false, false);
|
||||
|
@ -498,7 +503,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
return false;
|
||||
}
|
||||
|
||||
private void getMusicDirectory(final String id, final String name)
|
||||
private void getMusicDirectory(final String id, final String name, final String parentId)
|
||||
{
|
||||
setActionBarSubtitle(name);
|
||||
|
||||
|
@ -507,8 +512,80 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
@Override
|
||||
protected MusicDirectory load(MusicService service) throws Exception
|
||||
{
|
||||
boolean refresh = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_REFRESH, false);
|
||||
return service.getMusicDirectory(id, name, refresh, SelectAlbumActivity.this, this);
|
||||
MusicDirectory root = new MusicDirectory();
|
||||
|
||||
if (allSongsId.equals(id))
|
||||
{
|
||||
boolean refresh = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_REFRESH, false);
|
||||
MusicDirectory musicDirectory = service.getMusicDirectory(parentId, name, refresh, SelectAlbumActivity.this, this);
|
||||
|
||||
List<MusicDirectory.Entry> songs = new LinkedList<MusicDirectory.Entry>();
|
||||
getSongsRecursively(musicDirectory, songs);
|
||||
|
||||
for (MusicDirectory.Entry song : songs)
|
||||
{
|
||||
if (!song.isDirectory())
|
||||
{
|
||||
root.addChild(song);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
boolean refresh = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_REFRESH, false);
|
||||
MusicDirectory musicDirectory = service.getMusicDirectory(id, name, refresh, SelectAlbumActivity.this, this);
|
||||
|
||||
if (Util.getShouldShowAllSongsByArtist(SelectAlbumActivity.this) && musicDirectory.findChild(allSongsId) == null && musicDirectory.getChildren(true, false).size() == musicDirectory.getChildren(true, true).size())
|
||||
{
|
||||
MusicDirectory.Entry allSongs = new MusicDirectory.Entry();
|
||||
|
||||
allSongs.setIsDirectory(true);
|
||||
allSongs.setArtist(name);
|
||||
allSongs.setParent(id);
|
||||
allSongs.setId(allSongsId);
|
||||
allSongs.setTitle(String.format(getResources().getString(R.string.select_album_all_songs), name));
|
||||
|
||||
root.addChild(allSongs);
|
||||
|
||||
List<MusicDirectory.Entry> children = musicDirectory.getChildren();
|
||||
|
||||
if (children != null)
|
||||
{
|
||||
root.addAll(children);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
root = musicDirectory;
|
||||
}
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
private void getSongsRecursively(MusicDirectory parent, List<MusicDirectory.Entry> songs) throws Exception
|
||||
{
|
||||
for (MusicDirectory.Entry song : parent.getChildren(false, true))
|
||||
{
|
||||
if (!song.isVideo() && !song.isDirectory())
|
||||
{
|
||||
songs.add(song);
|
||||
}
|
||||
}
|
||||
|
||||
MusicService musicService = MusicServiceFactory.getMusicService(SelectAlbumActivity.this);
|
||||
|
||||
for (MusicDirectory.Entry dir : parent.getChildren(true, false))
|
||||
{
|
||||
MusicDirectory root;
|
||||
|
||||
if (!allSongsId.equals(dir.getId()))
|
||||
{
|
||||
root = musicService.getMusicDirectory(dir.getId(), dir.getTitle(), false, SelectAlbumActivity.this, this);
|
||||
|
||||
getSongsRecursively(root, songs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
@ -522,13 +599,41 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
@Override
|
||||
protected MusicDirectory load(MusicService service) throws Exception
|
||||
{
|
||||
MusicDirectory root = new MusicDirectory();
|
||||
|
||||
boolean refresh = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_REFRESH, false);
|
||||
return service.getArtist(id, name, refresh, SelectAlbumActivity.this, this);
|
||||
MusicDirectory musicDirectory = service.getArtist(id, name, refresh, SelectAlbumActivity.this, this);
|
||||
|
||||
if (Util.getShouldShowAllSongsByArtist(SelectAlbumActivity.this) && musicDirectory.findChild(allSongsId) == null && musicDirectory.getChildren(true, false).size() == musicDirectory.getChildren(true, true).size())
|
||||
{
|
||||
MusicDirectory.Entry allSongs = new MusicDirectory.Entry();
|
||||
|
||||
allSongs.setIsDirectory(true);
|
||||
allSongs.setArtist(name);
|
||||
allSongs.setParent(id);
|
||||
allSongs.setId(allSongsId);
|
||||
allSongs.setTitle(String.format(getResources().getString(R.string.select_album_all_songs), name));
|
||||
|
||||
root.addFirst(allSongs);
|
||||
|
||||
List<MusicDirectory.Entry> children = musicDirectory.getChildren();
|
||||
|
||||
if (children != null)
|
||||
{
|
||||
root.addAll(children);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
root = musicDirectory;
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private void getAlbum(final String id, final String name)
|
||||
private void getAlbum(final String id, final String name, final String parentId)
|
||||
{
|
||||
setActionBarSubtitle(name);
|
||||
|
||||
|
@ -537,8 +642,55 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
@Override
|
||||
protected MusicDirectory load(MusicService service) throws Exception
|
||||
{
|
||||
MusicDirectory musicDirectory;
|
||||
|
||||
boolean refresh = getIntent().getBooleanExtra(Constants.INTENT_EXTRA_NAME_REFRESH, false);
|
||||
return service.getAlbum(id, name, refresh, SelectAlbumActivity.this, this);
|
||||
|
||||
if (allSongsId.equals(id))
|
||||
{
|
||||
MusicDirectory root = new MusicDirectory();
|
||||
|
||||
Collection<MusicDirectory.Entry> songs = new LinkedList<MusicDirectory.Entry>();
|
||||
getSongsForArtist(parentId, songs);
|
||||
|
||||
for (MusicDirectory.Entry song : songs)
|
||||
{
|
||||
if (!song.isDirectory())
|
||||
{
|
||||
root.addChild(song);
|
||||
}
|
||||
}
|
||||
|
||||
musicDirectory = root;
|
||||
}
|
||||
else
|
||||
{
|
||||
musicDirectory = service.getAlbum(id, name, refresh, SelectAlbumActivity.this, this);
|
||||
}
|
||||
|
||||
return musicDirectory;
|
||||
}
|
||||
|
||||
private void getSongsForArtist(String id, Collection<MusicDirectory.Entry> songs) throws Exception
|
||||
{
|
||||
MusicService musicService = MusicServiceFactory.getMusicService(SelectAlbumActivity.this);
|
||||
MusicDirectory artist = musicService.getArtist(id, "", false, SelectAlbumActivity.this, this);
|
||||
|
||||
for (MusicDirectory.Entry album : artist.getChildren())
|
||||
{
|
||||
if (!allSongsId.equals(album.getId()))
|
||||
{
|
||||
MusicDirectory albumDirectory = musicService.getAlbum(album.getId(), "", false, SelectAlbumActivity.this, this);
|
||||
|
||||
for (MusicDirectory.Entry song : albumDirectory.getChildren())
|
||||
{
|
||||
if (!song.isVideo())
|
||||
{
|
||||
songs.add(song);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
@ -649,7 +801,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity
|
|||
}.execute();
|
||||
}
|
||||
|
||||
private void getShare(final String shareId, final String shareName)
|
||||
private void getShare(final String shareId, final CharSequence shareName)
|
||||
{
|
||||
setActionBarSubtitle(shareName);
|
||||
|
||||
|
|
|
@ -219,6 +219,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter
|
|||
Intent intent = new Intent(this, SelectAlbumActivity.class);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ID, artist.getId());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, artist.getName());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID, artist.getId());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ARTIST, true);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
|
|
@ -18,13 +18,14 @@
|
|||
*/
|
||||
package com.thejoshwa.ultrasonic.androidapp.domain;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Sindre Mehus
|
||||
|
@ -45,6 +46,16 @@ public class MusicDirectory
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
public void addAll(Collection<Entry> entries)
|
||||
{
|
||||
children.addAll(entries);
|
||||
}
|
||||
|
||||
public void addFirst(Entry child)
|
||||
{
|
||||
children.add(0, child);
|
||||
}
|
||||
|
||||
public void addChild(Entry child)
|
||||
{
|
||||
children.add(child);
|
||||
|
@ -55,6 +66,21 @@ public class MusicDirectory
|
|||
return getChildren(true, true);
|
||||
}
|
||||
|
||||
public Entry findChild(String id)
|
||||
{
|
||||
Entry entry = null;
|
||||
|
||||
for (Entry song : getChildren())
|
||||
{
|
||||
if (song.getId().equals(id))
|
||||
{
|
||||
entry = song;
|
||||
}
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
public List<Entry> getChildren(boolean includeDirs, boolean includeFiles)
|
||||
{
|
||||
if (includeDirs && includeFiles)
|
||||
|
|
|
@ -41,6 +41,7 @@ public final class Constants
|
|||
public static final String INTENT_EXTRA_NAME_AUTOPLAY = "subsonic.playall";
|
||||
public static final String INTENT_EXTRA_NAME_QUERY = "subsonic.query";
|
||||
public static final String INTENT_EXTRA_NAME_PLAYLIST_ID = "subsonic.playlist.id";
|
||||
public static final String INTENT_EXTRA_NAME_PARENT_ID = "subsonic.parent.id";
|
||||
public static final String INTENT_EXTRA_NAME_PLAYLIST_NAME = "subsonic.playlist.name";
|
||||
public static final String INTENT_EXTRA_NAME_SHARE_ID = "subsonic.share.id";
|
||||
public static final String INTENT_EXTRA_NAME_SHARE_NAME = "subsonic.share.name";
|
||||
|
@ -124,6 +125,7 @@ public final class Constants
|
|||
public static final String PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION = "sharingDefaultDescription";
|
||||
public static final String PREFERENCES_KEY_DEFAULT_SHARE_GREETING = "sharingDefaultGreeting";
|
||||
public static final String PREFERENCES_KEY_DEFAULT_SHARE_EXPIRATION = "sharingDefaultExpiration";
|
||||
public static final String PREFERENCES_KEY_SHOW_ALL_SONGS_BY_ARTIST = "showAllSongsByArtist";
|
||||
|
||||
// Name of the preferences file.
|
||||
public static final String PREFERENCES_FILE_NAME = "com.thejoshwa.ultrasonic.androidapp_preferences";
|
||||
|
|
|
@ -46,7 +46,6 @@ import android.util.DisplayMetrics;
|
|||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.RemoteViews;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
@ -81,8 +80,6 @@ import java.lang.reflect.Method;
|
|||
import java.security.MessageDigest;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
@ -468,21 +465,20 @@ public class Util extends DownloadActivity
|
|||
|
||||
public static void atomicCopy(File from, File to) throws IOException
|
||||
{
|
||||
FileInputStream in = null;
|
||||
FileOutputStream out = null;
|
||||
File tmp = null;
|
||||
File tmp = new File(String.format("%s.tmp", to.getPath()));
|
||||
FileInputStream in = new FileInputStream(from);
|
||||
FileOutputStream out = new FileOutputStream(tmp);
|
||||
|
||||
try
|
||||
{
|
||||
tmp = new File(String.format("%s.tmp", to.getPath()));
|
||||
in = new FileInputStream(from);
|
||||
out = new FileOutputStream(tmp);
|
||||
in.getChannel().transferTo(0, from.length(), out.getChannel());
|
||||
out.close();
|
||||
|
||||
if (!tmp.renameTo(to))
|
||||
{
|
||||
throw new IOException(String.format("Failed to rename %s to %s", tmp, to));
|
||||
}
|
||||
|
||||
Log.i(TAG, String.format("Copied %s to %s", from, to));
|
||||
}
|
||||
catch (IOException x)
|
||||
|
@ -714,12 +710,13 @@ public class Util extends DownloadActivity
|
|||
{
|
||||
int length = data.length;
|
||||
char[] out = new char[length << 1];
|
||||
int j = 0;
|
||||
|
||||
// two characters form the hex value.
|
||||
for (int i = 0, j = 0; i < length; i++)
|
||||
for (byte aData : data)
|
||||
{
|
||||
out[j++] = HEX_DIGITS[(0xF0 & data[i]) >>> 4];
|
||||
out[j++] = HEX_DIGITS[0x0F & data[i]];
|
||||
out[j++] = HEX_DIGITS[(0xF0 & aData) >>> 4];
|
||||
out[j++] = HEX_DIGITS[0x0F & aData];
|
||||
}
|
||||
|
||||
return new String(out);
|
||||
|
@ -1574,17 +1571,6 @@ public class Util extends DownloadActivity
|
|||
return Integer.parseInt(preferences.getString(Constants.PREFERENCES_KEY_VIEW_REFRESH, "1000"));
|
||||
}
|
||||
|
||||
public static Date getDateFromDatePicker(DatePicker datePicker) {
|
||||
int day = datePicker.getDayOfMonth();
|
||||
int month = datePicker.getMonth();
|
||||
int year = datePicker.getYear();
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(year, month, day);
|
||||
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
public static boolean getShouldAskForShareDetails(Context context)
|
||||
{
|
||||
SharedPreferences preferences = getPreferences(context);
|
||||
|
@ -1652,4 +1638,10 @@ public class Util extends DownloadActivity
|
|||
editor.putString(Constants.PREFERENCES_KEY_DEFAULT_SHARE_DESCRIPTION, defaultShareDescription);
|
||||
editor.commit();
|
||||
}
|
||||
|
||||
public static boolean getShouldShowAllSongsByArtist(Context context)
|
||||
{
|
||||
SharedPreferences preferences = getPreferences(context);
|
||||
return preferences.getBoolean(Constants.PREFERENCES_KEY_SHOW_ALL_SONGS_BY_ARTIST, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ public class AlbumView extends UpdateView
|
|||
starImageView.setImageDrawable(starred ? starDrawable : starHollowDrawable);
|
||||
imageLoader.loadImage(this.coverArtView, album, false, 0, false, true);
|
||||
|
||||
if (Util.isOffline(this.context))
|
||||
if (Util.isOffline(this.context) || "-1".equals(album.getId()))
|
||||
{
|
||||
starImageView.setVisibility(View.GONE);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue