diff --git a/AndroidManifest.xml b/AndroidManifest.xml index bd411308..2145b668 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,8 +2,8 @@ + a:versionCode="26" + a:versionName="1.1.0.22" > @@ -55,6 +55,9 @@ a:configChanges="orientation|keyboardHidden" a:label="@string/playlist.label" a:launchMode="standard" /> + diff --git a/gen/com/handmark/pulltorefresh/library/R.java b/gen/com/handmark/pulltorefresh/library/R.java index 976f390c..248f271f 100644 --- a/gen/com/handmark/pulltorefresh/library/R.java +++ b/gen/com/handmark/pulltorefresh/library/R.java @@ -44,14 +44,14 @@ public final class R { public static final class drawable { public static final int default_ptr_flip = 0x7f02000e; public static final int default_ptr_rotate = 0x7f02000f; - public static final int indicator_arrow = 0x7f02004a; - public static final int indicator_bg_bottom = 0x7f02004b; - public static final int indicator_bg_top = 0x7f02004c; + public static final int indicator_arrow = 0x7f02004c; + public static final int indicator_bg_bottom = 0x7f02004d; + public static final int indicator_bg_top = 0x7f02004e; } public static final class id { public static final int both = 0x7f060003; public static final int disabled = 0x7f060000; - public static final int fl_inner = 0x7f06008a; + public static final int fl_inner = 0x7f06008e; public static final int flip = 0x7f060008; public static final int gridview = 0x7f060009; public static final int manualOnly = 0x7f060004; @@ -59,17 +59,17 @@ public final class R { public static final int pullFromEnd = 0x7f060002; public static final int pullFromStart = 0x7f060001; public static final int pullUpFromBottom = 0x7f060006; - public static final int pull_to_refresh_image = 0x7f06008b; - public static final int pull_to_refresh_progress = 0x7f06008c; - public static final int pull_to_refresh_sub_text = 0x7f06008e; - public static final int pull_to_refresh_text = 0x7f06008d; + public static final int pull_to_refresh_image = 0x7f06008f; + public static final int pull_to_refresh_progress = 0x7f060090; + public static final int pull_to_refresh_sub_text = 0x7f060092; + public static final int pull_to_refresh_text = 0x7f060091; public static final int rotate = 0x7f060007; public static final int scrollview = 0x7f06000b; public static final int webview = 0x7f06000a; } public static final class layout { - public static final int pull_to_refresh_header_horizontal = 0x7f03001f; - public static final int pull_to_refresh_header_vertical = 0x7f030020; + public static final int pull_to_refresh_header_horizontal = 0x7f030020; + public static final int pull_to_refresh_header_vertical = 0x7f030021; } public static final class string { public static final int pull_to_refresh_from_bottom_pull_label = 0x7f080003; diff --git a/gen/com/thejoshwa/ultrasonic/androidapp/R.java b/gen/com/thejoshwa/ultrasonic/androidapp/R.java index 2cd7e408..ab3a50d3 100644 --- a/gen/com/thejoshwa/ultrasonic/androidapp/R.java +++ b/gen/com/thejoshwa/ultrasonic/androidapp/R.java @@ -53,6 +53,10 @@ or to a theme attribute in the form "?[package:][type:]na */ public static final int backward=0x7f010027; /**

Must be a reference to another resource, in the form "@[+][package:]type:name" +or to a theme attribute in the form "?[package:][type:]name". + */ + public static final int bookmark=0x7f010045; + /**

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name". */ public static final int browse=0x7f010024; @@ -440,6 +444,7 @@ or to a theme attribute in the form "?[package:][type:]na public static final int notificationArtist=0x7f090005; public static final int notificationTitle=0x7f090006; public static final int opaque=0x7f090010; + public static final int translucent=0x7f090011; public static final int transparent=0x7f09000b; public static final int white=0x7f090009; } @@ -479,149 +484,151 @@ or to a theme attribute in the form "?[package:][type:]na public static final int ic_menu_add_to_queue_light=0x7f020019; public static final int ic_menu_backward_dark=0x7f02001a; public static final int ic_menu_backward_light=0x7f02001b; - public static final int ic_menu_browse_dark=0x7f02001c; - public static final int ic_menu_browse_light=0x7f02001d; - public static final int ic_menu_chat_dark=0x7f02001e; - public static final int ic_menu_chat_light=0x7f02001f; - public static final int ic_menu_chat_send_dark=0x7f020020; - public static final int ic_menu_chat_send_light=0x7f020021; - public static final int ic_menu_exit_dark=0x7f020022; - public static final int ic_menu_exit_light=0x7f020023; - public static final int ic_menu_forward_dark=0x7f020024; - public static final int ic_menu_forward_light=0x7f020025; - public static final int ic_menu_help_dark=0x7f020026; - public static final int ic_menu_help_light=0x7f020027; - public static final int ic_menu_home_dark=0x7f020028; - public static final int ic_menu_home_light=0x7f020029; - public static final int ic_menu_pin=0x7f02002a; - public static final int ic_menu_playlists_dark=0x7f02002b; - public static final int ic_menu_playlists_light=0x7f02002c; - public static final int ic_menu_remove_all_dark=0x7f02002d; - public static final int ic_menu_remove_all_light=0x7f02002e; - public static final int ic_menu_save_dark=0x7f02002f; - public static final int ic_menu_save_light=0x7f020030; - public static final int ic_menu_screen_on_off_dark=0x7f020031; - public static final int ic_menu_screen_on_off_light=0x7f020032; - public static final int ic_menu_search_dark=0x7f020033; - public static final int ic_menu_search_light=0x7f020034; - public static final int ic_menu_select_all_dark=0x7f020035; - public static final int ic_menu_select_all_light=0x7f020036; - public static final int ic_menu_select_folder_dark=0x7f020037; - public static final int ic_menu_select_folder_light=0x7f020038; - public static final int ic_menu_settings_dark=0x7f020039; - public static final int ic_menu_settings_light=0x7f02003a; - public static final int ic_menu_share_dark=0x7f02003b; - public static final int ic_menu_share_light=0x7f02003c; - public static final int ic_menu_unpin_dark=0x7f02003d; - public static final int ic_menu_unpin_light=0x7f02003e; - public static final int ic_star_full_dark=0x7f02003f; - public static final int ic_star_full_light=0x7f020040; - public static final int ic_star_hollow_dark=0x7f020041; - public static final int ic_star_hollow_light=0x7f020042; - public static final int ic_stat_downloaded_dark=0x7f020043; - public static final int ic_stat_downloaded_light=0x7f020044; - public static final int ic_stat_downloading_dark=0x7f020045; - public static final int ic_stat_downloading_light=0x7f020046; - public static final int ic_stat_play_dark=0x7f020047; - public static final int ic_stat_play_light=0x7f020048; - public static final int ic_stat_ultrasonic=0x7f020049; - public static final int indicator_arrow=0x7f02004a; - public static final int indicator_bg_bottom=0x7f02004b; - public static final int indicator_bg_top=0x7f02004c; - public static final int list_background=0x7f02004d; - public static final int list_focused_holo=0x7f02004e; - public static final int list_longpressed_holo=0x7f02004f; - public static final int list_pressed_holo_dark=0x7f020050; - public static final int list_pressed_holo_light=0x7f020051; - public static final int list_selector_background_transition_holo_dark=0x7f020052; - public static final int list_selector_background_transition_holo_light=0x7f020053; - public static final int list_selector_disabled_holo_dark=0x7f020054; - public static final int list_selector_disabled_holo_light=0x7f020055; - public static final int list_selector_holo_dark=0x7f020056; - public static final int list_selector_holo_light=0x7f020057; - public static final int main_header_icon=0x7f020058; - public static final int md__category_background=0x7f020059; - public static final int md__list_focused_holo=0x7f02005a; - public static final int md__list_longpressed_holo=0x7f02005b; - public static final int md__list_pressed_holo_dark=0x7f02005c; - public static final int md__list_selector_background_transition_holo_dark=0x7f02005d; - public static final int md__list_selector_disabled_holo_dark=0x7f02005e; - public static final int md__list_selector_holo_dark=0x7f02005f; - public static final int media_backward_normal=0x7f020060; - public static final int media_backward_normal_dark=0x7f020061; - public static final int media_backward_normal_light=0x7f020062; - public static final int media_forward_normal=0x7f020063; - public static final int media_forward_normal_dark=0x7f020064; - public static final int media_forward_normal_light=0x7f020065; - public static final int media_pause_normal=0x7f020066; - public static final int media_pause_normal_dark=0x7f020067; - public static final int media_pause_normal_light=0x7f020068; - public static final int media_play_next=0x7f020069; - public static final int media_play_next_dark=0x7f02006a; - public static final int media_play_next_light=0x7f02006b; - public static final int media_play_now_dark=0x7f02006c; - public static final int media_play_now_light=0x7f02006d; - public static final int media_repeat_all=0x7f02006e; - public static final int media_repeat_off=0x7f02006f; - public static final int media_repeat_off_dark=0x7f020070; - public static final int media_repeat_off_light=0x7f020071; - public static final int media_repeat_single=0x7f020072; - public static final int media_shuffle_normal=0x7f020073; - public static final int media_shuffle_normal_dark=0x7f020074; - public static final int media_shuffle_normal_light=0x7f020075; - public static final int media_start_normal=0x7f020076; - public static final int media_start_normal_dark=0x7f020077; - public static final int media_start_normal_light=0x7f020078; - public static final int media_start_pressed=0x7f020079; - public static final int media_stop_normal=0x7f02007a; - public static final int media_stop_normal_dark=0x7f02007b; - public static final int media_stop_normal_light=0x7f02007c; - public static final int media_toggle_list_normal=0x7f02007d; - public static final int media_toggle_list_normal_dark=0x7f02007e; - public static final int media_toggle_list_normal_light=0x7f02007f; - public static final int menu_arrow=0x7f020080; - public static final int menu_arrow_bottom=0x7f020081; - public static final int menu_arrow_right=0x7f020082; - public static final int menu_arrow_top=0x7f020083; - public static final int menubar_button_disabled=0x7f020084; - public static final int menubar_button_normal=0x7f020085; - public static final int notify_panel_notification_icon_bg=0x7f020086; - public static final int pinstripe_tile=0x7f020087; - public static final int preview=0x7f020088; - public static final int preview_two=0x7f020089; - public static final int progress_bg_holo_dark=0x7f02008a; - public static final int progress_horizontal_holo_dark=0x7f02008b; - public static final int progress_primary_holo_dark=0x7f02008c; - public static final int progress_secondary_holo_dark=0x7f02008d; - public static final int select_album_play_all=0x7f02008e; - public static final int select_album_play_all_normal=0x7f02008f; - public static final int select_album_play_all_pressed=0x7f020090; - public static final int status_bg=0x7f020091; - public static final int title_bar_shadow=0x7f020092; - public static final int unknown_album=0x7f020093; - public static final int unknown_album_large=0x7f020094; + public static final int ic_menu_bookmark_dark=0x7f02001c; + public static final int ic_menu_bookmark_light=0x7f02001d; + public static final int ic_menu_browse_dark=0x7f02001e; + public static final int ic_menu_browse_light=0x7f02001f; + public static final int ic_menu_chat_dark=0x7f020020; + public static final int ic_menu_chat_light=0x7f020021; + public static final int ic_menu_chat_send_dark=0x7f020022; + public static final int ic_menu_chat_send_light=0x7f020023; + public static final int ic_menu_exit_dark=0x7f020024; + public static final int ic_menu_exit_light=0x7f020025; + public static final int ic_menu_forward_dark=0x7f020026; + public static final int ic_menu_forward_light=0x7f020027; + public static final int ic_menu_help_dark=0x7f020028; + public static final int ic_menu_help_light=0x7f020029; + public static final int ic_menu_home_dark=0x7f02002a; + public static final int ic_menu_home_light=0x7f02002b; + public static final int ic_menu_pin=0x7f02002c; + public static final int ic_menu_playlists_dark=0x7f02002d; + public static final int ic_menu_playlists_light=0x7f02002e; + public static final int ic_menu_remove_all_dark=0x7f02002f; + public static final int ic_menu_remove_all_light=0x7f020030; + public static final int ic_menu_save_dark=0x7f020031; + public static final int ic_menu_save_light=0x7f020032; + public static final int ic_menu_screen_on_off_dark=0x7f020033; + public static final int ic_menu_screen_on_off_light=0x7f020034; + public static final int ic_menu_search_dark=0x7f020035; + public static final int ic_menu_search_light=0x7f020036; + public static final int ic_menu_select_all_dark=0x7f020037; + public static final int ic_menu_select_all_light=0x7f020038; + public static final int ic_menu_select_folder_dark=0x7f020039; + public static final int ic_menu_select_folder_light=0x7f02003a; + public static final int ic_menu_settings_dark=0x7f02003b; + public static final int ic_menu_settings_light=0x7f02003c; + public static final int ic_menu_share_dark=0x7f02003d; + public static final int ic_menu_share_light=0x7f02003e; + public static final int ic_menu_unpin_dark=0x7f02003f; + public static final int ic_menu_unpin_light=0x7f020040; + public static final int ic_star_full_dark=0x7f020041; + public static final int ic_star_full_light=0x7f020042; + public static final int ic_star_hollow_dark=0x7f020043; + public static final int ic_star_hollow_light=0x7f020044; + public static final int ic_stat_downloaded_dark=0x7f020045; + public static final int ic_stat_downloaded_light=0x7f020046; + public static final int ic_stat_downloading_dark=0x7f020047; + public static final int ic_stat_downloading_light=0x7f020048; + public static final int ic_stat_play_dark=0x7f020049; + public static final int ic_stat_play_light=0x7f02004a; + public static final int ic_stat_ultrasonic=0x7f02004b; + public static final int indicator_arrow=0x7f02004c; + public static final int indicator_bg_bottom=0x7f02004d; + public static final int indicator_bg_top=0x7f02004e; + public static final int list_background=0x7f02004f; + public static final int list_focused_holo=0x7f020050; + public static final int list_longpressed_holo=0x7f020051; + public static final int list_pressed_holo_dark=0x7f020052; + public static final int list_pressed_holo_light=0x7f020053; + public static final int list_selector_background_transition_holo_dark=0x7f020054; + public static final int list_selector_background_transition_holo_light=0x7f020055; + public static final int list_selector_disabled_holo_dark=0x7f020056; + public static final int list_selector_disabled_holo_light=0x7f020057; + public static final int list_selector_holo_dark=0x7f020058; + public static final int list_selector_holo_light=0x7f020059; + public static final int main_header_icon=0x7f02005a; + public static final int md__category_background=0x7f02005b; + public static final int md__list_focused_holo=0x7f02005c; + public static final int md__list_longpressed_holo=0x7f02005d; + public static final int md__list_pressed_holo_dark=0x7f02005e; + public static final int md__list_selector_background_transition_holo_dark=0x7f02005f; + public static final int md__list_selector_disabled_holo_dark=0x7f020060; + public static final int md__list_selector_holo_dark=0x7f020061; + public static final int media_backward_normal=0x7f020062; + public static final int media_backward_normal_dark=0x7f020063; + public static final int media_backward_normal_light=0x7f020064; + public static final int media_forward_normal=0x7f020065; + public static final int media_forward_normal_dark=0x7f020066; + public static final int media_forward_normal_light=0x7f020067; + public static final int media_pause_normal=0x7f020068; + public static final int media_pause_normal_dark=0x7f020069; + public static final int media_pause_normal_light=0x7f02006a; + public static final int media_play_next=0x7f02006b; + public static final int media_play_next_dark=0x7f02006c; + public static final int media_play_next_light=0x7f02006d; + public static final int media_play_now_dark=0x7f02006e; + public static final int media_play_now_light=0x7f02006f; + public static final int media_repeat_all=0x7f020070; + public static final int media_repeat_off=0x7f020071; + public static final int media_repeat_off_dark=0x7f020072; + public static final int media_repeat_off_light=0x7f020073; + public static final int media_repeat_single=0x7f020074; + public static final int media_shuffle_normal=0x7f020075; + public static final int media_shuffle_normal_dark=0x7f020076; + public static final int media_shuffle_normal_light=0x7f020077; + public static final int media_start_normal=0x7f020078; + public static final int media_start_normal_dark=0x7f020079; + public static final int media_start_normal_light=0x7f02007a; + public static final int media_start_pressed=0x7f02007b; + public static final int media_stop_normal=0x7f02007c; + public static final int media_stop_normal_dark=0x7f02007d; + public static final int media_stop_normal_light=0x7f02007e; + public static final int media_toggle_list_normal=0x7f02007f; + public static final int media_toggle_list_normal_dark=0x7f020080; + public static final int media_toggle_list_normal_light=0x7f020081; + public static final int menu_arrow=0x7f020082; + public static final int menu_arrow_bottom=0x7f020083; + public static final int menu_arrow_right=0x7f020084; + public static final int menu_arrow_top=0x7f020085; + public static final int menubar_button_disabled=0x7f020086; + public static final int menubar_button_normal=0x7f020087; + public static final int notify_panel_notification_icon_bg=0x7f020088; + public static final int pinstripe_tile=0x7f020089; + public static final int preview=0x7f02008a; + public static final int preview_two=0x7f02008b; + public static final int progress_bg_holo_dark=0x7f02008c; + public static final int progress_horizontal_holo_dark=0x7f02008d; + public static final int progress_primary_holo_dark=0x7f02008e; + public static final int progress_secondary_holo_dark=0x7f02008f; + public static final int select_album_play_all=0x7f020090; + public static final int select_album_play_all_normal=0x7f020091; + public static final int select_album_play_all_pressed=0x7f020092; + public static final int status_bg=0x7f020093; + public static final int title_bar_shadow=0x7f020094; + public static final int unknown_album=0x7f020095; + public static final int unknown_album_large=0x7f020096; } public static final class id { public static final int album=0x7f060028; public static final int album_artist=0x7f06001e; public static final int album_coverart=0x7f06001c; - public static final int album_menu_download=0x7f0600c9; - public static final int album_menu_pin=0x7f0600c7; - public static final int album_menu_play_last=0x7f0600c6; - public static final int album_menu_play_next=0x7f0600c5; - public static final int album_menu_play_now=0x7f0600c4; - public static final int album_menu_unpin=0x7f0600c8; + public static final int album_menu_download=0x7f0600cb; + public static final int album_menu_pin=0x7f0600c9; + public static final int album_menu_play_last=0x7f0600c8; + public static final int album_menu_play_next=0x7f0600c7; + public static final int album_menu_play_now=0x7f0600c6; + public static final int album_menu_unpin=0x7f0600ca; public static final int album_star=0x7f06001f; public static final int album_title=0x7f06001d; public static final int appwidget_coverart=0x7f060020; public static final int appwidget_top=0x7f060022; public static final int artist=0x7f060024; - public static final int artist_menu_download=0x7f0600cf; - public static final int artist_menu_pin=0x7f0600cd; - public static final int artist_menu_play_last=0x7f0600cc; - public static final int artist_menu_play_next=0x7f0600cb; - public static final int artist_menu_play_now=0x7f0600ca; - public static final int artist_menu_unpin=0x7f0600ce; + public static final int artist_menu_download=0x7f0600d1; + public static final int artist_menu_pin=0x7f0600cf; + public static final int artist_menu_play_last=0x7f0600ce; + public static final int artist_menu_play_next=0x7f0600cd; + public static final int artist_menu_play_now=0x7f0600cc; + public static final int artist_menu_unpin=0x7f0600d0; public static final int both=0x7f060003; public static final int chat_edittext=0x7f06002a; public static final int chat_entries=0x7f060029; @@ -633,86 +640,89 @@ or to a theme attribute in the form "?[package:][type:]na public static final int control_next=0x7f060027; public static final int control_play=0x7f060026; public static final int control_previous=0x7f060025; - public static final int control_stop=0x7f060080; + public static final int control_stop=0x7f060084; public static final int disabled=0x7f060000; public static final int download_album=0x7f06003e; public static final int download_album_art_image=0x7f060034; public static final int download_album_art_layout=0x7f060033; public static final int download_artist=0x7f06003d; + public static final int download_bookmark=0x7f060040; public static final int download_button_bar_flipper=0x7f060036; public static final int download_control_layout=0x7f060030; public static final int download_duration=0x7f06003b; - public static final int download_empty=0x7f06003f; - public static final int download_equalizer=0x7f0600b9; + public static final int download_empty=0x7f060044; + public static final int download_equalizer=0x7f0600bd; public static final int download_items=0x7f060038; - public static final int download_jukebox=0x7f0600bb; - public static final int download_list=0x7f060040; - public static final int download_next=0x7f06006e; - public static final int download_pause=0x7f06006c; + public static final int download_jukebox=0x7f0600bf; + public static final int download_list=0x7f060045; + public static final int download_next=0x7f060072; + public static final int download_pause=0x7f060070; public static final int download_playlist_flipper=0x7f060032; public static final int download_position=0x7f060039; - public static final int download_previous=0x7f06006a; - public static final int download_progress_bar=0x7f060041; - public static final int download_repeat=0x7f06006f; - public static final int download_shuffle=0x7f060069; + public static final int download_previous=0x7f06006e; + public static final int download_progress_bar=0x7f060046; + public static final int download_remove_all=0x7f060041; + public static final int download_repeat=0x7f060073; + public static final int download_save_playlist=0x7f060042; + public static final int download_shuffle=0x7f06006d; public static final int download_song_title=0x7f060037; - public static final int download_star=0x7f060070; - public static final int download_start=0x7f06006b; - public static final int download_status=0x7f060031; - public static final int download_stop=0x7f06006d; - public static final int download_toggle_list=0x7f060068; + public static final int download_star=0x7f060043; + public static final int download_start=0x7f06006f; + public static final int download_stop=0x7f060071; + public static final int download_toggle_list=0x7f06003f; public static final int download_total_duration=0x7f06003c; public static final int download_track=0x7f06003a; - public static final int download_visualizer=0x7f0600ba; + public static final int download_visualizer=0x7f0600be; public static final int download_visualizer_view_layout=0x7f060035; - public static final int equalizer_bar=0x7f060047; - public static final int equalizer_frequency=0x7f060045; - public static final int equalizer_level=0x7f060046; - public static final int equalizer_enabled=0x7f060042; - public static final int equalizer_layout=0x7f060043; - public static final int equalizer_preset=0x7f060044; - public static final int fl_inner=0x7f06008a; + public static final int equalizer_bar=0x7f06004c; + public static final int equalizer_frequency=0x7f06004a; + public static final int equalizer_level=0x7f06004b; + public static final int equalizer_enabled=0x7f060047; + public static final int equalizer_layout=0x7f060048; + public static final int equalizer_preset=0x7f060049; + public static final int fl_inner=0x7f06008e; public static final int flip=0x7f060008; - public static final int get_playlist_comment=0x7f0600b5; - public static final int get_playlist_comment_label=0x7f0600b4; - public static final int get_playlist_name=0x7f0600b3; - public static final int get_playlist_name_label=0x7f0600b2; - public static final int get_playlist_public=0x7f0600b7; - public static final int get_playlist_public_label=0x7f0600b6; + public static final int get_playlist_comment=0x7f0600b9; + public static final int get_playlist_comment_label=0x7f0600b8; + public static final int get_playlist_name=0x7f0600b7; + public static final int get_playlist_name_label=0x7f0600b6; + public static final int get_playlist_public=0x7f0600bb; + public static final int get_playlist_public_label=0x7f0600ba; public static final int gridview=0x7f060009; - public static final int help_back=0x7f060049; - public static final int help_buttons=0x7f060048; - public static final int help_contents=0x7f06004c; - public static final int help_forward=0x7f06004b; - public static final int help_stop=0x7f06004a; - public static final int jukebox_volume_progress_bar=0x7f06004e; + public static final int help_back=0x7f06004e; + public static final int help_buttons=0x7f06004d; + public static final int help_contents=0x7f060051; + public static final int help_forward=0x7f060050; + public static final int help_stop=0x7f06004f; + public static final int jukebox_volume_progress_bar=0x7f060053; public static final int linearLayout1=0x7f060021; - public static final int lyrics_artist=0x7f060050; - public static final int lyrics_scrollview=0x7f06004f; - public static final int lyrics_text=0x7f060052; - public static final int lyrics_title=0x7f060051; - public static final int main_select_server_1=0x7f060056; - public static final int main_select_server_2=0x7f060057; - public static final int main_albums=0x7f06005f; - public static final int main_albums_alphaByArtist=0x7f060067; - public static final int main_albums_alphaByName=0x7f060066; - public static final int main_albums_button=0x7f06005a; - public static final int main_albums_frequent=0x7f060062; - public static final int main_albums_highest=0x7f060063; - public static final int main_albums_newest=0x7f060060; - public static final int main_albums_random=0x7f060064; - public static final int main_albums_recent=0x7f060061; - public static final int main_albums_starred=0x7f060065; - public static final int main_artists_button=0x7f060059; - public static final int main_dummy=0x7f060054; - public static final int main_genres_button=0x7f06005b; - public static final int main_list=0x7f060053; - public static final int main_music=0x7f060058; - public static final int main_select_server=0x7f060055; - public static final int main_shuffle=0x7f0600b8; - public static final int main_songs=0x7f06005c; - public static final int main_songs_button=0x7f06005d; - public static final int main_songs_starred=0x7f06005e; + public static final int linearLayout2=0x7f060031; + public static final int lyrics_artist=0x7f060055; + public static final int lyrics_scrollview=0x7f060054; + public static final int lyrics_text=0x7f060057; + public static final int lyrics_title=0x7f060056; + public static final int main_select_server_1=0x7f06005b; + public static final int main_select_server_2=0x7f06005c; + public static final int main_albums=0x7f060064; + public static final int main_albums_alphaByArtist=0x7f06006c; + public static final int main_albums_alphaByName=0x7f06006b; + public static final int main_albums_button=0x7f06005f; + public static final int main_albums_frequent=0x7f060067; + public static final int main_albums_highest=0x7f060068; + public static final int main_albums_newest=0x7f060065; + public static final int main_albums_random=0x7f060069; + public static final int main_albums_recent=0x7f060066; + public static final int main_albums_starred=0x7f06006a; + public static final int main_artists_button=0x7f06005e; + public static final int main_dummy=0x7f060059; + public static final int main_genres_button=0x7f060060; + public static final int main_list=0x7f060058; + public static final int main_music=0x7f06005d; + public static final int main_select_server=0x7f06005a; + public static final int main_shuffle=0x7f0600bc; + public static final int main_songs=0x7f060061; + public static final int main_songs_button=0x7f060062; + public static final int main_songs_starred=0x7f060063; public static final int manualOnly=0x7f060004; /** Used with View#setTag(int) to specify a position for the active view. */ @@ -732,109 +742,108 @@ or to a theme attribute in the form "?[package:][type:]na /** The ID of the menu container. */ public static final int md__menu=0x7f06000f; - public static final int menu_about=0x7f06007b; + public static final int menu_about=0x7f06007f; public static final int menu_album=0x7f060012; - public static final int menu_browse=0x7f060074; - public static final int menu_chat=0x7f060077; - public static final int menu_common=0x7f060079; - public static final int menu_exit=0x7f06007c; - public static final int menu_home=0x7f060073; - public static final int menu_lyrics=0x7f0600c0; - public static final int menu_main=0x7f060071; - public static final int menu_navigation=0x7f060072; - public static final int menu_now_playing=0x7f060078; - public static final int menu_playlists=0x7f060076; - public static final int menu_remove=0x7f0600c1; - public static final int menu_remove_all=0x7f0600bd; - public static final int menu_save_playlist=0x7f0600bc; - public static final int menu_screen_on_off=0x7f0600be; - public static final int menu_search=0x7f060075; - public static final int menu_settings=0x7f06007a; - public static final int menu_show_album=0x7f0600bf; - public static final int menu_shuffle=0x7f0600c2; - public static final int notification_image=0x7f06007e; - public static final int now_playing=0x7f060081; - public static final int now_playing_artist=0x7f060085; - public static final int now_playing_control_play=0x7f060086; - public static final int now_playing_image=0x7f060083; - public static final int now_playing_trackname=0x7f060084; - public static final int now_playing_view=0x7f060082; - public static final int play_video_contents=0x7f060087; - public static final int playlist_info=0x7f0600d0; - public static final int playlist_menu_delete=0x7f0600d7; - public static final int playlist_menu_download=0x7f0600d5; - public static final int playlist_menu_pin=0x7f0600d3; - public static final int playlist_menu_play_now=0x7f0600d1; - public static final int playlist_menu_play_shuffled=0x7f0600d2; - public static final int playlist_menu_unpin=0x7f0600d4; - public static final int playlist_name=0x7f060088; - public static final int playlist_update_info=0x7f0600d6; - public static final int progress_message=0x7f060089; + public static final int menu_bookmarks=0x7f06007a; + public static final int menu_browse=0x7f060077; + public static final int menu_chat=0x7f06007b; + public static final int menu_common=0x7f06007d; + public static final int menu_exit=0x7f060080; + public static final int menu_home=0x7f060076; + public static final int menu_lyrics=0x7f0600c2; + public static final int menu_main=0x7f060074; + public static final int menu_navigation=0x7f060075; + public static final int menu_now_playing=0x7f06007c; + public static final int menu_playlists=0x7f060079; + public static final int menu_remove=0x7f0600c3; + public static final int menu_screen_on_off=0x7f0600c0; + public static final int menu_search=0x7f060078; + public static final int menu_settings=0x7f06007e; + public static final int menu_show_album=0x7f0600c1; + public static final int menu_shuffle=0x7f0600c4; + public static final int notification_image=0x7f060082; + public static final int now_playing=0x7f060085; + public static final int now_playing_artist=0x7f060089; + public static final int now_playing_control_play=0x7f06008a; + public static final int now_playing_image=0x7f060087; + public static final int now_playing_trackname=0x7f060088; + public static final int now_playing_view=0x7f060086; + public static final int play_video_contents=0x7f06008b; + public static final int playlist_info=0x7f0600d2; + public static final int playlist_menu_delete=0x7f0600d9; + public static final int playlist_menu_download=0x7f0600d7; + public static final int playlist_menu_pin=0x7f0600d5; + public static final int playlist_menu_play_now=0x7f0600d3; + public static final int playlist_menu_play_shuffled=0x7f0600d4; + public static final int playlist_menu_unpin=0x7f0600d6; + public static final int playlist_name=0x7f06008c; + public static final int playlist_update_info=0x7f0600d8; + public static final int progress_message=0x7f06008d; public static final int pullDownFromTop=0x7f060005; public static final int pullFromEnd=0x7f060002; public static final int pullFromStart=0x7f060001; public static final int pullUpFromBottom=0x7f060006; - public static final int pull_to_refresh_image=0x7f06008b; - public static final int pull_to_refresh_progress=0x7f06008c; - public static final int pull_to_refresh_sub_text=0x7f06008e; - public static final int pull_to_refresh_text=0x7f06008d; + public static final int pull_to_refresh_image=0x7f06008f; + public static final int pull_to_refresh_progress=0x7f060090; + public static final int pull_to_refresh_sub_text=0x7f060092; + public static final int pull_to_refresh_text=0x7f060091; public static final int rotate=0x7f060007; - public static final int save_playlist_name=0x7f060090; - public static final int save_playlist_root=0x7f06008f; + public static final int save_playlist_name=0x7f060094; + public static final int save_playlist_root=0x7f060093; public static final int scrollview=0x7f06000b; - public static final int search_albums=0x7f060094; - public static final int search_artists=0x7f060093; - public static final int search_list=0x7f060091; - public static final int search_more_albums=0x7f060097; - public static final int search_more_artists=0x7f060096; - public static final int search_more_songs=0x7f060098; - public static final int search_search=0x7f060092; - public static final int search_songs=0x7f060095; - public static final int select_album_art=0x7f06009b; - public static final int select_album_artist=0x7f06009d; + public static final int search_albums=0x7f060098; + public static final int search_artists=0x7f060097; + public static final int search_list=0x7f060095; + public static final int search_more_albums=0x7f06009b; + public static final int search_more_artists=0x7f06009a; + public static final int search_more_songs=0x7f06009c; + public static final int search_search=0x7f060096; + public static final int search_songs=0x7f060099; + public static final int select_album_art=0x7f06009f; + public static final int select_album_artist=0x7f0600a1; public static final int select_album_delete=0x7f06001a; public static final int select_album_download=0x7f060019; - public static final int select_album_duration=0x7f0600a0; - public static final int select_album_empty=0x7f060099; - public static final int select_album_entries=0x7f06009a; - public static final int select_album_genre=0x7f06009e; + public static final int select_album_duration=0x7f0600a4; + public static final int select_album_empty=0x7f06009d; + public static final int select_album_entries=0x7f06009e; + public static final int select_album_genre=0x7f0600a2; public static final int select_album_more=0x7f06001b; public static final int select_album_pin=0x7f060017; - public static final int select_album_play_all=0x7f0600c3; + public static final int select_album_play_all=0x7f0600c5; public static final int select_album_play_last=0x7f060016; public static final int select_album_play_next=0x7f060015; public static final int select_album_play_now=0x7f060014; public static final int select_album_select=0x7f060013; - public static final int select_album_song_count=0x7f06009f; - public static final int select_album_title=0x7f06009c; + public static final int select_album_song_count=0x7f0600a3; + public static final int select_album_title=0x7f0600a0; public static final int select_album_unpin=0x7f060018; - public static final int select_artist_folder=0x7f0600a2; - public static final int select_artist_folder_1=0x7f0600a3; - public static final int select_artist_folder_2=0x7f0600a4; - public static final int select_artist_list=0x7f0600a1; - public static final int select_genre_empty=0x7f0600a5; - public static final int select_genre_list=0x7f0600a6; - public static final int select_playlist_empty=0x7f0600a7; - public static final int select_playlist_list=0x7f0600a8; - public static final int song_artist=0x7f0600ad; - public static final int song_check=0x7f0600a9; - public static final int song_duration=0x7f0600ae; - public static final int song_menu_download=0x7f0600dd; - public static final int song_menu_pin=0x7f0600db; - public static final int song_menu_play_last=0x7f0600da; - public static final int song_menu_play_next=0x7f0600d9; - public static final int song_menu_play_now=0x7f0600d8; - public static final int song_menu_unpin=0x7f0600dc; - public static final int song_star=0x7f0600af; - public static final int song_status=0x7f0600ac; - public static final int song_title=0x7f0600ab; - public static final int song_track=0x7f0600aa; - public static final int statusbar=0x7f06007d; - public static final int tab_progress=0x7f0600b0; - public static final int tab_progress_message=0x7f0600b1; + public static final int select_artist_folder=0x7f0600a6; + public static final int select_artist_folder_1=0x7f0600a7; + public static final int select_artist_folder_2=0x7f0600a8; + public static final int select_artist_list=0x7f0600a5; + public static final int select_genre_empty=0x7f0600a9; + public static final int select_genre_list=0x7f0600aa; + public static final int select_playlist_empty=0x7f0600ab; + public static final int select_playlist_list=0x7f0600ac; + public static final int song_artist=0x7f0600b0; + public static final int song_check=0x7f0600b2; + public static final int song_duration=0x7f0600b1; + public static final int song_menu_download=0x7f0600df; + public static final int song_menu_pin=0x7f0600dd; + public static final int song_menu_play_last=0x7f0600dc; + public static final int song_menu_play_next=0x7f0600db; + public static final int song_menu_play_now=0x7f0600da; + public static final int song_menu_unpin=0x7f0600de; + public static final int song_star=0x7f0600b3; + public static final int song_status=0x7f0600af; + public static final int song_title=0x7f0600ae; + public static final int song_track=0x7f0600ad; + public static final int statusbar=0x7f060081; + public static final int tab_progress=0x7f0600b4; + public static final int tab_progress_message=0x7f0600b5; public static final int title=0x7f060023; - public static final int toast_layout_root=0x7f06004d; - public static final int trackname=0x7f06007f; + public static final int toast_layout_root=0x7f060052; + public static final int trackname=0x7f060083; public static final int webview=0x7f06000a; } public static final class integer { @@ -854,39 +863,41 @@ or to a theme attribute in the form "?[package:][type:]na public static final int chat_item_reverse=0x7f030009; public static final int download=0x7f03000a; public static final int download_button_bar_flipper=0x7f03000b; - public static final int download_playlist=0x7f03000c; - public static final int download_slider=0x7f03000d; - public static final int equalizer=0x7f03000e; - public static final int equalizer_bar=0x7f03000f; - public static final int help=0x7f030010; - public static final int jukebox_volume=0x7f030011; - public static final int lyrics=0x7f030012; - public static final int main=0x7f030013; - public static final int main_buttons=0x7f030014; - public static final int media_buttons=0x7f030015; - public static final int menu_main=0x7f030016; - public static final int menu_row_category=0x7f030017; - public static final int menu_row_item=0x7f030018; - public static final int notification=0x7f030019; - public static final int notification_large=0x7f03001a; - public static final int now_playing=0x7f03001b; - public static final int play_video=0x7f03001c; - public static final int playlist_list_item=0x7f03001d; - public static final int progress=0x7f03001e; - public static final int pull_to_refresh_header_horizontal=0x7f03001f; - public static final int pull_to_refresh_header_vertical=0x7f030020; - public static final int save_playlist=0x7f030021; - public static final int search=0x7f030022; - public static final int search_buttons=0x7f030023; - public static final int select_album=0x7f030024; - public static final int select_album_header=0x7f030025; - public static final int select_artist=0x7f030026; - public static final int select_artist_header=0x7f030027; - public static final int select_genre=0x7f030028; - public static final int select_playlist=0x7f030029; - public static final int song_list_item=0x7f03002a; - public static final int tab_progress=0x7f03002b; - public static final int update_playlist=0x7f03002c; + public static final int download_buttons=0x7f03000c; + public static final int download_playlist=0x7f03000d; + public static final int download_slider=0x7f03000e; + public static final int equalizer=0x7f03000f; + public static final int equalizer_bar=0x7f030010; + public static final int help=0x7f030011; + public static final int jukebox_volume=0x7f030012; + public static final int lyrics=0x7f030013; + public static final int main=0x7f030014; + public static final int main_buttons=0x7f030015; + public static final int media_buttons=0x7f030016; + public static final int menu_main=0x7f030017; + public static final int menu_row_category=0x7f030018; + public static final int menu_row_item=0x7f030019; + public static final int notification=0x7f03001a; + public static final int notification_large=0x7f03001b; + public static final int now_playing=0x7f03001c; + public static final int play_video=0x7f03001d; + public static final int playlist_list_item=0x7f03001e; + public static final int progress=0x7f03001f; + public static final int pull_to_refresh_header_horizontal=0x7f030020; + public static final int pull_to_refresh_header_vertical=0x7f030021; + public static final int save_playlist=0x7f030022; + public static final int search=0x7f030023; + public static final int search_buttons=0x7f030024; + public static final int select_album=0x7f030025; + public static final int select_album_header=0x7f030026; + public static final int select_artist=0x7f030027; + public static final int select_artist_header=0x7f030028; + public static final int select_genre=0x7f030029; + public static final int select_playlist=0x7f03002a; + public static final int song_details=0x7f03002b; + public static final int song_list_item=0x7f03002c; + public static final int tab_progress=0x7f03002d; + public static final int update_playlist=0x7f03002e; } public static final class menu { public static final int main=0x7f0e0000; @@ -909,136 +920,141 @@ or to a theme attribute in the form "?[package:][type:]na public static final int select_album_n_songs_unpinned=0x7f0d0003; } public static final class string { - public static final int background_task_loading=0x7f080130; - public static final int background_task_network_error=0x7f080132; - public static final int background_task_no_network=0x7f080131; - public static final int background_task_not_found=0x7f080133; - public static final int background_task_parse_error=0x7f080134; - public static final int background_task_wait=0x7f08012f; - public static final int button_bar_browse=0x7f08001b; - public static final int button_bar_chat=0x7f08001d; - public static final int button_bar_home=0x7f08001a; - public static final int button_bar_now_playing=0x7f08001f; - public static final int button_bar_playlists=0x7f08001e; - public static final int button_bar_search=0x7f08001c; - public static final int chat_send_a_message=0x7f08014c; - public static final int common_appname=0x7f080006; - public static final int common_cancel=0x7f080009; - public static final int common_comment=0x7f080017; - public static final int common_confirm=0x7f080015; - public static final int common_delete=0x7f080010; - public static final int common_download=0x7f08000f; - public static final int common_info=0x7f080013; - public static final int common_multiple_genres=0x7f080012; - public static final int common_name=0x7f080016; - public static final int common_ok=0x7f080007; - public static final int common_pin=0x7f08000d; - public static final int common_play_last=0x7f08000c; - public static final int common_play_next=0x7f08000b; - public static final int common_play_now=0x7f08000a; - public static final int common_play_shuffled=0x7f080014; - public static final int common_public=0x7f080018; - public static final int common_save=0x7f080008; - public static final int common_show_artist=0x7f080019; - public static final int common_unpin=0x7f08000e; - public static final int common_various_artists=0x7f080011; - public static final int delete_playlist=0x7f080090; - public static final int download_empty=0x7f08006c; - public static final int download_jukebox_not_authorized=0x7f08008b; - public static final int download_jukebox_off=0x7f080087; - public static final int download_jukebox_offline=0x7f08008a; - public static final int download_jukebox_on=0x7f080086; - public static final int download_jukebox_server_too_old=0x7f080089; - public static final int download_jukebox_volume=0x7f080088; - public static final int download_menu_equalizer=0x7f080078; - public static final int download_menu_jukebox=0x7f08007a; - public static final int download_menu_lyrics=0x7f080071; - public static final int download_menu_remove=0x7f080072; - public static final int download_menu_remove_all=0x7f080073; - public static final int download_menu_save=0x7f080077; - public static final int download_menu_screen_off=0x7f080075; - public static final int download_menu_screen_on=0x7f080074; - public static final int download_menu_show_album=0x7f080070; - public static final int download_menu_shuffle=0x7f080076; - public static final int download_menu_shuffle_notification=0x7f08007b; - public static final int download_menu_visualizer=0x7f080079; - public static final int download_playerstate_buffering=0x7f08006e; - public static final int download_playerstate_downloading=0x7f08006d; - public static final int download_playerstate_playing_shuffle=0x7f08006f; - public static final int download_playlist_done=0x7f08007f; - public static final int download_playlist_error=0x7f080080; - public static final int download_playlist_name=0x7f08007d; - public static final int download_playlist_saving=0x7f08007e; - public static final int download_playlist_title=0x7f08007c; - public static final int download_repeat_all=0x7f080082; - public static final int download_repeat_off=0x7f080081; - public static final int download_repeat_single=0x7f080083; - public static final int download_visualizer_off=0x7f080085; - public static final int download_visualizer_on=0x7f080084; - public static final int equalizer_enabled=0x7f080141; - public static final int equalizer_label=0x7f080140; - public static final int equalizer_preset=0x7f080142; - public static final int error_label=0x7f080094; - public static final int help_back=0x7f080049; - public static final int help_close=0x7f08004a; - public static final int help_label=0x7f080047; - public static final int help_loading=0x7f08004c; - public static final int help_title=0x7f080048; - public static final int help_url=0x7f08004b; - public static final int lyrics_nomatch=0x7f080093; - public static final int main_albums_alphaByArtist=0x7f080032; - public static final int main_albums_alphaByName=0x7f080031; - public static final int main_albums_frequent=0x7f08002d; - public static final int main_albums_highest=0x7f08002e; - public static final int main_albums_newest=0x7f08002b; - public static final int main_albums_random=0x7f08002f; - public static final int main_albums_recent=0x7f08002c; - public static final int main_albums_starred=0x7f080030; - public static final int main_albums_title=0x7f08002a; - public static final int main_artists_title=0x7f080028; - public static final int main_genres_title=0x7f080029; - public static final int main_music=0x7f080037; - public static final int main_offline=0x7f080026; - public static final int main_select_all_genres=0x7f080024; - public static final int main_select_genre=0x7f080023; - public static final int main_select_server=0x7f080022; - public static final int main_settings=0x7f080027; - public static final int main_shuffle=0x7f080025; - public static final int main_songs_genre=0x7f080036; - public static final int main_songs_random=0x7f080035; - public static final int main_songs_starred=0x7f080034; - public static final int main_songs_title=0x7f080033; - public static final int main_welcome_text=0x7f080021; - public static final int main_welcome_title=0x7f080020; - public static final int menu_about=0x7f08003b; - public static final int menu_add_playlist=0x7f08003f; - public static final int menu_common=0x7f08003e; - public static final int menu_deleted_playlist=0x7f080041; - public static final int menu_deleted_playlist_error=0x7f080042; - public static final int menu_exit=0x7f080038; - public static final int menu_help=0x7f08003a; - public static final int menu_navigation=0x7f08003d; - public static final int menu_remove_playlist=0x7f080040; - public static final int menu_search=0x7f08003c; - public static final int menu_settings=0x7f080039; - public static final int music_library_label=0x7f080058; - public static final int music_library_label_offline=0x7f080059; - public static final int music_service_retry=0x7f08012e; - public static final int parser_artist_count=0x7f08013c; - public static final int parser_not_authenticated=0x7f08013a; - public static final int parser_not_authorized=0x7f08013b; - public static final int parser_reading=0x7f080136; - public static final int parser_reading_done=0x7f080137; - public static final int parser_upgrade_client=0x7f080138; - public static final int parser_upgrade_server=0x7f080139; - public static final int play_video_loading=0x7f08004d; - public static final int play_video_noplugin=0x7f08004e; - public static final int playlist_label=0x7f080043; - public static final int playlist_update_info=0x7f080044; - public static final int playlist_updated_info=0x7f080045; - public static final int playlist_updated_info_error=0x7f080046; - public static final int playlist_error=0x7f08008c; - public static final int progress_wait=0x7f080057; + public static final int background_task_loading=0x7f080006; + public static final int background_task_network_error=0x7f080007; + public static final int background_task_no_network=0x7f080008; + public static final int background_task_not_found=0x7f080009; + public static final int background_task_parse_error=0x7f08000a; + public static final int background_task_wait=0x7f08000b; + public static final int button_bar_bookmarks=0x7f08000c; + public static final int button_bar_browse=0x7f08000d; + public static final int button_bar_chat=0x7f08000e; + public static final int button_bar_home=0x7f08000f; + public static final int button_bar_now_playing=0x7f080010; + public static final int button_bar_playlists=0x7f080011; + public static final int button_bar_search=0x7f080012; + public static final int chat_send_a_message=0x7f080013; + public static final int common_appname=0x7f080014; + public static final int common_cancel=0x7f080015; + public static final int common_comment=0x7f080016; + public static final int common_confirm=0x7f080017; + public static final int common_delete=0x7f080018; + public static final int common_download=0x7f080019; + public static final int common_info=0x7f08001a; + public static final int common_multiple_genres=0x7f08001b; + public static final int common_name=0x7f08001c; + public static final int common_ok=0x7f08001d; + public static final int common_pin=0x7f08001e; + public static final int common_play_last=0x7f08001f; + public static final int common_play_next=0x7f080020; + public static final int common_play_now=0x7f080021; + public static final int common_play_shuffled=0x7f080022; + public static final int common_public=0x7f080023; + public static final int common_save=0x7f080024; + public static final int common_show_artist=0x7f080025; + public static final int common_unpin=0x7f080026; + public static final int common_various_artists=0x7f080027; + public static final int delete_playlist=0x7f080028; + public static final int download_bookmark_removed=0x7f080029; + public static final int download_bookmark_set_at_position=0x7f08002a; + public static final int download_empty=0x7f08002b; + public static final int download_jukebox_not_authorized=0x7f08002c; + public static final int download_jukebox_off=0x7f08002d; + public static final int download_jukebox_offline=0x7f08002e; + public static final int download_jukebox_on=0x7f08002f; + public static final int download_jukebox_server_too_old=0x7f080030; + public static final int download_jukebox_volume=0x7f080031; + public static final int download_menu_equalizer=0x7f080032; + public static final int download_menu_jukebox_off=0x7f080033; + public static final int download_menu_jukebox_on=0x7f080034; + public static final int download_menu_lyrics=0x7f080035; + public static final int download_menu_remove=0x7f080036; + public static final int download_menu_remove_all=0x7f080037; + public static final int download_menu_save=0x7f080038; + public static final int download_menu_screen_off=0x7f080039; + public static final int download_menu_screen_on=0x7f08003a; + public static final int download_menu_show_album=0x7f08003b; + public static final int download_menu_shuffle=0x7f08003c; + public static final int download_menu_shuffle_notification=0x7f08003d; + public static final int download_menu_visualizer=0x7f08003e; + public static final int download_playerstate_buffering=0x7f08003f; + public static final int download_playerstate_downloading=0x7f080040; + public static final int download_playerstate_playing_shuffle=0x7f080041; + public static final int download_playlist_done=0x7f080042; + public static final int download_playlist_error=0x7f080043; + public static final int download_playlist_name=0x7f080044; + public static final int download_playlist_saving=0x7f080045; + public static final int download_playlist_title=0x7f080046; + public static final int download_repeat_all=0x7f080047; + public static final int download_repeat_off=0x7f080048; + public static final int download_repeat_single=0x7f080049; + public static final int download_visualizer_off=0x7f08004a; + public static final int download_visualizer_on=0x7f08004b; + public static final int equalizer_enabled=0x7f08004c; + public static final int equalizer_label=0x7f08004d; + public static final int equalizer_preset=0x7f08004e; + public static final int error_label=0x7f08004f; + public static final int help_back=0x7f080050; + public static final int help_close=0x7f080051; + public static final int help_label=0x7f080052; + public static final int help_loading=0x7f080053; + public static final int help_title=0x7f080054; + public static final int help_url=0x7f080055; + public static final int jukebox_is_default=0x7f080056; + public static final int lyrics_nomatch=0x7f080057; + public static final int main_albums_alphaByArtist=0x7f080058; + public static final int main_albums_alphaByName=0x7f080059; + public static final int main_albums_frequent=0x7f08005a; + public static final int main_albums_highest=0x7f08005b; + public static final int main_albums_newest=0x7f08005c; + public static final int main_albums_random=0x7f08005d; + public static final int main_albums_recent=0x7f08005e; + public static final int main_albums_starred=0x7f08005f; + public static final int main_albums_title=0x7f080060; + public static final int main_artists_title=0x7f080061; + public static final int main_genres_title=0x7f080062; + public static final int main_music=0x7f080063; + public static final int main_offline=0x7f080064; + public static final int main_select_all_genres=0x7f080065; + public static final int main_select_genre=0x7f080066; + public static final int main_select_server=0x7f080067; + public static final int main_settings=0x7f080068; + public static final int main_shuffle=0x7f080069; + public static final int main_songs_genre=0x7f08006a; + public static final int main_songs_random=0x7f08006b; + public static final int main_songs_starred=0x7f08006c; + public static final int main_songs_title=0x7f08006d; + public static final int main_welcome_text=0x7f08006e; + public static final int main_welcome_title=0x7f08006f; + public static final int menu_about=0x7f080070; + public static final int menu_add_playlist=0x7f080071; + public static final int menu_common=0x7f080072; + public static final int menu_deleted_playlist=0x7f080073; + public static final int menu_deleted_playlist_error=0x7f080074; + public static final int menu_exit=0x7f080075; + public static final int menu_help=0x7f080076; + public static final int menu_navigation=0x7f080077; + public static final int menu_remove_playlist=0x7f080078; + public static final int menu_search=0x7f080079; + public static final int menu_settings=0x7f08007a; + public static final int music_library_label=0x7f08007b; + public static final int music_library_label_offline=0x7f08007c; + public static final int music_service_retry=0x7f08007d; + public static final int parser_artist_count=0x7f08007e; + public static final int parser_not_authenticated=0x7f08007f; + public static final int parser_not_authorized=0x7f080080; + public static final int parser_reading=0x7f080081; + public static final int parser_reading_done=0x7f080082; + public static final int parser_upgrade_client=0x7f080083; + public static final int parser_upgrade_server=0x7f080084; + public static final int play_video_loading=0x7f080085; + public static final int play_video_noplugin=0x7f080086; + public static final int playlist_label=0x7f080087; + public static final int playlist_update_info=0x7f080088; + public static final int playlist_updated_info=0x7f080089; + public static final int playlist_updated_info_error=0x7f08008a; + public static final int playlist_error=0x7f08008b; + public static final int progress_wait=0x7f08008c; /** Just use standard Pull Down String when pulling up. These can be set for languages which require it Just use standard Pull Down String when pulling up. These can be set for languages which require it */ @@ -1048,203 +1064,209 @@ or to a theme attribute in the form "?[package:][type:]na public static final int pull_to_refresh_pull_label=0x7f080000; public static final int pull_to_refresh_refreshing_label=0x7f080002; public static final int pull_to_refresh_release_label=0x7f080001; - public static final int removed_playlist=0x7f08008f; - public static final int search_albums=0x7f080054; - public static final int search_artists=0x7f080053; - public static final int search_label=0x7f08004f; - public static final int search_more=0x7f080056; - public static final int search_no_match=0x7f080052; - public static final int search_search=0x7f080051; - public static final int search_songs=0x7f080055; - public static final int search_title=0x7f080050; - public static final int select_album_donate_dialog_0_trial_days_left=0x7f080068; - public static final int select_album_donate_dialog_later=0x7f080067; - public static final int select_album_donate_dialog_message=0x7f080065; - public static final int select_album_donate_dialog_now=0x7f080066; - public static final int select_album_empty=0x7f08005a; - public static final int select_album_more=0x7f08005e; - public static final int select_album_n_selected=0x7f08005c; - public static final int select_album_n_unselected=0x7f08005d; - public static final int select_album_no_network=0x7f080063; - public static final int select_album_no_sdcard=0x7f080062; - public static final int select_album_not_licensed=0x7f080064; - public static final int select_album_offline=0x7f08005f; - public static final int select_album_play_all=0x7f080061; - public static final int select_album_searching=0x7f080060; - public static final int select_album_select=0x7f08005b; - public static final int select_artist_all_folders=0x7f08013f; - public static final int select_artist_empty=0x7f080069; - public static final int select_artist_folder=0x7f08013e; - public static final int select_artist_refresh=0x7f08013d; - public static final int select_genre_empty=0x7f08006a; - public static final int select_playlist_empty=0x7f08006b; - public static final int service_connecting=0x7f080135; - public static final int settings_appearance_title=0x7f0800b0; - public static final int settings_buffer_length=0x7f0800e9; - public static final int settings_buffer_length_0=0x7f0800eb; - public static final int settings_buffer_length_1=0x7f0800ec; - public static final int settings_buffer_length_10=0x7f0800f0; - public static final int settings_buffer_length_12=0x7f0800f1; - public static final int settings_buffer_length_120=0x7f0800f6; - public static final int settings_buffer_length_15=0x7f0800f2; - public static final int settings_buffer_length_2=0x7f0800ed; - public static final int settings_buffer_length_20=0x7f0800f3; - public static final int settings_buffer_length_30=0x7f0800f4; - public static final int settings_buffer_length_5=0x7f0800ee; - public static final int settings_buffer_length_60=0x7f0800f5; - public static final int settings_buffer_length_8=0x7f0800ef; - public static final int settings_cache_location=0x7f0800a8; - public static final int settings_cache_location_error=0x7f0800a9; - public static final int settings_cache_size=0x7f0800a7; - public static final int settings_cache_size_100=0x7f0800d0; - public static final int settings_cache_size_1000=0x7f0800d3; - public static final int settings_cache_size_10000=0x7f0800d6; - public static final int settings_cache_size_200=0x7f0800d1; - public static final int settings_cache_size_2000=0x7f0800d4; - public static final int settings_cache_size_20000=0x7f0800d7; - public static final int settings_cache_size_500=0x7f0800d2; - public static final int settings_cache_size_5000=0x7f0800d5; - public static final int settings_cache_size_unlimited=0x7f0800d8; - public static final int settings_cache_title=0x7f0800a4; - public static final int settings_chat_refresh=0x7f0800a3; - public static final int settings_clear_search_history=0x7f0800d9; - public static final int settings_connection_failure=0x7f0800ad; - public static final int settings_default_albums=0x7f080126; - public static final int settings_default_artists=0x7f080125; - public static final int settings_default_songs=0x7f080127; - public static final int settings_directory_cache_time=0x7f0800a6; - public static final int settings_directory_cache_time_0=0x7f0800f7; - public static final int settings_directory_cache_time_1=0x7f0800f8; - public static final int settings_directory_cache_time_10=0x7f0800fb; - public static final int settings_directory_cache_time_2=0x7f0800f9; - public static final int settings_directory_cache_time_30=0x7f0800fc; - public static final int settings_directory_cache_time_5=0x7f0800fa; - public static final int settings_directory_cache_time_60=0x7f0800fd; - public static final int settings_display_bitrate=0x7f0800c4; - public static final int settings_display_bitrate_summary=0x7f0800c5; - public static final int settings_download_transition=0x7f08010e; - public static final int settings_download_transition_summary=0x7f08010f; - public static final int settings_gapless_playback=0x7f080110; - public static final int settings_gapless_playback_summary=0x7f080111; - public static final int settings_hide_media_summary=0x7f0800e3; + public static final int removed_playlist=0x7f08008d; + public static final int search_albums=0x7f08008e; + public static final int search_artists=0x7f08008f; + public static final int search_label=0x7f080090; + public static final int search_more=0x7f080091; + public static final int search_no_match=0x7f080092; + public static final int search_search=0x7f080093; + public static final int search_songs=0x7f080094; + public static final int search_title=0x7f080095; + public static final int select_album_donate_dialog_0_trial_days_left=0x7f080096; + public static final int select_album_donate_dialog_later=0x7f080097; + public static final int select_album_donate_dialog_message=0x7f080098; + public static final int select_album_donate_dialog_now=0x7f080099; + public static final int select_album_empty=0x7f08009a; + public static final int select_album_more=0x7f08009b; + public static final int select_album_n_selected=0x7f08009c; + public static final int select_album_n_unselected=0x7f08009d; + public static final int select_album_no_network=0x7f08009e; + public static final int select_album_no_sdcard=0x7f08009f; + public static final int select_album_not_licensed=0x7f0800a0; + public static final int select_album_offline=0x7f0800a1; + public static final int select_album_play_all=0x7f0800a2; + public static final int select_album_searching=0x7f0800a3; + public static final int select_album_select=0x7f0800a4; + public static final int select_artist_all_folders=0x7f0800a5; + public static final int select_artist_empty=0x7f0800a6; + public static final int select_artist_folder=0x7f0800a7; + public static final int select_artist_refresh=0x7f0800a8; + public static final int select_genre_empty=0x7f0800a9; + public static final int select_playlist_empty=0x7f0800aa; + public static final int service_connecting=0x7f0800ab; + public static final int settings_appearance_title=0x7f0800ac; + public static final int settings_buffer_length=0x7f0800ad; + public static final int settings_buffer_length_0=0x7f0800ae; + public static final int settings_buffer_length_1=0x7f0800af; + public static final int settings_buffer_length_10=0x7f0800b0; + public static final int settings_buffer_length_12=0x7f0800b1; + public static final int settings_buffer_length_120=0x7f0800b2; + public static final int settings_buffer_length_15=0x7f0800b3; + public static final int settings_buffer_length_2=0x7f0800b4; + public static final int settings_buffer_length_20=0x7f0800b5; + public static final int settings_buffer_length_30=0x7f0800b6; + public static final int settings_buffer_length_5=0x7f0800b7; + public static final int settings_buffer_length_60=0x7f0800b8; + public static final int settings_buffer_length_8=0x7f0800b9; + public static final int settings_cache_location=0x7f0800ba; + public static final int settings_cache_location_error=0x7f0800bb; + public static final int settings_cache_size=0x7f0800bc; + public static final int settings_cache_size_100=0x7f0800bd; + public static final int settings_cache_size_1000=0x7f0800be; + public static final int settings_cache_size_10000=0x7f0800bf; + public static final int settings_cache_size_200=0x7f0800c0; + public static final int settings_cache_size_2000=0x7f0800c1; + public static final int settings_cache_size_20000=0x7f0800c2; + public static final int settings_cache_size_500=0x7f0800c3; + public static final int settings_cache_size_5000=0x7f0800c4; + public static final int settings_cache_size_unlimited=0x7f0800c5; + public static final int settings_cache_title=0x7f0800c6; + public static final int settings_chat_refresh=0x7f0800c7; + public static final int settings_clear_bookmark=0x7f0800c8; + public static final int settings_clear_bookmark_summary=0x7f0800c9; + public static final int settings_clear_playlist=0x7f0800ca; + public static final int settings_clear_playlist_summary=0x7f0800cb; + public static final int settings_clear_search_history=0x7f0800cc; + public static final int settings_connection_failure=0x7f0800cd; + public static final int settings_default_albums=0x7f0800ce; + public static final int settings_default_artists=0x7f0800cf; + public static final int settings_default_songs=0x7f0800d0; + public static final int settings_directory_cache_time=0x7f0800d1; + public static final int settings_directory_cache_time_0=0x7f0800d2; + public static final int settings_directory_cache_time_1=0x7f0800d3; + public static final int settings_directory_cache_time_10=0x7f0800d4; + public static final int settings_directory_cache_time_2=0x7f0800d5; + public static final int settings_directory_cache_time_30=0x7f0800d6; + public static final int settings_directory_cache_time_5=0x7f0800d7; + public static final int settings_directory_cache_time_60=0x7f0800d8; + public static final int settings_disc_sort=0x7f0800d9; + public static final int settings_disc_sort_summary=0x7f0800da; + public static final int settings_display_bitrate=0x7f0800db; + public static final int settings_display_bitrate_summary=0x7f0800dc; + public static final int settings_download_transition=0x7f0800dd; + public static final int settings_download_transition_summary=0x7f0800de; + public static final int settings_gapless_playback=0x7f0800df; + public static final int settings_gapless_playback_summary=0x7f0800e0; + public static final int settings_hide_media_summary=0x7f0800e1; public static final int settings_hide_media_title=0x7f0800e2; - public static final int settings_hide_media_toast=0x7f0800e4; - public static final int settings_increment_time=0x7f080128; - public static final int settings_invalid_url=0x7f0800ae; - public static final int settings_invalid_username=0x7f0800af; - public static final int settings_max_albums=0x7f080114; - public static final int settings_max_artists=0x7f080123; - public static final int settings_max_bitrate_112=0x7f0800bb; - public static final int settings_max_bitrate_128=0x7f0800bc; - public static final int settings_max_bitrate_160=0x7f0800bd; - public static final int settings_max_bitrate_192=0x7f0800be; - public static final int settings_max_bitrate_256=0x7f0800bf; - public static final int settings_max_bitrate_32=0x7f0800b7; - public static final int settings_max_bitrate_320=0x7f0800c0; - public static final int settings_max_bitrate_64=0x7f0800b8; - public static final int settings_max_bitrate_80=0x7f0800b9; - public static final int settings_max_bitrate_96=0x7f0800ba; - public static final int settings_max_bitrate_mobile=0x7f0800b6; - public static final int settings_max_bitrate_unlimited=0x7f0800c1; - public static final int settings_max_bitrate_wifi=0x7f0800b5; - public static final int settings_max_songs=0x7f080124; - public static final int settings_media_button_summary=0x7f0800e6; - public static final int settings_media_button_title=0x7f0800e5; - public static final int settings_network_timeout=0x7f0800ea; - public static final int settings_network_timeout_105000=0x7f080104; - public static final int settings_network_timeout_120000=0x7f080105; - public static final int settings_network_timeout_15000=0x7f0800fe; - public static final int settings_network_timeout_30000=0x7f0800ff; - public static final int settings_network_timeout_45000=0x7f080100; - public static final int settings_network_timeout_60000=0x7f080101; - public static final int settings_network_timeout_75000=0x7f080102; - public static final int settings_network_timeout_90000=0x7f080103; - public static final int settings_network_title=0x7f0800b4; - public static final int settings_other_title=0x7f0800db; - public static final int settings_playback_control_title=0x7f0800dd; - public static final int settings_preload=0x7f0800a5; - public static final int settings_preload_1=0x7f0800ca; - public static final int settings_preload_10=0x7f0800ce; - public static final int settings_preload_2=0x7f0800cb; - public static final int settings_preload_3=0x7f0800cc; - public static final int settings_preload_5=0x7f0800cd; - public static final int settings_preload_unlimited=0x7f0800cf; - public static final int settings_screen_lit_summary=0x7f0800e8; - public static final int settings_screen_lit_title=0x7f0800e7; - public static final int settings_scrobble_summary=0x7f0800df; - public static final int settings_scrobble_title=0x7f0800de; - public static final int settings_search_1=0x7f080115; - public static final int settings_search_10=0x7f080118; - public static final int settings_search_100=0x7f080120; - public static final int settings_search_15=0x7f080119; - public static final int settings_search_20=0x7f08011a; - public static final int settings_search_25=0x7f08011b; - public static final int settings_search_250=0x7f080121; - public static final int settings_search_3=0x7f080116; - public static final int settings_search_30=0x7f08011c; - public static final int settings_search_40=0x7f08011d; - public static final int settings_search_5=0x7f080117; - public static final int settings_search_50=0x7f08011e; - public static final int settings_search_500=0x7f080122; - public static final int settings_search_75=0x7f08011f; - public static final int settings_search_history_cleared=0x7f0800da; - public static final int settings_search_title=0x7f0800dc; - public static final int settings_server_add_server=0x7f08009d; - public static final int settings_server_address=0x7f0800a0; - public static final int settings_server_name=0x7f08009c; - public static final int settings_server_number=0x7f08009e; - public static final int settings_server_password=0x7f0800a2; - public static final int settings_server_remove_server=0x7f08009f; - public static final int settings_server_scaling_summary=0x7f0800e1; - public static final int settings_server_scaling_title=0x7f0800e0; - public static final int settings_server_unused=0x7f080098; - public static final int settings_server_unused1=0x7f080099; - public static final int settings_server_unused2=0x7f08009a; - public static final int settings_server_unused3=0x7f08009b; - public static final int settings_server_username=0x7f0800a1; - public static final int settings_servers_title=0x7f080097; - public static final int settings_show_lockscreen_controls=0x7f08010a; - public static final int settings_show_lockscreen_controls_summary=0x7f08010b; - public static final int settings_show_notification=0x7f080106; - public static final int settings_show_notification_always=0x7f080108; - public static final int settings_show_notification_always_summary=0x7f080109; - public static final int settings_show_notification_summary=0x7f080107; - public static final int settings_show_now_playing=0x7f080112; - public static final int settings_show_now_playing_summary=0x7f080113; - public static final int settings_show_track_number=0x7f0800c8; - public static final int settings_show_track_number_summary=0x7f0800c9; - public static final int settings_test_connection_title=0x7f080096; - public static final int settings_testing_connection=0x7f0800aa; - public static final int settings_testing_ok=0x7f0800ab; - public static final int settings_testing_unlicensed=0x7f0800ac; - public static final int settings_theme_dark=0x7f0800b3; - public static final int settings_theme_light=0x7f0800b2; - public static final int settings_theme_title=0x7f0800b1; - public static final int settings_title=0x7f080095; - public static final int settings_use_folder_for_album_artist=0x7f0800c6; - public static final int settings_use_folder_for_album_artist_summary=0x7f0800c7; - public static final int settings_use_id3=0x7f080129; - public static final int settings_use_id3_summary=0x7f08012a; - public static final int settings_use_stream_proxy=0x7f08010c; - public static final int settings_use_stream_proxy_summary=0x7f08010d; - public static final int settings_wifi_required_summary=0x7f0800c3; - public static final int settings_wifi_required_title=0x7f0800c2; - public static final int shuffle_endYear=0x7f08012c; - public static final int shuffle_genre=0x7f08012d; - public static final int shuffle_startYear=0x7f08012b; - public static final int song_details_all=0x7f080091; - public static final int song_details_kbps=0x7f080092; - public static final int updated_playlist=0x7f08008d; - public static final int updated_playlist_error=0x7f08008e; - public static final int util_bytes_format_byte=0x7f080149; - public static final int util_bytes_format_gigabyte=0x7f080146; - public static final int util_bytes_format_kilobyte=0x7f080148; - public static final int util_bytes_format_megabyte=0x7f080147; - public static final int util_no_time=0x7f08014a; - public static final int util_zero_time=0x7f08014b; - public static final int widget_initial_text=0x7f080143; - public static final int widget_sdcard_busy=0x7f080144; - public static final int widget_sdcard_missing=0x7f080145; + public static final int settings_hide_media_toast=0x7f0800e3; + public static final int settings_increment_time=0x7f0800e4; + public static final int settings_invalid_url=0x7f0800e5; + public static final int settings_invalid_username=0x7f0800e6; + public static final int settings_max_albums=0x7f0800e7; + public static final int settings_max_artists=0x7f0800e8; + public static final int settings_max_bitrate_112=0x7f0800e9; + public static final int settings_max_bitrate_128=0x7f0800ea; + public static final int settings_max_bitrate_160=0x7f0800eb; + public static final int settings_max_bitrate_192=0x7f0800ec; + public static final int settings_max_bitrate_256=0x7f0800ed; + public static final int settings_max_bitrate_32=0x7f0800ee; + public static final int settings_max_bitrate_320=0x7f0800ef; + public static final int settings_max_bitrate_64=0x7f0800f0; + public static final int settings_max_bitrate_80=0x7f0800f1; + public static final int settings_max_bitrate_96=0x7f0800f2; + public static final int settings_max_bitrate_mobile=0x7f0800f3; + public static final int settings_max_bitrate_unlimited=0x7f0800f4; + public static final int settings_max_bitrate_wifi=0x7f0800f5; + public static final int settings_max_songs=0x7f0800f6; + public static final int settings_media_button_summary=0x7f0800f7; + public static final int settings_media_button_title=0x7f0800f8; + public static final int settings_network_timeout=0x7f0800f9; + public static final int settings_network_timeout_105000=0x7f0800fa; + public static final int settings_network_timeout_120000=0x7f0800fb; + public static final int settings_network_timeout_15000=0x7f0800fc; + public static final int settings_network_timeout_30000=0x7f0800fd; + public static final int settings_network_timeout_45000=0x7f0800fe; + public static final int settings_network_timeout_60000=0x7f0800ff; + public static final int settings_network_timeout_75000=0x7f080100; + public static final int settings_network_timeout_90000=0x7f080101; + public static final int settings_network_title=0x7f080102; + public static final int settings_other_title=0x7f080103; + public static final int settings_playback_control_title=0x7f080104; + public static final int settings_preload=0x7f080105; + public static final int settings_preload_1=0x7f080106; + public static final int settings_preload_10=0x7f080107; + public static final int settings_preload_2=0x7f080108; + public static final int settings_preload_3=0x7f080109; + public static final int settings_preload_5=0x7f08010a; + public static final int settings_preload_unlimited=0x7f08010b; + public static final int settings_screen_lit_summary=0x7f08010c; + public static final int settings_screen_lit_title=0x7f08010d; + public static final int settings_scrobble_summary=0x7f08010e; + public static final int settings_scrobble_title=0x7f08010f; + public static final int settings_search_1=0x7f080110; + public static final int settings_search_10=0x7f080111; + public static final int settings_search_100=0x7f080112; + public static final int settings_search_15=0x7f080113; + public static final int settings_search_20=0x7f080114; + public static final int settings_search_25=0x7f080115; + public static final int settings_search_250=0x7f080116; + public static final int settings_search_3=0x7f080117; + public static final int settings_search_30=0x7f080118; + public static final int settings_search_40=0x7f080119; + public static final int settings_search_5=0x7f08011a; + public static final int settings_search_50=0x7f08011b; + public static final int settings_search_500=0x7f08011c; + public static final int settings_search_75=0x7f08011d; + public static final int settings_search_history_cleared=0x7f08011e; + public static final int settings_search_title=0x7f08011f; + public static final int settings_server_add_server=0x7f080120; + public static final int settings_server_address=0x7f080121; + public static final int settings_server_name=0x7f080122; + public static final int settings_server_number=0x7f080123; + public static final int settings_server_password=0x7f080124; + public static final int settings_server_remove_server=0x7f080125; + public static final int settings_server_scaling_summary=0x7f080126; + public static final int settings_server_scaling_title=0x7f080127; + public static final int settings_server_unused=0x7f080128; + public static final int settings_server_unused1=0x7f080129; + public static final int settings_server_unused2=0x7f08012a; + public static final int settings_server_unused3=0x7f08012b; + public static final int settings_server_username=0x7f08012c; + public static final int settings_servers_title=0x7f08012d; + public static final int settings_show_lockscreen_controls=0x7f08012e; + public static final int settings_show_lockscreen_controls_summary=0x7f08012f; + public static final int settings_show_notification=0x7f080130; + public static final int settings_show_notification_always=0x7f080131; + public static final int settings_show_notification_always_summary=0x7f080132; + public static final int settings_show_notification_summary=0x7f080133; + public static final int settings_show_now_playing=0x7f080134; + public static final int settings_show_now_playing_summary=0x7f080135; + public static final int settings_show_track_number=0x7f080136; + public static final int settings_show_track_number_summary=0x7f080137; + public static final int settings_test_connection_title=0x7f080138; + public static final int settings_testing_connection=0x7f080139; + public static final int settings_testing_ok=0x7f08013a; + public static final int settings_testing_unlicensed=0x7f08013b; + public static final int settings_theme_dark=0x7f08013c; + public static final int settings_theme_light=0x7f08013d; + public static final int settings_theme_title=0x7f08013e; + public static final int settings_title=0x7f08013f; + public static final int settings_use_folder_for_album_artist=0x7f080140; + public static final int settings_use_folder_for_album_artist_summary=0x7f080141; + public static final int settings_use_id3=0x7f080142; + public static final int settings_use_id3_summary=0x7f080143; + public static final int settings_use_stream_proxy=0x7f080144; + public static final int settings_use_stream_proxy_summary=0x7f080145; + public static final int settings_wifi_required_summary=0x7f080146; + public static final int settings_wifi_required_title=0x7f080147; + public static final int shuffle_endYear=0x7f080148; + public static final int shuffle_genre=0x7f080149; + public static final int shuffle_startYear=0x7f08014a; + public static final int song_details_all=0x7f08014b; + public static final int song_details_kbps=0x7f08014c; + public static final int updated_playlist=0x7f08014d; + public static final int updated_playlist_error=0x7f08014e; + public static final int util_bytes_format_byte=0x7f08014f; + public static final int util_bytes_format_gigabyte=0x7f080150; + public static final int util_bytes_format_kilobyte=0x7f080151; + public static final int util_bytes_format_megabyte=0x7f080152; + public static final int util_no_time=0x7f080153; + public static final int util_zero_time=0x7f080154; + public static final int widget_initial_text=0x7f080155; + public static final int widget_sdcard_busy=0x7f080156; + public static final int widget_sdcard_missing=0x7f080157; } public static final class style { public static final int MenuDrawer=0x7f0a0005; diff --git a/res/drawable-xhdpi/ic_menu_bookmark_dark.png b/res/drawable-xhdpi/ic_menu_bookmark_dark.png new file mode 100644 index 00000000..8fdcd1a2 Binary files /dev/null and b/res/drawable-xhdpi/ic_menu_bookmark_dark.png differ diff --git a/res/drawable-xhdpi/ic_menu_bookmark_light.png b/res/drawable-xhdpi/ic_menu_bookmark_light.png new file mode 100644 index 00000000..c1ec9727 Binary files /dev/null and b/res/drawable-xhdpi/ic_menu_bookmark_light.png differ diff --git a/res/layout-land/download.xml b/res/layout-land/download.xml index c2de8b28..057c575d 100644 --- a/res/layout-land/download.xml +++ b/res/layout-land/download.xml @@ -16,33 +16,32 @@ a:layout_height="fill_parent" a:layout_alignParentRight="true" > + + + + + - - + a:orientation="vertical" + a:paddingBottom="8dip" + a:paddingTop="8dip" > + - - - diff --git a/res/layout-port/download.xml b/res/layout-port/download.xml index 05de9c19..b4b4de7a 100644 --- a/res/layout-port/download.xml +++ b/res/layout-port/download.xml @@ -3,6 +3,8 @@ a:layout_width="fill_parent" a:layout_height="fill_parent" a:orientation="vertical" > + + - - diff --git a/res/layout/download_buttons.xml b/res/layout/download_buttons.xml new file mode 100644 index 00000000..51432dfa --- /dev/null +++ b/res/layout/download_buttons.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/media_buttons.xml b/res/layout/media_buttons.xml index ca784076..f953610e 100644 --- a/res/layout/media_buttons.xml +++ b/res/layout/media_buttons.xml @@ -3,16 +3,8 @@ a:orientation="horizontal" a:layout_width="fill_parent" a:layout_height="wrap_content" - a:paddingBottom="12dip" - a:paddingTop="12dip" > - - + a:paddingBottom="8dip" + a:paddingTop="8dip" > - - \ No newline at end of file diff --git a/res/layout/menu_main.xml b/res/layout/menu_main.xml index 37e1157f..68ef2499 100644 --- a/res/layout/menu_main.xml +++ b/res/layout/menu_main.xml @@ -48,6 +48,14 @@ android:drawableLeft="?attr/playlists" android:text="@string/button_bar.playlists" /> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/song_list_item.xml b/res/layout/song_list_item.xml index 01ddc63d..c2a7c17e 100644 --- a/res/layout/song_list_item.xml +++ b/res/layout/song_list_item.xml @@ -13,76 +13,7 @@ a:gravity="center_vertical" a:paddingLeft="1dip" /> - - - - - - - - - - - - - - - - - - + - - + a:title="@string/download.menu_jukebox_on"/> - - \ No newline at end of file diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 7e59fb19..9ba72d86 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1,289 +1,344 @@ - UltraSonic - OK - Enregistrer - Annuler - Jouer maintenant - Jouer à la suite - Jouer en dernier - Épingler - Détacher - Supprimer - Artistes divers - Genres multiples - Accueil Ultrasonic + + Chargement… + Une erreur réseau est survenue. Veuillez vérifier l\'adresse du serveur ou réessayer plus tard. + Cette application requiert un accès au réseau. Veuillez activer le Wi-Fi ou le réseau mobile. + Ressources introuvables. Veuillez vérifier l\'adresse du serveur. + Réponse incorrecte. Veuillez vérifier l\'adresse du serveur. + Veuillez patienter… + Bookmarks Bibliothèque musicale - Recherche - Playlists - Lecture en cours Clavardage - Bienvenue! - Bienvenue dans UltraSonic ! L\'application n\'est pas configurée. Après avoir configuré votre serveur personnel (disponible à partir de subsonic.org), veuillez accéder aux Paramètres et modifier la configuration pour vous y connecter. - Sélectionner un serveur - Sélectionner le genre - Tous les genres - Lecture aléatoire - Hors-ligne - Paramètres - Artistes - Genres - Albums - Plus récents - Récemment écoutés - Récemment écoutés - Mieux notés - Aléatoire - Favoris - Alphabétique par nom - Alphabétique par artiste - Titres - Favoris - Aléatoire - Genre - Musique - Quitter - Paramètres - Aide - À propos - Recherche - Navigation - Général - Playlists - Aide - Bienvenue dans UltraSonic ! - Retour - Fermer - file:///android_asset/html/en/index.html - Chargement… - Chargement de la vidéo… - Veuillez installer Adobe Flash Player à partir du Google Play Store. - Recherche - Recherche - Cliquer pour rechercher - Aucun résultat, veuillez essayer à nouveau - Artistes - Albums - Titres - Afficher plus - Veuillez patienter… - Bibliothèque musicale - Musique hors-ligne - Aucun titre trouvé - Tout sélectionner - %d Pistes sélectionnées. - %d Pistes non sélectionnés. - Plus - Hors-ligne - Recherche en cours… - Tout jouer - Erreur: Aucune carte SD disponible. - Avis: Aucun réseau disponible. - Serveur sans licence. %d jours d\'essai restant. - Obtenez des téléchargements illimités en faisant un don pour Subsonic. - Maintenant - Plus tard - La période d\'essai est terminée - Aucun artistes trouvés - Aucun genres trouvés - Aucune playlist sur le serveur + Accueil Ultrasonic + Lecture en cours + Playlists + Recherche + Envoyer un message + UltraSonic + Annuler + Comment + Confirm + Supprimer + Download + Details + Genres multiples + Name + OK + Épingler + Jouer en dernier + Jouer à la suite + Jouer maintenant + Play Shuffled + Public + Enregistrer + Show Artist + Détacher + Artistes divers + Do you want to delete %1$s + Bookmark removed. + Bookmark set at %s. Playlist vide - Téléchargement - %s - Mise en mémoire - En jeu aléatoire - Afficher l\'album + La télécommande n\'est pas autorisée. Veuillez activer le mode jukebox dans Utilisateurs > Paramètres à partir de votre serveur Subsonic. + Télécommande désactivée. La musique est jouée sur le téléphone. + La télécommande n\'est pas disponible en mode déconnecté. + Télécommande activée. La musique est jouée sur le serveur + La télécommande n\'est pas pris en charge. Mise à jour du serveur Subsonic requise. + Volume de la télécommande + Égaliseur + Jukebox Off + Jukebox On Paroles Retirer le morceau Tout retirer - Sur l\'écran - Désactiver l\'écran - Mélanger Enregistrer la playlist - Égaliseur - Visualiseur - Jukebox + Désactiver l\'écran + Sur l\'écran + Afficher l\'album + Mélanger Playlist mélangée - Enregistrer la playlist - Saisissez le nom de la playlist : - Enregistrement de la playlist \"%s\"… + Visualiseur + Mise en mémoire + Téléchargement - %s + En jeu aléatoire Playlist enregistrée avec succès ! Échec de l\'enregistrement de la playlist, veuillez réessayer plus tard. - Répétition désactivée + Saisissez le nom de la playlist : + Enregistrement de la playlist \"%s\"… + Enregistrer la playlist Tout répéter + Répétition désactivée Répéter le morceau - Visualiseur activé Visualiseur désactivé - Télécommande activée. La musique est jouée sur le serveur - Télécommande désactivée. La musique est jouée sur le téléphone. - Volume de la télécommande - La télécommande n\'est pas pris en charge. Mise à jour du serveur Subsonic requise. - La télécommande n\'est pas disponible en mode déconnecté. - La télécommande n\'est pas autorisée. Veuillez activer le mode jukebox dans Utilisateurs > Paramètres à partir de votre serveur Subsonic. - %1$s%2$s - %d Kb/s - Aucune parole trouvée + Visualiseur activé + Activé + Égaliseur + Sélection prédéfinie Erreur - Paramètres d\'UltraSonic - Tester la connexion - Serveurs - Inutilisé 1 - Inutilisé 2 - Inutilisé 3 - Nom - Adresse du serveur - Nom d\'utilisateur - Mot de passe - Intervalle de clavardage - Cache des musiques - Titres à pré-charger - Taille du cache + Retour + Fermer + Aide + Chargement… + Bienvenue dans UltraSonic ! + file:///android_asset/html/en/index.html + Jukebox By Default + Aucune parole trouvée + Alphabétique par artiste + Alphabétique par nom + Récemment écoutés + Mieux notés + Plus récents + Aléatoire + Récemment écoutés + Favoris + Albums + Artistes + Genres + Musique + Hors-ligne + Tous les genres + Sélectionner le genre + Sélectionner un serveur + Paramètres + Lecture aléatoire + Genre + Aléatoire + Favoris + Titres + Bienvenue dans UltraSonic ! L\'application n\'est pas configurée. Après avoir configuré votre serveur personnel (disponible à partir de subsonic.org), veuillez accéder aux Paramètres et modifier la configuration pour vous y connecter. + Bienvenue! + À propos + Add To Playlist + Général + Deleted playlist %s + Failed to delete playlist %s + Quitter + Aide + Navigation + Remove From Playlist + Recherche + Paramètres + Bibliothèque musicale + Musique hors-ligne + Une erreur de réseau s\'est produite. Essai %1$d de %2$d. + %d artistes récupérés. + Mauvais nom d\'usager ou mot de passe. + Non autorisé. Vérifiez les permissions de l\'utilisateur dans le serveur Subsonic. + Lecture du serveur. + Lecture du serveur. Terminé! + Versions incompatible. Veuillez mette à jour l\'application Android UltraSonic. + Versions incompatible. Veuillez mette à jour le serveur Subsonic. + Chargement de la vidéo… + Veuillez installer Adobe Flash Player à partir du Google Play Store. + Playlists + Update Information + Updated playlist information for %s + Failed to update playlist information for %s + Failed to grab list of playlists + Veuillez patienter… + Removed %1$s songs from \"%2$s\" + Albums + Artistes + Recherche + Afficher plus + Aucun résultat, veuillez essayer à nouveau + Cliquer pour rechercher + Titres + Recherche + La période d\'essai est terminée + Plus tard + Obtenez des téléchargements illimités en faisant un don pour Subsonic. + Maintenant + Aucun titre trouvé + Plus + %d Pistes sélectionnées. + %d Pistes non sélectionnés. + Avis: Aucun réseau disponible. + Erreur: Aucune carte SD disponible. + Serveur sans licence. %d jours d\'essai restant. + Hors-ligne + Tout jouer + Recherche en cours… + Tout sélectionner + Tous les dossiers + Aucun artistes trouvés + Sélectionner le dossier + Rafraîchir + Aucun genres trouvés + Aucune playlist sur le serveur + Contact du serveur, veuillez patienter. + Apparence + Longueur de la mémoire tampon + Désactivé + 1 seconde + 10 secondes + 12 secondes + 2 minute + 15 secondes + 2 secondes + 20 secondes + 30 secondes + 5 secondes + 1 minute + 8 secondes Emplacement du cache - Emplacement du cache invalide. Utilisation par défaut. - Connexion en cours de test… - Connexion correcte - Connection correcte. Serveur sans licence. + Emplacement du cache invalide. Utilisation par défaut. + Taille du cache + 100 Mo + 1 Go + 10 Go + 200 Mo + 2 Go + 20 Go + 500 Mo + 5 Go + Illimité + Cache des musiques + Intervalle de clavardage + Clear Bookmark + Clear bookmark upon completion of playback of a song + Clear Playlist + Clear the playlist upon completion of playback of all songs + Effacer l\'historique des recherches Connection échouée + Albums par défaut + Artistes par défaut + Musiques par défaut + Directory Cache Time + Disabled + 1 minute + 10 minutes + 2 minutes + 30 minutes + 5 minutes + 1 hour + Sort Songs By Disc + Sort song list by disc number and track number + Afficher bitrate et suffixe du fichier + Ajouter le nom d\'artiste, bitrate et suffixe du fichier + Show Downloads On Play + Transition to download activity when starting playback + Gapless Playback + Enable gapless playback + Masquer les fichiers musicaux et les couvertures d\'album aux autres applis (Gallerie, Musique, etc.) + Masquer aux autres + Prendra effet la prochaine fois qu\'Android recensera les médias disponibles sur l\'appareil. + Skip Interval Veuillez spécifier un URL valide. Veuillez spécifier un nom d\'utilisateur valide (sans espace à la fin). - Apparence - Thème - Clair - Sombre - Réseau - Débit maximal - Wi-Fi - Débit maximal - Mobile - 32 Kb/s - 64 Kb/s - 80 Kb/s - 96 Kb/s + Albums maximum + Artistes maximum 112 Kb/s 128 Kb/s 160 Kb/s 192 Kb/s 256 Kb/s + 32 Kb/s 320 Kb/s + 64 Kb/s + 80 Kb/s + 96 Kb/s + Débit maximal - Mobile Illimité - Wi-Fi en streaming uniquement - Lire uniquement les flux médias si connecté au réseau Wi-Fi - Afficher bitrate et suffixe du fichier - Ajouter le nom d\'artiste, bitrate et suffixe du fichier - Utilisez des dossiers pour les noms d\'artistes - Dossier de niveau supérieur devient le nom de l\'artiste de l\'album - Afficher le numéro du titre - Inclure son numero lors de l\'affichage d\'un titre - 1 morceau - 2 morceaux - 3 morceaux - 5 morceaux - 10 morceaux - Illimité - 100 Mo - 200 Mo - 500 Mo - 1 Go - 2 Go - 5 Go - 10 Go - 20 Go - Illimité - Effacer l\'historique des recherches - Historique des recherches effacé - Autres paramètres - Paramètres de recherche - Paramètres de contrôle de lecture - Scrobble pour Last.fm - N\'oubliez pas de définir votre nom d\'utilisateur et mot de passe Last.fm sur le serveur Subsonic - Album serveur mis à l\'échelle de la cover - Télécharger des images redimensionnées à partir du serveur au lieu des tailles de bases (bande passante réduite) - Masquer aux autres - Masquer les fichiers musicaux et les couvertures d\'album aux autres applis (Gallerie, Musique, etc.) - Prendra effet la prochaine fois qu\'Android recensera les médias disponibles sur l\'appareil. - Boutons média + Débit maximal - Wi-Fi + Titres maximum Répondre au boutons média de l\'appareil, du casque et du Bluetooth - Garder écran allumé - Garder l\'écran allumé pendant le téléchargement permet d\'améliorer la vitesse de téléchargement. - Longueur de la mémoire tampon + Boutons média Délai d\'attente de connexion - Désactivé - 1 seconde - 2 secondes - 5 secondes - 8 secondes - 10 secondes - 12 secondes - 15 secondes - 20 secondes - 30 secondes - 60 secondes + 105 secondes + 120 secondes 15 secondes 30 secondes 45 secondes 60 secondes 75 secondes 90 secondes - 105 secondes - 120 secondes - Notifications - Afficher la notification d\'un nouveau titre en lecture dans la barre d\'état - Toujours afficher les notifications - Toujours afficher la notification d\'un nouveau titre en lecture dans la barre d\'état - Contrôles sur l\'écran de verrouillage - Afficher les contrôles de lecture sur l\'écran de verrouillage - Utiliser un proxy - Support de lecture de flux à travers un proxy (peut provoquer des fritures) - Montrer lecture en cours - Afficher les pistes en cours de lecture dans les autres activités d\'Ultrasonic - Albums maximum + Réseau + Autres paramètres + Paramètres de contrôle de lecture + Titres à pré-charger + 1 morceau + 10 morceaux + 2 morceaux + 3 morceaux + 5 morceaux + Illimité + Garder l\'écran allumé pendant le téléchargement permet d\'améliorer la vitesse de téléchargement. + Garder écran allumé + N\'oubliez pas de définir votre nom d\'utilisateur et mot de passe Last.fm sur le serveur Subsonic + Scrobble pour Last.fm 1 - 3 - 5 10 + 100 15 20 25 + 250 + 3 30 40 + 5 50 - 75 - 100 - 250 500 - Artistes maximum - Titres maximum - Artistes par défaut - Albums par défaut - Musiques par défaut - Une erreur de réseau s\'est produite. Essai %1$d de %2$d. - Veuillez patienter… - Chargement… - Cette application requiert un accès au réseau. Veuillez activer le Wi-Fi ou le réseau mobile. - Une erreur réseau est survenue. Veuillez vérifier l\'adresse du serveur ou réessayer plus tard. - Ressources introuvables. Veuillez vérifier l\'adresse du serveur. - Réponse incorrecte. Veuillez vérifier l\'adresse du serveur. - Contact du serveur, veuillez patienter. - Lecture du serveur. - Lecture du serveur. Terminé! - Versions incompatible. Veuillez mette à jour l\'application Android UltraSonic. - Versions incompatible. Veuillez mette à jour le serveur Subsonic. - Mauvais nom d\'usager ou mot de passe. - Non autorisé. Vérifiez les permissions de l\'utilisateur dans le serveur Subsonic. - %d artistes récupérés. - Rafraîchir - Sélectionner le dossier - Tous les dossiers - Égaliseur - Activé - Sélection prédéfinie - Touchez pour sélectionner un titre - Carte SD non disponible - Aucune carte SD - 0.00 Go - 0.00 Mo - 0 Ko + 75 + Historique des recherches effacé + Paramètres de recherche + Add Server + Adresse du serveur + Nom + Number Of Servers + Mot de passe + Remove Server + Télécharger des images redimensionnées à partir du serveur au lieu des tailles de bases (bande passante réduite) + Album serveur mis à l\'échelle de la cover + Unused + Inutilisé 1 + Inutilisé 2 + Inutilisé 3 + Nom d\'utilisateur + Serveurs + Contrôles sur l\'écran de verrouillage + Afficher les contrôles de lecture sur l\'écran de verrouillage + Notifications + Toujours afficher les notifications + Toujours afficher la notification d\'un nouveau titre en lecture dans la barre d\'état + Afficher la notification d\'un nouveau titre en lecture dans la barre d\'état + Montrer lecture en cours + Afficher les pistes en cours de lecture dans les autres activités d\'Ultrasonic + Afficher le numéro du titre + Inclure son numero lors de l\'affichage d\'un titre + Tester la connexion + Connexion en cours de test… + Connexion correcte + Connection correcte. Serveur sans licence. + Sombre + Clair + Thème + Paramètres d\'UltraSonic + Utilisez des dossiers pour les noms d\'artistes + Dossier de niveau supérieur devient le nom de l\'artiste de l\'album + Browse Using ID3 Tags + Use ID3 tag methods instead of file system based methods + Utiliser un proxy + Support de lecture de flux à travers un proxy (peut provoquer des fritures) + Lire uniquement les flux médias si connecté au réseau Wi-Fi + Wi-Fi en streaming uniquement + End Year: + Genre: + Start Year: + %1$s%2$s + %d Kb/s + Added %1$s songs to \"%2$s\" + Failed to update \"%s\", please try later. 0 o + 0.00 Go + 0 Ko + 0.00 Mo -:-- 0:00 - Envoyer un message + Touchez pour sélectionner un titre + Carte SD non disponible + Aucune carte SD Aucun titre @@ -293,11 +348,15 @@ Un titre sélectionnée pour être épinglé. %d titres sélectionnée pour être épinglé. - + + + 1 song selected to be downloaded. + %d songs selected to be downloaded. + Un titre sélectionné pour être dégoupillé. %d titres sélectionnés pour être dégoupillé. - + Un titre ajouté à la fin de la file d\'attente de lecture. %d titres ajouté à la fin de la file d\'attente de lecture. @@ -305,7 +364,7 @@ Un titre inséré après le titre actuel. %d titres insérés après le titre actuel. - + Un jour restant à la période d\'essai %d jours restant à la période d\'essai diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 478f1a6b..629b6062 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -1,322 +1,344 @@ - UltraSonic - OK - Mentés - Mégse - Lejátszás - Lejátszás (Következőként) - Lejátszás (Utolsóként) - Tárolás - Visszavonás - Törlés - Különféle előadók - Többféle műfaj - Részletek - Véletlen sorrendű lejátszás - Jóváhagyás - Név - Megjegyzés - Nyilvános - Előadó megjelenítése - UltraSonic főoldal + + Betöltés… + Hálózati hiba történt! Kérjük, ellenőrizze a kiszolgáló címét vagy próbálja később! + Az alkalmazás hálózati hozzáférést igényel. Kérjük, kapcsolja be a Wi-Fi-t vagy a mobilhálózatot! + Az erőforrás nem található! Kérjük, ellenőrizze a kiszolgáló címét! + Értelmezhetetlen válasz! Kérjük, ellenőrizze a kiszolgáló címét! + Kérem várjon!… + Könyvjelzők Médiakönyvtár - Keresés Csevegés (Chat) - Lejátszási listák + UltraSonic főoldal Lejátszó - Üdvözlet! - Ü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ő: subsonic.org), húzza jobbra a képernyőt, lépjen be a Beállítások menüpontba, és adja meg csatlakozási adatokat! - Kiszolgáló kiválasztása - Műfaj kiválasztása - Összes műfaj - Véletlen sorrendű - Kapcsolat nélküli - Beállítások - Előadók - Műfajok - Albumok - Utoljára hozzáadott - Utoljára lejátszott - Legtöbbször lejátszott - Legjobbra értékelt - Véletlenszerű - Csillagozott - Albumnév szerint - Előadónév szerint - Dalok - Csillagozott - Véletlenszerű - Műfaj szerint - Zenék - Kilépés - Beállítások - Súgó - Névjegy - Keresés - Navigáció - Általános - Hozzáadás a lejátszási listához - Törlés a lejátszási listáról - Törölt lejátszási lista %s - Lejátszási lista törlése sikertelen %s - Lejátszási listák - Módosítás - Módosított lejátszási lista %s - Lejátszási lista módosítása sikertelen %s - Súgó - Üdvözli az UltraSonic! - Vissza - Bezár - file:///android_asset/html/en/index.html - Betöltés… - Videó betöltése… - Kérjük, telepítse az Adobe Flash Player-t a Play Áruházból! - Keresés - Keresés - Érintse meg a kereséshez - Nincs találat, próbálja újra! - Előadók - Albumok - Dalok - Továbbiak - Kérem várjon!… - Mediakönyvtár - Kapcsolat nélküli médiák - Nem található média! - Összes kijelölése - %d dal kijelölve. - %d dal visszavonva. - Egyéb - Kapcsolat nélküli - Keresés… - Összes lejátszása - Hiba: SD kártya nem áll rendelkezésre! - Figyelem: Hálózat nem áll rendelkezésre! - A kiszolgálónak nincs licence! %d próba nap van hátra! - Korlátlan letöltéshez juthat a Subsonic támogatásával. - Most - Később - A próba időszak lejárt! - Előadók nem találhatók! - Műfajok nem találhatók! - Nincs mentett lejátszási lista a kiszolgálón. + Lejátszási listák + Keresés + Üzenet küldése + UltraSonic + Mégse + Megjegyzés + Jóváhagyás + Törlés + Download + Részletek + Többféle műfaj + Név + OK + Tárolás + Lejátszás (Utolsóként) + Lejátszás (Következőként) + Lejátszás + Véletlen sorrendű lejátszás + Nyilvános + Mentés + Előadó megjelenítése + Visszavonás + Különféle előadók + Biztos, hogy törölni akarja? %1$s + Könyvjelző eltávolítva. + Könyvjelző beállítva %s. A lejátszási lista üres! - Letöltés - %s - Pufferelés - Véletlen sorrendű - Album megjelenítése + A távvezérlés nem áll rendelkezésre. Kérjük, engedélyezze a Jukebox módot a Felhasználók > Beállítások menüpontban, az Ön Subsonic kiszolgálóján! + Távvezérlés kikapcsolása. A zenelejátszás a telefonon történik. + A távvezérlés nem lehetséges kapcsolat nélküli módban! + Távvezérlés bekapcsolása. A zenelejátszás a kiszolgálón történik. + A távvezérlés nem támogatott. Kérjük, frissítse a Subsonic kiszolgálót! + Távoli hangerő + Equalizer + Jukebox ki + Jukebox be Dalszövegek Dal eltávolítása Összes eltávolítása - Kijelző be - Kijelző ki - Véletlen sorrendű Lejátszási lista mentése - Equalizer - Visualizer - Jukebox + Kijelző ki + Kijelző be + Album megjelenítése + Véletlen sorrendű Véletlen sorrendű lejátszás - Lejátszási lista mentése - Lejátszási lista neve: - Lejátszási lista mentése \"%s\"… + Visualizer + Pufferelés + Letöltés - %s + Véletlen sorrendű Lejátszási lista mentése sikeres. Lejátszási lista mentése sikertelen, próbálja később! - Ismétlés ki + Lejátszási lista neve: + Lejátszási lista mentése \"%s\"… + Lejátszási lista mentése Összes ismétlése + Ismétlés ki Dal ismétlése - Visualizer be Visualizer ki - Távvezérlés bekapcsolása. A zenelejátszás a kiszolgálón történik. - Távvezérlés kikapcsolása. A zenelejátszás a telefonon történik. - Távoli hangerő - A távvezérlés nem támogatott. Kérjük, frissítse a Subsonic kiszolgálót! - A távvezérlés nem lehetséges kapcsolat nélküli módban! - A távvezérlés nem áll rendelkezésre. Kérjük, engedélyezze a Jukebox módot a Felhasználók > Beállítások menüpontban, az Ön Subsonic kiszolgálóján! - Nem sikerült elérni a lejátszási lista adatait! - %1$s dal hozzáadva: \"%2$s\" - Frissítés sikertelen: \"%s\", próbálja később! - %1$s eltávolítva: \"%2$s\" - Biztos, hogy törölni akarja? %1$s - %1$s%2$s - %d kbps - Dalszöveg nem található! + Visualizer be + Engedélyezve + Equalizer + Profil kiválasztása Hiba! - UltraSonic beállításai - Kapcsolat tesztelése - Kiszolgálók - Kiszolgáló - Kiszolgáló 1 - Kiszolgáló 2 - Kiszolgáló 3 - Név - Kiszolgáló hozzáadása - Kiszolgálók száma - Kiszolgáló eltávolítása - Kiszolgáló címe - Felhasználónév - Jelszó - Csevegés frissítési időköz - Zene gyorsítótár - Dalok előolvasása - Gyorsítótár mérete + Vissza + Bezár + Súgó + Betöltés… + Üdvözli az UltraSonic! + file:///android_asset/html/en/index.html + Jukebox alapértelmezettként + Dalszöveg nem található! + Előadónév szerint + Albumnév szerint + Legtöbbször lejátszott + Legjobbra értékelt + Utoljára hozzáadott + Véletlenszerű + Utoljára lejátszott + Csillagozott + Albumok + Előadók + Műfajok + Zenék + Kapcsolat nélküli + Összes műfaj + Műfaj kiválasztása + Kiszolgáló kiválasztása + Beállítások + Véletlen sorrendű + Műfaj szerint + Véletlenszerű + Csillagozott + Dalok + Ü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ő: subsonic.org), húzza jobbra a képernyőt, lépjen be a Beállítások menüpontba, és adja meg csatlakozási adatokat! + Üdvözlet! + Névjegy + Hozzáadás a lejátszási listához + Általános + Törölt lejátszási lista %s + Lejátszási lista törlése sikertelen %s + Kilépés + Súgó + Navigáció + Törlés a lejátszási listáról + Keresés + Beállítások + Mediakönyvtár + Kapcsolat nélküli médiák + Hálózati hiba történt! Újrapróbálkozás %1$d - %2$d. + %d előadó található a médiakönyvtárban. + Hibás felhasználónév vagy jelszó! + Nem engedélyezett! Ellenőrizze a felhasználó jogosultságait a Subsonic kiszolgálón! + Olvasás a kiszolgálóról… + Olvasás a kiszolgálóról… Kész! + Nem kompatibilis verzió. Kérjük, frissítse az UltraSonic Android alkalmazást! + Nem kompatibilis verzió. Kérjük, frissítse a Subsonic kiszolgálót! + Videó betöltése… + Kérjük, telepítse az Adobe Flash Player-t a Play Áruházból! + Lejátszási listák + Módosítás + Módosított lejátszási lista %s + Lejátszási lista módosítása sikertelen %s + Nem sikerült elérni a lejátszási lista adatait! + Kérem várjon!… + %1$s eltávolítva: \"%2$s\" + Albumok + Előadók + Keresés + Továbbiak + Nincs találat, próbálja újra! + Érintse meg a kereséshez + Dalok + Keresés + A próba időszak lejárt! + Később + Korlátlan letöltéshez juthat a Subsonic támogatásával. + Most + Nem található média! + Egyéb + %d dal kijelölve. + %d dal visszavonva. + Figyelem: Hálózat nem áll rendelkezésre! + Hiba: SD kártya nem áll rendelkezésre! + A kiszolgálónak nincs licence! %d próba nap van hátra! + Kapcsolat nélküli + Összes lejátszása + Keresés… + Összes kijelölése + Összes mappa + Előadók nem találhatók! + Mappa kiválasztása + Frissítés + Műfajok nem találhatók! + Nincs mentett lejátszási lista a kiszolgálón. + Csatlakozás a kiszolgálóhoz, kérem várjon! + Megjelenítés + Pufferméret + Letiltva + 1 másodperc + 10 másodperc + 12 másodperc + 2 minutes + 15 másodperc + 2 másodperc + 20 másodperc + 30 másodperc + 5 másodperc + 60 másodperc + 8 másodperc Gyorsítótár helye Hibás gyorsítótár hely! Az alapértelmezett használata. - Kapcsolat tesztelése… - Kapcsolat OK! - Kapcsolat OK! A kiszolgálónak nincs licence! + Gyorsítótár mérete + 100 MB + 1 GB + 10 GB + 200 MB + 2 GB + 20 GB + 500 MB + 5 GB + Korlátlan + Zene gyorsítótár + Csevegés frissítési gyakorisága + Könyvjelző törlése + Könyvjelző törlése a dal lejátszása után. + Lejátszási lista törlése + Lejátszási lista törlése az összes dal lejátszása után. + Keresési előzmények törlése Csatlakozási hiba! + Alapértelmezett albumok + Alapértelmezett előadók + Alapértelmezett dalok + Könyvtár gyorsítótárazási idő + Soha + 1 perc + 10 perc + 2 perc + 30 perc + 5 perc + 1 óra + Dalok rendezése albumok szerint + Dalok rendezése albumsorszám és dalsorszám szerint. + Bitráta és fájlkiterjesztés megjelenítése + Bitráta és fájlkiterjesztés megjelenítése az előadónév mellett. + Letöltés megjelenítése + Letöltési aktivitás megjelenítése a lejátszás indításakor. + Egybefüggő lejátszás + Kihagyás (dalszünet) nélküli egybefüggő lejátszás (Gapless). + Zenefájlok elrejtése egyéb alkalmazások elől. + Elrejtés + A következő alkalomtól lép életbe, amikor az Android zenefájlokat keres a telefonon. + Ugrás időintervalluma Adjon meg egy érvényes URL-t! Adjon meg egy érvényes felhasználónevet (szóközt nem tartalmazhat)! - Megjelenítés - Téma - Világos - Sötét - Hálózat - Max. bitráta - Wi-Fi kapcsolat - Max. bitráta - Mobil kapcsolat - 32 Kbps - 64 Kbps - 80 Kbps - 96 Kbps + Max. albumok + Max. előadók 112 Kbps 128 Kbps 160 Kbps 192 Kbps 256 Kbps + 32 Kbps 320 Kbps + 64 Kbps + 80 Kbps + 96 Kbps + Max. bitráta - Mobil kapcsolat Korlátlan - Csak Wi-Fi streaming - Streaming, csak ha rendelkezésre áll Wi-Fi kapcsolat. - Bitráta és fájlkiterjesztés megjelenítése - Bitráta és fájlkiterjesztés megjelenítése az előadónév mellett. - Mappanevek használata az előadók neveként - Feltételezi, hogy a legfelső szintű mappa az elődó neve. - Sorszám megjelenítése - Dalok sorszámának megjelenítése. - 1 dal - 2 dal - 3 dal - 5 dal - 10 dal - Korlátlan - 100 MB - 200 MB - 500 MB - 1 GB - 2 GB - 5 GB - 10 GB - 20 GB - Korlátlan - Keresési előzmények törlése - Keresési előzmények törölve. - Egyéb beállítások - Keresés beállításai - Lejátszás-vezérlés beállításai - Továbbítás Last.fm-re (Scrobbling) - A Last.fm felhasználónevet és jelszót be kell állítani a Subsonic kiszolgálón! - Albumborító átméretezés (Kiszolgáló-oldali) - Teljes méretű helyett átméretezett képek letöltése a kiszolgálóról (sávszélesség-takarékos). - Elrejtés - Zenefájlok elrejtése egyéb alkalmazások elől. - A következő alkalomtól lép életbe, amikor az Android zenefájlokat keres a telefonon. - Média vezérlőgombok + Max. bitráta - Wi-Fi kapcsolat + Max. dalok Telefon irányítása a bluetooth eszköz, vagy a fülhallgató vezérlőgombjaival. - Képernyő ébrentartása - Képernyő ébrentartása a letöltési sebesség növelése érdekében. - Pufferméret + Média vezérlőgombok Hálózati időtúllépés - Rokkant - 1 másodperc - 2 másodperc - 5 másodperc - 8 másodperc - 10 másodperc - 12 másodperc - 15 másodperc - 20 másodperc - 30 másodperc - 60 másodperc + 105 másodperc + 120 másodperc 15 másodperc 30 másodperc 45 másodperc 60 másodperc 75 másodperc 90 másodperc - 105 másodperc - 120 másodperc - Értesítések megjelenítése - Lejátszás jelzése az értesítési sávon. - Állandó kijelzés - Lejátszás jelzése az értesítési sávon, míg a lejátszási lista aktív. - Képernyőzár kezelése - Lejátszó-kezelőpanel megjelenítése a képernyőzáron. - Stream Proxy használata - Média lejátszása stream proxy-n keresztül (akadozások elkerülése érdekében). - Letöltés megjelenítése - Letöltési aktivitás megjelenítése a lejátszás indításakor. - Egybefüggő lejátszás - Kihagyás (dalszünet) nélküli egybefüggő lejátszás (Gapless). - Lejátszó-kezelőpanel - Lejátszó-kezelőpanel megjelenítése minden oldalon. - Max. albumok + Hálózat + Egyéb beállítások + Lejátszás-vezérlés beállításai + Dalok előolvasása + 1 dal + 10 dal + 2 dal + 3 dal + 5 dal + Korlátlan + Képernyő ébrentartása a letöltési sebesség növelése érdekében. + Képernyő ébrentartása + A Last.fm felhasználónevet és jelszót be kell állítani a Subsonic kiszolgálón! + Továbbítás Last.fm-re (Scrobbling) 1 - 3 - 5 10 + 100 15 20 25 + 250 + 3 30 40 + 5 50 - 75 - 100 - 250 500 - Max. előadók - Max. dalok - Alapértelmezett előadók - Alapértelmezett albumok - Alapértelmezett dalok - Ugrás időintervalluma + 75 + Keresési előzmények törölve. + Keresés beállításai + Kiszolgáló hozzáadása + Kiszolgáló címe + Név + Kiszolgálók száma + Jelszó + Kiszolgáló eltávolítása + Teljes méretű helyett átméretezett képek letöltése a kiszolgálóról (sávszélesség-takarékos). + Albumborító átméretezés (Kiszolgáló-oldali) + Kiszolgáló + Kiszolgáló 1 + Kiszolgáló 2 + Kiszolgáló 3 + Felhasználónév + Kiszolgálók + Képernyőzár kezelése + Lejátszó-kezelőpanel megjelenítése a képernyőzáron. + Értesítések megjelenítése + Állandó kijelzés + Lejátszás jelzése az értesítési sávon, míg a lejátszási lista aktív. + Lejátszás jelzése az értesítési sávon. + Lejátszó-kezelőpanel + Lejátszó-kezelőpanel megjelenítése minden oldalon. + Sorszám megjelenítése + Dalok sorszámának megjelenítése. + Kapcsolat tesztelése + Kapcsolat tesztelése… + Kapcsolat OK! + Kapcsolat OK! A kiszolgálónak nincs licence! + Sötét + Világos + Téma + UltraSonic beállításai + Mappanevek használata az előadók neveként + Feltételezi, hogy a legfelső szintű mappa az elődó neve. Böngészés ID3 Tag használatával ID3 Tag módszer használata a fájlredszer alapú mód helyett. - Első év: - Utolsó év: - Műfaj: - Hálózati hiba történt! Újrapróbálkozás %1$d - %2$d. - Kérem várjon!… - Betöltés... - Az alkalmazás hálózati hozzáférést igényel. Kérjük, kapcsolja be a Wi-Fi-t vagy a mobilhálózatot! - Hálózati hiba történt! Kérjük, ellenőrizze a kiszolgáló címét vagy próbálja később! - Az erőforrás nem található! Kérjük, ellenőrizze a kiszolgáló címét! - Értelmezhetetlen válasz! Kérjük, ellenőrizze a kiszolgáló címét! - Csatlakozás a kiszolgálóhoz, kérem várjon! - Olvasás a kiszolgálóról... - Olvasás a kiszolgálóról... Kész! - Nem kompatibilis verzió. Kérjük, frissítse az UltraSonic Android alkalmazást! - Nem kompatibilis verzió. Kérjük, frissítse a Subsonic kiszolgálót! - Hibás felhasználónév vagy jelszó! - Nem engedélyezett! Ellenőrizze a felhasználó jogosultságait a Subsonic kiszolgálón! - %d előadó található a médiakönyvtárban. - Frissítés - Mappa kiválasztása - Összes mappa - Equalizer - Engedélyezve - Profil kiválasztása + Stream Proxy használata + Média lejátszása stream proxy-n keresztül (akadozások elkerülése érdekében). + Streaming, csak ha rendelkezésre áll Wi-Fi kapcsolat. + Csak Wi-Fi streaming + Utolsó év: + Műfaj: + Első év: + %1$s%2$s + %d kbps + %1$s dal hozzáadva: \"%2$s\" + Frissítés sikertelen: \"%s\", próbálja később! + 0 B + 0.00 GB + 0 KB + 0.00 MB + -:-- + 0:00 Érintse meg a zene kiválasztásához Az SD kártya nem elérhető! Nincs SD kártya! - 0.00 GB - 0.00 MB - 0 KB - 0 B - -:-- - 0:00 - Üzenet küldése Nincsenek dalok @@ -327,10 +349,14 @@ 1 dal kijelölve tárolásra. %d dal kijelölve tárolásra. + + 1 dal kijelölve letöltésre. + %d dal kijelölve letöltésre. + 1 dal tárolása visszavonva. %d dal tárolása visszavonva. - + 1 dal hozzáadva a lejátszási sorhoz. %d dal hozzáadva a lejátszási sorhoz. diff --git a/res/values/colors.xml b/res/values/colors.xml index b891d59a..6a1038ff 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -16,5 +16,6 @@ #8033b5e5 #00000000 #B0000000 + #80000000 #FF555555 \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index a57747a1..fd18f3c2 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,343 +1,344 @@ - UltraSonic - OK - Save - Cancel - Play Now - Play Next - Play Last - Pin - Unpin - Download - Delete - Various Artists - Multiple Genres - Details - Play Shuffled - Confirm - Name - Comment - Public - Show Artist - UltraSonic Main + + Loading… + A network error occurred. Please check the server address or try again later. + This program requires network access. Please turn on Wi-Fi or mobile network. + Resource not found. Please check the server address. + Didn\'t understand the reply. Please check the server address. + Please wait… + Bookmarks Media Library - Search Chat - Playlists + UltraSonic Main Now Playing - Welcome! - Welcome to UltraSonic! The app is currently not configured. After you\'ve set up your personal server (available from subsonic.org), please go to Settings and change the configuration to connect to it. - Select Server - Select Genre - All Genres - Shuffle Play - Offline - Settings - Artists - Genres - Albums - Recently Added - Recently Played - Most Played - Top Rated - Random - Starred - By Name - By Artist - Songs - Starred - Random - By Genre - Music - Exit - Settings - Help - About - Search - Navigation - Common - Add To Playlist - Remove From Playlist - Deleted playlist %s - Failed to delete playlist %s - Playlists - Update Information - Updated playlist information for %s - Failed to update playlist information for %s - Help - Welcome to UltraSonic - Back - Close - file:///android_asset/html/en/index.html - Loading… - Loading video… - Please install Adobe Flash Player from Android Market. - Search - Search - Click to search - No matches, please try again - Artists - Albums - Songs - Show More - Please wait… - Media Library - Offline Media - No media found - Select All - %d tracks selected. - %d tracks unselected. - More - Offline - Searching… - Play All - Error: No SD card available. - Warning: No network available. - Server not licensed. %d trial days left. - Get unlimited downloads by donating to Subsonic. - Now - Later - Trial period is over - No artists found - No genres found - No saved playlists on server + Playlists + Search + Send a message + UltraSonic + Cancel + Comment + Confirm + Delete + Download + Details + Multiple Genres + Name + OK + Pin + Play Last + Play Next + Play Now + Play Shuffled + Public + Save + Show Artist + Unpin + Various Artists + Do you want to delete %1$s + Bookmark removed. + Bookmark set at %s. Playlist is empty - Downloading - %s - Buffering - Playing shuffle - Show Album + Remote control is not allowed. Please enable jukebox mode in Users > Settings on your Subsonic server. + Turned off remote control. Music is played on phone. + Remote control is not available in offline mode. + Turned on remote control. Music is played on server. + Remote control is not supported. Please upgrade your Subsonic server. + Remote Volume + Equalizer + Jukebox Off + Jukebox On Lyrics Remove Song Remove All - Screen On - Screen Off - Shuffle Save Playlist - Equalizer - Visualizer - Jukebox + Screen Off + Screen On + Show Album + Shuffle Playlist was shuffled - Save Playlist - Enter the playlist name: - Saving playlist \"%s\"… + Visualizer + Buffering + Downloading - %s + Playing shuffle Playlist was successfully saved. Failed to save playlist, please try later. - Repeat Off + Enter the playlist name: + Saving playlist \"%s\"… + Save Playlist Repeat All + Repeat Off Repeat Song - Turned on visualizer. Turned off visualizer. - Turned on remote control. Music is played on server. - Turned off remote control. Music is played on phone. - Remote Volume - Remote control is not supported. Please upgrade your Subsonic server. - Remote control is not available in offline mode. - Remote control is not allowed. Please enable jukebox mode in Users > Settings on your Subsonic server. - Failed to grab list of playlists - Added %1$s songs to \"%2$s\" - Failed to update \"%s\", please try later. - Removed %1$s songs from \"%2$s\" - Do you want to delete %1$s - %1$s%2$s - %d kbps - No lyrics found + Turned on visualizer. + Enabled + Equalizer + Select Preset Error - UltraSonic Settings - Test Connection - Servers - Unused - Unused 1 - Unused 2 - Unused 3 - Name - Add Server - Number Of Servers - Remove Server - Server Address - Username - Password - Chat Refresh Interval - Music Cache - Songs To Preload - Directory Cache Time - Cache Size + Back + Close + Help + Loading… + Welcome to UltraSonic + file:///android_asset/html/en/index.html + Jukebox By Default + No lyrics found + By Artist + By Name + Most Played + Top Rated + Recently Added + Random + Recently Played + Starred + Albums + Artists + Genres + Music + Offline + All Genres + Select Genre + Select Server + Settings + Shuffle Play + By Genre + Random + Starred + Songs + Welcome to UltraSonic! The app is currently not configured. After you\'ve set up your personal server (available from subsonic.org), please go to Settings and change the configuration to connect to it. + Welcome! + About + Add To Playlist + Common + Deleted playlist %s + Failed to delete playlist %s + Exit + Help + Navigation + Remove From Playlist + Search + Settings + Media Library + Offline Media + A network error occurred. Retrying %1$d of %2$d. + Got %d Artists. + Wrong username or password. + Not authorized. Check user permissions in Subsonic server. + Reading from server. + Reading from server. Done! + Incompatible versions. Please upgrade UltraSonic Android app. + Incompatible versions. Please upgrade Subsonic server. + Loading video… + Please install Adobe Flash Player from Android Market. + Playlists + Update Information + Updated playlist information for %s + Failed to update playlist information for %s + Failed to grab list of playlists + Please wait… + Removed %1$s songs from \"%2$s\" + Albums + Artists + Search + Show More + No matches, please try again + Click to search + Songs + Search + Trial period is over + Later + Get unlimited downloads by donating to Subsonic. + Now + No media found + More + %d tracks selected. + %d tracks unselected. + Warning: No network available. + Error: No SD card available. + Server not licensed. %d trial days left. + Offline + Play All + Searching… + Select All + All Folders + No artists found + Select Folder + Refresh + No genres found + No saved playlists on server + Contacting server, please wait. + Appearance + Buffer Length + Disabled + 1 second + 10 seconds + 12 seconds + 2 minutes + 15 seconds + 2 seconds + 20 seconds + 30 seconds + 5 seconds + 1 minute + 8 seconds Cache Location Invalid cache location. Using default. - Testing connection… - Connection is OK - Connection is OK. Server unlicensed. + Cache Size + 100 MB + 1 GB + 10 GB + 200 MB + 2 GB + 20 GB + 500 MB + 5 GB + Unlimited + Music Cache + Chat Refresh Interval + Clear Bookmark + Clear bookmark upon completion of playback of a song + Clear Playlist + Clear the playlist upon completion of playback of all songs + Clear Search History Connection failure. + Default Albums + Default Artists + Default Songs + Directory Cache Time + Disabled + 1 minute + 10 minutes + 2 minutes + 30 minutes + 5 minutes + 1 hour + Sort Songs By Disc + Sort song list by disc number and track number + Display Bitrate And File Suffix + Append artist name with bitrate and file suffix + Show Downloads On Play + Transition to download activity when starting playback + Gapless Playback + Enable gapless playback + Hide music files from other apps. + Hide From Other + Takes effect next time Android scans your phone for music. + Skip Interval Please specify a valid URL. Please specify a valid username (no trailing spaces). - Appearance - Theme - Light - Dark - Network - Max Bitrate - Wi-Fi - Max Bitrate - Mobile - 32 Kbps - 64 Kbps - 80 Kbps - 96 Kbps + Max Albums + Max Artists 112 Kbps 128 Kbps 160 Kbps 192 Kbps 256 Kbps + 32 Kbps 320 Kbps + 64 Kbps + 80 Kbps + 96 Kbps + Max Bitrate - Mobile Unlimited - Wi-Fi Streaming Only - Only stream media if connected to Wi-Fi - Display Bitrate And File Suffix - Append artist name with bitrate and file suffix - Use Folders For Artist Name - Assume top-level folder is the name of the album artist - Show Track Number - Include track number when displaying a song - 1 song - 2 songs - 3 songs - 5 songs - 10 songs - Unlimited - 100 MB - 200 MB - 500 MB - 1 GB - 2 GB - 5 GB - 10 GB - 20 GB - Unlimited - Clear Search History - Search history cleared - Other Settings - Search Settings - Playback Control Settings - Scrobble To Last.fm - Remember to set up your Last.fm user and password on the Subsonic server - Server-Side Album Art Scaling - Download scaled images from the server instead of full size (saves bandwidth) - Hide From Other - Hide music files from other apps. - Takes effect next time Android scans your phone for music. - Media Buttons + Max Bitrate - Wi-Fi + Max Songs Respond to phone, headset and Bluetooth media buttons - Keep Screen On - Keeping the screen on while downloading improves download speed. - Buffer Length + Media Buttons Network Timeout - Disabled - 1 second - 2 seconds - 5 seconds - 8 seconds - 10 seconds - 12 seconds - 15 seconds - 20 seconds - 30 seconds - 1 minute - 2 minutes - Disabled - Disabled - 1 minute - 2 minutes - 5 minutes - 10 minutes - 30 minutes - 1 hour - 2 seconds - 5 seconds - 8 seconds - 10 seconds - 12 seconds - 15 seconds - 20 seconds - 30 seconds - 1 minute - 2 minutes + 105 seconds + 120 seconds 15 seconds 30 seconds 45 seconds 60 seconds 75 seconds 90 seconds - 105 seconds - 120 seconds - Show Notification - Show now playing notification in the status bar - Always Show Notification - Always show now playing notification when playlist is populated - Show Lock Screen Controls - Show playback controls on the lock screen - Use Stream Proxy - Stream media playback through a proxy (may help stutter) - Show Downloads On Play - Transition to download activity when starting playback - Gapless Playback - Enable gapless playback - Show Now Playing - Show currently playing track in all activities - Max Albums + Network + Other Settings + Playback Control Settings + Songs To Preload + 1 song + 10 songs + 2 songs + 3 songs + 5 songs + Unlimited + Keeping the screen on while downloading improves download speed. + Keep Screen On + Remember to set up your Last.fm user and password on the Subsonic server + Scrobble To Last.fm 1 - 3 - 5 10 + 100 15 20 25 + 250 + 3 30 40 + 5 50 - 75 - 100 - 250 500 - Max Artists - Max Songs - Default Artists - Default Albums - Default Songs - Skip Interval + 75 + Search history cleared + Search Settings + Add Server + Server Address + Name + Number Of Servers + Password + Remove Server + Download scaled images from the server instead of full size (saves bandwidth) + Server-Side Album Art Scaling + Unused + Unused 1 + Unused 2 + Unused 3 + Username + Servers + Show Lock Screen Controls + Show playback controls on the lock screen + Show Notification + Always Show Notification + Always show now playing notification when playlist is populated + Show now playing notification in the status bar + Show Now Playing + Show currently playing track in all activities + Show Track Number + Include track number when displaying a song + Test Connection + Testing connection… + Connection is OK + Connection is OK. Server unlicensed. + Dark + Light + Theme + UltraSonic Settings + Use Folders For Artist Name + Assume top-level folder is the name of the album artist Browse Using ID3 Tags Use ID3 tag methods instead of file system based methods - Start Year: - End Year: - Genre: - A network error occurred. Retrying %1$d of %2$d. - Please wait… - Loading. - This program requires network access. Please turn on Wi-Fi or mobile network. - A network error occurred. Please check the server address or try again later. - Resource not found. Please check the server address. - Didn\'t understand the reply. Please check the server address. - Contacting server, please wait. - Reading from server. - Reading from server. Done! - Incompatible versions. Please upgrade UltraSonic Android app. - Incompatible versions. Please upgrade Subsonic server. - Wrong username or password. - Not authorized. Check user permissions in Subsonic server. - Got %d Artists. - Refresh - Select Folder - All Folders - Equalizer - Enabled - Select preset + Use Stream Proxy + Stream media playback through a proxy (may help stutter) + Only stream media if connected to Wi-Fi + Wi-Fi Streaming Only + End Year: + Genre: + Start Year: + %1$s%2$s + %d kbps + Added %1$s songs to \"%2$s\" + Failed to update \"%s\", please try later. + 0 B + 0.00 GB + 0 KB + 0.00 MB + -:-- + 0:00 Touch to select music SD card unavailable No SD card - 0.00 GB - 0.00 MB - 0 KB - 0 B - -:-- - 0:00 - Send a message No songs @@ -347,7 +348,7 @@ 1 song selected to be pinned. %d songs selected to be pinned. - + 1 song selected to be downloaded. %d songs selected to be downloaded. @@ -355,7 +356,7 @@ 1 song selected to be unpinned. %d songs selected to be unpinned. - + 1 song added to the end of play queue. %d songs added to the end of play queue. diff --git a/res/values/styles.xml b/res/values/styles.xml index c69f6a8a..84b55ab6 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -84,5 +84,7 @@ - + + + diff --git a/res/values/themes.xml b/res/values/themes.xml index 64f3853c..842c68d8 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml @@ -40,6 +40,8 @@ @drawable/media_toggle_list_normal_dark @drawable/ic_menu_chat_dark @drawable/ic_menu_chat_send_dark + @drawable/ic_menu_chat_send_dark + @drawable/ic_menu_bookmark_dark + @drawable/ic_menu_bookmark_light +s \ No newline at end of file diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 71dae221..6a051b13 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -32,6 +32,11 @@ a:key="showTrackNumber" a:summary="@string/settings.show_track_number_summary" a:title="@string/settings.show_track_number" /> + + + . + + Copyright 2009 (C) Sindre Mehus + */ +package com.thejoshwa.ultrasonic.androidapp.activity; + +import android.content.Intent; +import android.net.Uri; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ImageView; +import android.widget.ListView; +import com.thejoshwa.ultrasonic.androidapp.R; +import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory; +import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory.Entry; +import com.thejoshwa.ultrasonic.androidapp.service.DownloadFile; +import com.thejoshwa.ultrasonic.androidapp.service.MusicService; +import com.thejoshwa.ultrasonic.androidapp.service.MusicServiceFactory; +import com.thejoshwa.ultrasonic.androidapp.util.Constants; +import com.thejoshwa.ultrasonic.androidapp.util.FileUtil; +import com.thejoshwa.ultrasonic.androidapp.util.Pair; +import com.thejoshwa.ultrasonic.androidapp.util.TabActivityBackgroundTask; +import com.thejoshwa.ultrasonic.androidapp.util.Util; +import com.thejoshwa.ultrasonic.androidapp.view.EntryAdapter; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import com.handmark.pulltorefresh.library.PullToRefreshBase; +import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; +import com.handmark.pulltorefresh.library.PullToRefreshListView; + +public class BookmarkActivity extends SubsonicTabActivity { + + private PullToRefreshListView refreshAlbumListView; + private ListView albumListView; + private View albumButtons; + private View emptyView; + private ImageView selectButton; + private ImageView playNowButton; + private ImageView playNextButton; + private ImageView playLastButton; + private ImageView pinButton; + private ImageView unpinButton; + private ImageView downloadButton; + private ImageView deleteButton; + private ImageView moreButton; + + /** + * Called when the activity is first created. + */ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.select_album); + + albumButtons = findViewById(R.id.menu_album); + + refreshAlbumListView = (PullToRefreshListView) findViewById(R.id.select_album_entries); + albumListView = refreshAlbumListView.getRefreshableView(); + + refreshAlbumListView.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(PullToRefreshBase refreshView) { + new GetDataTask().execute(); + } + }); + + albumListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); + + albumListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (position >= 0) { + Entry entry = (Entry) parent.getItemAtPosition(position); + + if (entry.isVideo()) { + playVideo(entry); + } else { + enableButtons(); + } + } + } + }); + + selectButton = (ImageView) findViewById(R.id.select_album_select); + playNowButton = (ImageView) findViewById(R.id.select_album_play_now); + playNextButton = (ImageView) findViewById(R.id.select_album_play_next); + playLastButton = (ImageView) findViewById(R.id.select_album_play_last); + pinButton = (ImageView) findViewById(R.id.select_album_pin); + unpinButton = (ImageView) findViewById(R.id.select_album_unpin); + downloadButton = (ImageView) findViewById(R.id.select_album_download); + deleteButton = (ImageView) findViewById(R.id.select_album_delete); + moreButton = (ImageView) findViewById(R.id.select_album_more); + emptyView = findViewById(R.id.select_album_empty); + + selectButton.setVisibility(View.GONE); + playNextButton.setVisibility(View.GONE); + playLastButton.setVisibility(View.GONE); + moreButton.setVisibility(View.GONE); + + playNowButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + playNow(getSelectedSongs(albumListView)); + } + }); + + selectButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + selectAllOrNone(); + } + }); + pinButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + downloadBackground(true); + selectAll(false, false); + } + }); + unpinButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + unpin(); + selectAll(false, false); + } + }); + downloadButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + downloadBackground(false); + selectAll(false, false); + } + }); + deleteButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + delete(); + selectAll(false, false); + } + }); + + registerForContextMenu(albumListView); + + enableButtons(); + + View browseMenuItem = findViewById(R.id.menu_bookmarks); + menuDrawer.setActiveView(browseMenuItem); + + getBookmarks(); + + } + + private void getBookmarks() { + getActionBar().setSubtitle(R.string.button_bar_bookmarks); + + new LoadTask() { + @Override + protected MusicDirectory load(MusicService service) throws Exception { + return Util.getSongsFromBookmarks(service.getBookmarks(BookmarkActivity.this, this)); + } + }.execute(); + } + + private void playNow(List songs) { + if(getSelectedSongs(albumListView).size() > 0) { + int position = songs.get(0).getBookmarkPosition(); + getDownloadService().restore(songs, 0, position, true, true); + selectAll(false, false); + } + } + + private List getSelectedSongs(ListView albumListView) { + List songs = new ArrayList(10); + + if (albumListView != null) { + int count = albumListView.getCount(); + for (int i = 0; i < count; i++) { + if (albumListView.isItemChecked(i)) { + songs.add((MusicDirectory.Entry) albumListView.getItemAtPosition(i)); + } + } + } + + return songs; + } + + private void refresh() { + finish(); + Intent intent = getIntent(); + intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true); + Util.startActivityWithoutTransition(this, intent); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + menuDrawer.toggleMenu(); + return true; + } + + return false; + } + + private void selectAllOrNone() { + boolean someUnselected = false; + int count = albumListView.getCount(); + for (int i = 0; i < count; i++) { + if (!albumListView.isItemChecked(i) && albumListView.getItemAtPosition(i) instanceof MusicDirectory.Entry) { + someUnselected = true; + break; + } + } + selectAll(someUnselected, true); + } + + private void selectAll(boolean selected, boolean toast) { + int count = albumListView.getCount(); + int selectedCount = 0; + for (int i = 0; i < count; i++) { + MusicDirectory.Entry entry = (MusicDirectory.Entry) albumListView.getItemAtPosition(i); + if (entry != null && !entry.isDirectory() && !entry.isVideo()) { + albumListView.setItemChecked(i, selected); + selectedCount++; + } + } + + // Display toast: N tracks selected / N tracks unselected + if (toast) { + int toastResId = selected ? R.string.select_album_n_selected : R.string.select_album_n_unselected; + Util.toast(this, getString(toastResId, selectedCount)); + } + + enableButtons(); + } + + private void enableButtons() { + if (getDownloadService() == null) { + return; + } + + List selection = getSelectedSongs(albumListView); + boolean enabled = !selection.isEmpty(); + boolean unpinEnabled = false; + boolean deleteEnabled = false; + + int pinnedCount = 0; + + for (MusicDirectory.Entry song : selection) { + DownloadFile downloadFile = getDownloadService().forSong(song); + if (downloadFile.isWorkDone()) { + deleteEnabled = true; + } + + if (downloadFile.isSaved()) { + pinnedCount++; + unpinEnabled = true; + } + } + + playNowButton.setVisibility(enabled && deleteEnabled ? View.VISIBLE : View.GONE); + pinButton.setVisibility((enabled && !Util.isOffline(this) && selection.size() > pinnedCount) ? View.VISIBLE : View.GONE); + unpinButton.setVisibility(enabled && unpinEnabled ? View.VISIBLE : View.GONE); + downloadButton.setVisibility(enabled && !deleteEnabled && !Util.isOffline(this) ? View.VISIBLE : View.GONE); + deleteButton.setVisibility(enabled && deleteEnabled ? View.VISIBLE : View.GONE); + } + + private void downloadBackground(final boolean save) { + List songs = getSelectedSongs(albumListView); + if(songs.isEmpty()) { + selectAll(true, false); + songs = getSelectedSongs(albumListView); + } + downloadBackground(save, songs); + } + + private void downloadBackground(final boolean save, final List songs) { + if (getDownloadService() == null) { + return; + } + + Runnable onValid = new Runnable() { + @Override + public void run() { + warnIfNetworkOrStorageUnavailable(); + getDownloadService().downloadBackground(songs, save); + + if (save) { + Util.toast(BookmarkActivity.this, getResources().getQuantityString(R.plurals.select_album_n_songs_pinned, songs.size(), songs.size())); + } else { + Util.toast(BookmarkActivity.this, getResources().getQuantityString(R.plurals.select_album_n_songs_downloaded, songs.size(), songs.size())); + } + } + }; + + checkLicenseAndTrialPeriod(onValid); + } + + private void delete() { + List songs = getSelectedSongs(albumListView); + if(songs.isEmpty()) { + selectAll(true, false); + songs = getSelectedSongs(albumListView); + } + if (getDownloadService() != null) { + getDownloadService().delete(songs); + } + } + + private void unpin() { + if (getDownloadService() != null) { + List songs = getSelectedSongs(albumListView); + Util.toast(BookmarkActivity.this, getResources().getQuantityString(R.plurals.select_album_n_songs_unpinned, songs.size(), songs.size())); + getDownloadService().unpin(songs); + } + } + + private void playVideo(MusicDirectory.Entry entry) { + int maxBitrate = Util.getMaxVideoBitrate(this); + + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(MusicServiceFactory.getMusicService(this).getVideoUrl(maxBitrate, this, entry.getId()))); + + startActivity(intent); + } + + public void deleteRecursively(MusicDirectory.Entry album) { + File dir = FileUtil.getAlbumDirectory(this, album); + Util.recursiveDelete(dir); + if(Util.isOffline(this)) { + refresh(); + } + } + + private abstract class LoadTask extends TabActivityBackgroundTask> { + + public LoadTask() { + super(BookmarkActivity.this, true); + } + + protected abstract MusicDirectory load(MusicService service) throws Exception; + + @Override + protected Pair doInBackground() throws Throwable { + MusicService musicService = MusicServiceFactory.getMusicService(BookmarkActivity.this); + MusicDirectory dir = load(musicService); + boolean valid = musicService.isLicenseValid(BookmarkActivity.this, this); + return new Pair(dir, valid); + } + + @Override + protected void done(Pair result) { + MusicDirectory musicDirectory = result.getFirst(); + List entries = musicDirectory.getChildren(); + + int songCount = 0; + for (MusicDirectory.Entry entry : entries) { + if (!entry.isDirectory()) { + songCount++; + } + } + + final int listSize = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0); + + if (songCount > 0) { + pinButton.setVisibility(View.VISIBLE); + unpinButton.setVisibility(View.VISIBLE); + downloadButton.setVisibility(View.VISIBLE); + deleteButton.setVisibility(View.VISIBLE); + playNowButton.setVisibility(View.VISIBLE); + } else { + pinButton.setVisibility(View.GONE); + unpinButton.setVisibility(View.GONE); + downloadButton.setVisibility(View.GONE); + deleteButton.setVisibility(View.GONE); + playNowButton.setVisibility(View.GONE); + + if (listSize == 0 || result.getFirst().getChildren().size() < listSize) { + albumButtons.setVisibility(View.GONE); + } + } + + enableButtons(); + + emptyView.setVisibility(entries.isEmpty() ? View.VISIBLE : View.GONE); + + albumListView.setAdapter(new EntryAdapter(BookmarkActivity.this, getImageLoader(), entries, true)); + licenseValid = result.getSecond(); + } + } + + private class GetDataTask extends AsyncTask { + @Override + protected void onPostExecute(String[] result) { + refreshAlbumListView.onRefreshComplete(); + super.onPostExecute(result); + } + + @Override + protected String[] doInBackground(Void... params) { + refresh(); + return null; + } + } +} diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java index 16018161..394cae65 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java @@ -32,7 +32,6 @@ import android.view.animation.AnimationUtils; import android.widget.*; import com.thejoshwa.ultrasonic.androidapp.R; -import com.thejoshwa.ultrasonic.androidapp.domain.Bookmark; import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory; import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory.Entry; import com.thejoshwa.ultrasonic.androidapp.domain.PlayerState; @@ -75,13 +74,15 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi private TextView downloadTrackTextView; private TextView downloadTotalDurationTextView; private TextView durationTextView; - private TextView statusTextView; private static SeekBar progressBar; private View pauseButton; private View stopButton; private View startButton; private ImageView repeatButton; - private ImageView starImageView; + private ImageButton starImageButton; + private ImageButton bookmarkImageButton; + private ImageButton removeAllImageButton; + private ImageButton saveImageButton; private ScheduledExecutorService executorService; private DownloadFile currentPlaying; private Entry currentSong; @@ -94,7 +95,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi private boolean visualizerAvailable; private boolean equalizerAvailable; private SilentBackgroundTask onProgressChangedTask; - //private volatile List bookmarks; + LinearLayout visualizerViewLayout; /** * Called when the activity is first created. @@ -120,7 +121,6 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi downloadTrackTextView = (TextView) findViewById(R.id.download_track); downloadTotalDurationTextView = (TextView) findViewById(R.id.download_total_duration); durationTextView = (TextView) findViewById(R.id.download_duration); - statusTextView = (TextView) findViewById(R.id.download_status); progressBar = (SeekBar) findViewById(R.id.download_progress_bar); playlistView = (ListView) findViewById(R.id.download_list); final AutoRepeatButton previousButton = (AutoRepeatButton) findViewById(R.id.download_previous); @@ -130,10 +130,13 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi startButton = findViewById(R.id.download_start); final View shuffleButton = findViewById(R.id.download_shuffle); repeatButton = (ImageView) findViewById(R.id.download_repeat); - starImageView = (ImageView) findViewById(R.id.download_star); - final LinearLayout visualizerViewLayout = (LinearLayout) findViewById(R.id.download_visualizer_view_layout); + starImageButton = (ImageButton) findViewById(R.id.download_star); + bookmarkImageButton = (ImageButton) findViewById(R.id.download_bookmark); + removeAllImageButton = (ImageButton) findViewById(R.id.download_remove_all); + saveImageButton = (ImageButton) findViewById(R.id.download_save_playlist); + visualizerViewLayout = (LinearLayout) findViewById(R.id.download_visualizer_view_layout); - final View toggleListButton = findViewById(R.id.download_toggle_list); + final ImageButton toggleListButton = (ImageButton) findViewById(R.id.download_toggle_list); albumArtImageView.setOnClickListener(new View.OnClickListener() { @Override @@ -360,10 +363,11 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi } if (Util.isOffline(this)) { - starImageView.setVisibility(View.GONE); + starImageButton.setVisibility(View.GONE); + bookmarkImageButton.setVisibility(View.GONE); } - starImageView.setOnClickListener(new View.OnClickListener() { + starImageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { if (currentSong == null) { @@ -374,10 +378,10 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi final String id = currentSong.getId(); if (isStarred) { - starImageView.setImageDrawable(Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_hollow)); + starImageButton.setImageDrawable(Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_hollow)); currentSong.setStarred(false); } else { - starImageView.setImageDrawable(Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_full)); + starImageButton.setImageDrawable(Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_full)); currentSong.setStarred(true); } @@ -398,19 +402,83 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi }).start(); } }); + + bookmarkImageButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View view) { + if (currentSong == null) { + return; + } -// TODO: Add bookmark support -// new Thread(new Runnable() { -// public void run() { -// final MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this); -// -// try { -// bookmarks = musicService.getBookmarks(DownloadActivity.this, null); -// } catch (Exception e) { -// Log.e(TAG, e.getMessage(), e); -// } -// } -// }).start(); + final String id = currentSong.getId(); + final int playerPosition = getDownloadService() + .getPlayerPosition(); + + currentSong.setBookmarkPosition(playerPosition); + + String bookmarkTime = Util.formatTotalDuration(playerPosition, true); + + new Thread(new Runnable() { + public void run() { + final MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this); + + try { + musicService.createBookmark(id, playerPosition, DownloadActivity.this, null); + } catch (Exception e) { + Log.e(TAG, e.getMessage(), e); + } + } + }).start(); + + String msg = getResources().getString(R.string.download_bookmark_set_at_position, bookmarkTime); + + Util.toast(DownloadActivity.this, msg); + } + }); + + bookmarkImageButton.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(final View view) { + if (currentSong == null) { + return true; + } + + final String id = currentSong.getId(); + currentSong.setBookmarkPosition(0); + + new Thread(new Runnable() { + public void run() { + final MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this); + + try { + musicService.deleteBookmark(id, DownloadActivity.this, null); + } catch (Exception e) { + Log.e(TAG, e.getMessage(), e); + } + } + }).start(); + + Util.toast(DownloadActivity.this, R.string.download_bookmark_removed); + + return true; + } + }); + + removeAllImageButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View view) { + getDownloadService().setShufflePlayEnabled(false); + getDownloadService().clear(); + onDownloadListChanged(); + } + }); + + saveImageButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View view) { + showDialog(DIALOG_SAVE_PLAYLIST); + } + }); visualizerAvailable = downloadService != null && downloadService.getVisualizerController() != null; equalizerAvailable = downloadService != null && downloadService.getEqualizerController() != null; @@ -422,6 +490,12 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi visualizerView = new VisualizerView(this); visualizerViewLayout.addView(visualizerView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); + if (!visualizerView.isActive()) { + visualizerViewLayout.setVisibility(View.GONE); + } else { + visualizerViewLayout.setVisibility(View.VISIBLE); + } + visualizerView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(final View view, final MotionEvent motionEvent) { @@ -430,6 +504,8 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi return true; } }); + } else { + visualizerViewLayout.setVisibility(View.GONE); } } @@ -437,6 +513,12 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi protected void onResume() { super.onResume(); + final DownloadService downloadService = getDownloadService(); + + if (downloadService == null || downloadService.getCurrentPlaying() == null) { + playlistFlipper.setDisplayedChild(1); + } + final Handler handler = new Handler(); final Runnable runnable = new Runnable() { @Override @@ -449,19 +531,10 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi }); } }; - - executorService = Executors.newSingleThreadScheduledExecutor(); - executorService.scheduleWithFixedDelay(runnable, 0L, 1000L, TimeUnit.MILLISECONDS); - - final DownloadService downloadService = getDownloadService(); - if (downloadService == null || downloadService.getCurrentPlaying() == null) { - playlistFlipper.setDisplayedChild(1); - } - - onDownloadListChanged(); - onCurrentChanged(); - onSliderProgressChanged(); + executorService = Executors.newSingleThreadScheduledExecutor(); + executorService.scheduleWithFixedDelay(runnable, 0L, 500L, TimeUnit.MILLISECONDS); + if (downloadService != null && downloadService.getKeepScreenOn()) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } else { @@ -471,6 +544,10 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi if (visualizerView != null) { visualizerView.setActive(downloadService != null && downloadService.getShowVisualization()); } + + if (Util.isOffline(this)) { + saveImageButton.setVisibility(View.GONE); + } } // Scroll to current playing/downloading. @@ -478,20 +555,26 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi if (getDownloadService() == null) { return; } - - for (int i = 0; i < playlistView.getAdapter().getCount(); i++) { - if (currentPlaying == playlistView.getItemAtPosition(i)) { - playlistView.smoothScrollToPositionFromTop(i, 40); - return; - } - } - final DownloadFile currentDownloading = getDownloadService().getCurrentDownloading(); - for (int i = 0; i < playlistView.getAdapter().getCount(); i++) { - if (currentDownloading == playlistView.getItemAtPosition(i)) { - playlistView.smoothScrollToPositionFromTop(i, 40); - return; - } + ListAdapter adapter = playlistView.getAdapter(); + + if (adapter != null) { + int count = adapter.getCount(); + + for (int i = 0; i < count; i++) { + if (currentPlaying == playlistView.getItemAtPosition(i)) { + playlistView.smoothScrollToPositionFromTop(i, 40); + return; + } + } + + final DownloadFile currentDownloading = getDownloadService().getCurrentDownloading(); + for (int i = 0; i < count; i++) { + if (currentDownloading == playlistView.getItemAtPosition(i)) { + playlistView.smoothScrollToPositionFromTop(i, 40); + return; + } + } } } @@ -499,6 +582,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi protected void onPause() { super.onPause(); executorService.shutdown(); + if (visualizerView != null) { visualizerView.setActive(false); } @@ -560,14 +644,10 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi @Override public boolean onPrepareOptionsMenu(final Menu menu) { - final MenuItem savePlaylist = menu.findItem(R.id.menu_save_playlist); - final boolean savePlaylistEnabled = !Util.isOffline(this); - if (savePlaylist != null) { - savePlaylist.setEnabled(savePlaylistEnabled); - savePlaylist.setVisible(savePlaylistEnabled); - } - + super.onPrepareOptionsMenu(menu); + final MenuItem screenOption = menu.findItem(R.id.menu_screen_on_off); + final MenuItem jukeboxOption = menu.findItem(R.id.download_jukebox); final MenuItem equalizerMenuItem = menu.findItem(R.id.download_equalizer); final MenuItem visualizerMenuItem = menu.findItem(R.id.download_visualizer); @@ -581,11 +661,10 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi visualizerMenuItem.setVisible(visualizerAvailable); } - final DownloadService downloadService = getDownloadService(); if (downloadService != null) { - if (getDownloadService().getKeepScreenOn()) { + if (downloadService.getKeepScreenOn()) { if (screenOption != null) { screenOption.setTitle(R.string.download_menu_screen_off); } @@ -594,8 +673,19 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi screenOption.setTitle(R.string.download_menu_screen_on); } } + + if (downloadService.isJukeboxEnabled()) { + if (jukeboxOption != null) { + jukeboxOption.setTitle(R.string.download_menu_jukebox_off); + } + } else { + if (jukeboxOption != null) { + jukeboxOption.setTitle(R.string.download_menu_jukebox_on); + } + } } - return super.onPrepareOptionsMenu(menu); + + return true; } @Override @@ -619,7 +709,6 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi } if (Util.isOffline(this)) { menu.findItem(R.id.menu_lyrics).setVisible(false); - menu.findItem(R.id.menu_save_playlist).setVisible(false); } } } @@ -660,11 +749,6 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi getDownloadService().remove(song); onDownloadListChanged(); return true; - case R.id.menu_remove_all: - getDownloadService().setShufflePlayEnabled(false); - getDownloadService().clear(); - onDownloadListChanged(); - return true; case R.id.menu_screen_on_off: if (getDownloadService().getKeepScreenOn()) { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -678,15 +762,19 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi getDownloadService().shuffle(); Util.toast(this, R.string.download_menu_shuffle_notification); return true; - case R.id.menu_save_playlist: - showDialog(DIALOG_SAVE_PLAYLIST); - return true; case R.id.download_equalizer: startActivity(new Intent(DownloadActivity.this, EqualizerActivity.class)); return true; case R.id.download_visualizer: final boolean active = !visualizerView.isActive(); visualizerView.setActive(active); + + if (!visualizerView.isActive()) { + visualizerViewLayout.setVisibility(View.GONE); + } else { + visualizerViewLayout.setVisibility(View.VISIBLE); + } + getDownloadService().setShowVisualization(visualizerView.isActive()); Util.toast(DownloadActivity.this, active ? R.string.download_visualizer_on : R.string.download_visualizer_off); return true; @@ -745,7 +833,6 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi } private void toggleFullScreenAlbumArt() { - scrollToCurrent(); if (playlistFlipper.getDisplayedChild() == 1) { playlistFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_down_in)); playlistFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_down_out)); @@ -755,6 +842,8 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi playlistFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_up_out)); playlistFlipper.setDisplayedChild(1); } + + scrollToCurrent(); } private void start() { @@ -827,7 +916,7 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi if (currentPlaying != null) { currentSong = currentPlaying.getSong(); final Drawable starDrawable = currentSong.getStarred() ? Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_full) : Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_hollow); - starImageView.setImageDrawable(starDrawable); + starImageButton.setImageDrawable(starDrawable); songTitleTextView.setText(currentSong.getTitle()); albumTextView.setText(currentSong.getAlbum()); artistTextView.setText(currentSong.getArtist()); @@ -888,27 +977,25 @@ public class DownloadActivity extends SubsonicTabActivity implements OnGestureLi switch (playerState) { case DOWNLOADING: final long bytes = currentPlaying != null ? currentPlaying.getPartialFile().length() : 0; - statusTextView.setText(getResources().getString( + getActionBar().setSubtitle(getResources().getString( R.string.download_playerstate_downloading, Util.formatLocalizedBytes(bytes, DownloadActivity.this))); break; case PREPARING: - statusTextView - .setText(R.string.download_playerstate_buffering); + getActionBar().setSubtitle(R.string.download_playerstate_buffering); break; case STARTED: final DownloadService downloadService = getDownloadService(); if (downloadService != null && downloadService.isShufflePlayEnabled()) { - statusTextView - .setText(R.string.download_playerstate_playing_shuffle); + getActionBar().setSubtitle(R.string.download_playerstate_playing_shuffle); } else { - statusTextView.setText(null); + getActionBar().setSubtitle(null); } break; default: - statusTextView.setText(null); + getActionBar().setSubtitle(null); break; case IDLE: break; diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java index 943d5d1e..64f09344 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java @@ -59,8 +59,8 @@ public final class HelpActivity extends Activity implements OnClickListener { public MenuDrawer menuDrawer; private int activePosition = 1; private int menuActiveViewId; - View searchMenuItem = null; - View playlistsMenuItem = null; + View chatMenuItem = null; + View bookmarksMenuItem = null; View menuMain = null; @Override @@ -79,14 +79,15 @@ public final class HelpActivity extends Activity implements OnClickListener { menuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_WINDOW, Position.LEFT); menuDrawer.setMenuView(R.layout.menu_main); - searchMenuItem = findViewById(R.id.menu_search); - playlistsMenuItem = findViewById(R.id.menu_playlists); + chatMenuItem = findViewById(R.id.menu_chat); + bookmarksMenuItem = findViewById(R.id.menu_bookmarks); findViewById(R.id.menu_home).setOnClickListener(this); findViewById(R.id.menu_browse).setOnClickListener(this); - searchMenuItem.setOnClickListener(this); - playlistsMenuItem.setOnClickListener(this); - findViewById(R.id.menu_chat).setOnClickListener(this); + findViewById(R.id.menu_search).setOnClickListener(this); + findViewById(R.id.menu_playlists).setOnClickListener(this); + chatMenuItem.setOnClickListener(this); + bookmarksMenuItem.setOnClickListener(this); findViewById(R.id.menu_now_playing).setOnClickListener(this); findViewById(R.id.menu_settings).setOnClickListener(this); findViewById(R.id.menu_about).setOnClickListener(this); @@ -132,6 +133,15 @@ public final class HelpActivity extends Activity implements OnClickListener { } }); } + + @Override + protected void onPostCreate(Bundle bundle) { + super.onPostCreate(bundle); + + int visibility = Util.isOffline(this) ? View.GONE : View.VISIBLE; + chatMenuItem.setVisibility(visibility); + bookmarksMenuItem.setVisibility(visibility); + } @Override public void onResume() { @@ -229,6 +239,9 @@ public final class HelpActivity extends Activity implements OnClickListener { case R.id.menu_chat: Util.startActivityWithoutTransition(this, ChatActivity.class); break; + case R.id.menu_bookmarks: + Util.startActivityWithoutTransition(this, BookmarkActivity.class); + break; case R.id.menu_now_playing: Util.startActivityWithoutTransition(this, DownloadActivity.class); break; diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java index a9ed9d52..6490c918 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java @@ -190,6 +190,7 @@ public class MainActivity extends SubsonicTabActivity { private void loadSettings() { PreferenceManager.setDefaultValues(this, R.xml.settings, false); final SharedPreferences preferences = Util.getPreferences(this); + if (!preferences.contains(Constants.PREFERENCES_KEY_CACHE_LOCATION)) { final SharedPreferences.Editor editor = preferences.edit(); editor.putString(Constants.PREFERENCES_KEY_CACHE_LOCATION, FileUtil.getDefaultMusicDirectory().getPath()); @@ -359,12 +360,18 @@ public class MainActivity extends SubsonicTabActivity { } private void setActiveServer(final int instance) { + final DownloadService service = getDownloadService(); + if (Util.getActiveServer(this) != instance) { - final DownloadService service = getDownloadService(); if (service != null) { service.clearIncomplete(); } - Util.setActiveServer(this, instance); + } + + Util.setActiveServer(this, instance); + + if (service != null) { + service.setJukeboxEnabled(Util.getJukeboxEnabled(this, instance)); } } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java index 83d133b6..b86a223e 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java @@ -407,7 +407,7 @@ public class SearchActivity extends SubsonicTabActivity { downloadService.clear(); } - downloadService.download(Arrays.asList(song), save, false, playNext, false); + downloadService.download(Arrays.asList(song), save, false, playNext, false, false); if (autoplay) { downloadService.play(downloadService.size() - 1); diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java index 209c9052..f95cb575 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java @@ -47,12 +47,12 @@ import com.thejoshwa.ultrasonic.androidapp.view.EntryAdapter; import java.io.File; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Set; -import java.util.concurrent.TimeUnit; - import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshListView; @@ -310,7 +310,6 @@ public class SelectAlbumActivity extends SubsonicTabActivity { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; MusicDirectory.Entry entry = (MusicDirectory.Entry) albumListView.getItemAtPosition(info.position); - if (entry.isDirectory()) { MenuInflater inflater = getMenuInflater(); @@ -451,7 +450,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity { @Override protected MusicDirectory load(MusicService service) throws Exception { if (Util.getShouldUseId3Tags(SelectAlbumActivity.this)) { - return Util.getSongsFromSearchResult(service.getStarred(SelectAlbumActivity.this, this)); + return Util.getSongsFromSearchResult(service.getStarred2(SelectAlbumActivity.this, this)); } else { return Util.getSongsFromSearchResult(service.getStarred(SelectAlbumActivity.this, this)); } @@ -582,7 +581,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity { for (MusicDirectory.Entry song : selection) { DownloadFile downloadFile = getDownloadService().forSong(song); - if (downloadFile.isCompleteFileAvailable()) { + if (downloadFile.isWorkDone()) { deleteEnabled = true; } @@ -603,10 +602,12 @@ public class SelectAlbumActivity extends SubsonicTabActivity { private void downloadBackground(final boolean save) { List songs = getSelectedSongs(albumListView); + if(songs.isEmpty()) { selectAll(true, false); songs = getSelectedSongs(albumListView); } + downloadBackground(save, songs); } @@ -688,6 +689,11 @@ public class SelectAlbumActivity extends SubsonicTabActivity { protected void done(Pair result) { MusicDirectory musicDirectory = result.getFirst(); List entries = musicDirectory.getChildren(); + + if (Util.getShouldSortByDisc(SelectAlbumActivity.this)){ + Collections.sort(entries, new EntryByDiscAndTrackComparer()); + } + String directoryName = musicDirectory.getName(); int songCount = 0; @@ -740,7 +746,7 @@ public class SelectAlbumActivity extends SubsonicTabActivity { deleteButton.setVisibility(View.GONE); selectButton.setVisibility(View.GONE); playNowButton.setVisibility(View.GONE); - playNextButton.setVisibility(View.VISIBLE); + playNextButton.setVisibility(View.GONE); playLastButton.setVisibility(View.GONE); if (listSize == 0 || result.getFirst().getChildren().size() < listSize) { @@ -859,4 +865,23 @@ public class SelectAlbumActivity extends SubsonicTabActivity { return null; } } + + public class EntryByDiscAndTrackComparer implements Comparator { + @Override + public int compare(MusicDirectory.Entry x, MusicDirectory.Entry y) { + Integer discX = x.getDiscNumber(); + Integer discY = y.getDiscNumber(); + Integer trackX = x.getTrack(); + Integer trackY = y.getTrack(); + + int startComparison = compare(discX == null ? 0 : discX, discY == null ? 0 : discY); + return startComparison != 0 ? startComparison : compare(trackX == null ? 0 : trackX, trackY == null ? 0 : trackY); + } + + private int compare(long a, long b) { + return a < b ? -1 + : a > b ? 1 + : 0; + } + } } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java index b3305fc5..d7dfc49b 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java @@ -93,8 +93,8 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer private int activePosition = 1; private int menuActiveViewId; private int activeServers = 3; - View searchMenuItem = null; - View playlistsMenuItem = null; + View chatMenuItem = null; + View bookmarksMenuItem = null; View menuMain = null; PreferenceCategory serversCategory; Preference addServerPreference; @@ -114,14 +114,15 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer menuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_WINDOW, Position.LEFT); menuDrawer.setMenuView(R.layout.menu_main); - searchMenuItem = findViewById(R.id.menu_search); - playlistsMenuItem = findViewById(R.id.menu_playlists); + chatMenuItem = findViewById(R.id.menu_chat); + bookmarksMenuItem = findViewById(R.id.menu_bookmarks); findViewById(R.id.menu_home).setOnClickListener(this); findViewById(R.id.menu_browse).setOnClickListener(this); - searchMenuItem.setOnClickListener(this); - playlistsMenuItem.setOnClickListener(this); - findViewById(R.id.menu_chat).setOnClickListener(this); + findViewById(R.id.menu_search).setOnClickListener(this); + findViewById(R.id.menu_playlists).setOnClickListener(this); + chatMenuItem.setOnClickListener(this); + bookmarksMenuItem.setOnClickListener(this); findViewById(R.id.menu_now_playing).setOnClickListener(this); findViewById(R.id.menu_settings).setOnClickListener(this); findViewById(R.id.menu_about).setOnClickListener(this); @@ -169,7 +170,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer } }); - if (Build.VERSION.SDK_INT < 14) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { gaplessPlaybackEnabled.setChecked(false); gaplessPlaybackEnabled.setEnabled(false); } @@ -184,6 +185,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer addServerPreference.setPersistent(false); addServerPreference.setTitle(getResources().getString(R.string.settings_server_add_server)); addServerPreference.setEnabled(activeServers < maxServerCount); + serversCategory.addPreference(addServerPreference); for (int i = 1; i <= activeServers; i++) { @@ -194,7 +196,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer findPreference(Constants.PREFERENCES_KEY_TEST_CONNECTION + i).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - testConnection(instanceValue); return false; } @@ -240,6 +241,15 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer update(); } + @Override + protected void onPostCreate(Bundle bundle) { + super.onPostCreate(bundle); + + int visibility = Util.isOffline(this) ? View.GONE : View.VISIBLE; + chatMenuItem.setVisibility(visibility); + bookmarksMenuItem.setVisibility(visibility); + } + private PreferenceScreen addServer(final int instance) { final PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this); screen.setTitle(R.string.settings_server_unused); @@ -285,6 +295,11 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverEnabledPreference.setKey(Constants.PREFERENCES_KEY_SERVER_ENABLED + instance); serverEnabledPreference.setTitle(R.string.equalizer_enabled); + final CheckBoxPreference jukeboxEnabledPreference = new CheckBoxPreference(this); + jukeboxEnabledPreference.setDefaultValue(false); + jukeboxEnabledPreference.setKey(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + instance); + jukeboxEnabledPreference.setTitle(R.string.jukebox_is_default); + Preference serverRemoveServerPreference = new Preference(this); serverRemoveServerPreference.setKey(Constants.PREFERENCES_KEY_REMOVE_SERVER + instance); serverRemoveServerPreference.setPersistent(false); @@ -304,6 +319,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverUsernamePreference.setText(null); serverPasswordPreference.setText(null); serverEnabledPreference.setChecked(true); + jukeboxEnabledPreference.setChecked(false); if (instance < activeServers) { @@ -332,10 +348,10 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverTestConnectionPreference.setKey(Constants.PREFERENCES_KEY_TEST_CONNECTION + instance); serverTestConnectionPreference.setPersistent(false); serverTestConnectionPreference.setTitle(R.string.settings_test_connection_title); + serverTestConnectionPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - testConnection(instance); return false; } @@ -346,6 +362,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer screen.addPreference(serverUsernamePreference); screen.addPreference(serverPasswordPreference); screen.addPreference(serverEnabledPreference); + screen.addPreference(jukeboxEnabledPreference); screen.addPreference(serverRemoveServerPreference); screen.addPreference(serverTestConnectionPreference); @@ -516,7 +533,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer private EditTextPreference serverName; private EditTextPreference serverUrl; private EditTextPreference username; - private CheckBoxPreference enabled; private PreferenceScreen screen; private ServerSettings(String instance) { @@ -525,7 +541,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer serverName = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_NAME + instance); serverUrl = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_URL + instance); username = (EditTextPreference) findPreference(Constants.PREFERENCES_KEY_USERNAME + instance); - enabled = (CheckBoxPreference) findPreference(Constants.PREFERENCES_KEY_SERVER_ENABLED + instance); serverUrl.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override @@ -633,6 +648,9 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer case R.id.menu_chat: Util.startActivityWithoutTransition(this, ChatActivity.class); break; + case R.id.menu_bookmarks: + Util.startActivityWithoutTransition(this, BookmarkActivity.class); + break; case R.id.menu_now_playing: Util.startActivityWithoutTransition(this, DownloadActivity.class); break; diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java b/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java index bd6aba48..98e5e1d4 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java @@ -94,6 +94,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{ private int menuActiveViewId; private View nowPlayingView = null; View chatMenuItem = null; + View bookmarksMenuItem = null; View menuMain = null; public static boolean nowPlayingHidden = false; private static Entry currentSong; @@ -118,12 +119,14 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{ menuDrawer.setMenuView(R.layout.menu_main); chatMenuItem = findViewById(R.id.menu_chat); + bookmarksMenuItem = findViewById(R.id.menu_bookmarks); findViewById(R.id.menu_home).setOnClickListener(this); findViewById(R.id.menu_browse).setOnClickListener(this); findViewById(R.id.menu_search).setOnClickListener(this); findViewById(R.id.menu_playlists).setOnClickListener(this); chatMenuItem.setOnClickListener(this); + bookmarksMenuItem.setOnClickListener(this); findViewById(R.id.menu_now_playing).setOnClickListener(this); findViewById(R.id.menu_settings).setOnClickListener(this); findViewById(R.id.menu_about).setOnClickListener(this); @@ -145,6 +148,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{ int visibility = Util.isOffline(this) ? View.GONE : View.VISIBLE; chatMenuItem.setVisibility(visibility); + bookmarksMenuItem.setVisibility(visibility); } @Override @@ -657,8 +661,9 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{ } warnIfNetworkOrStorageUnavailable(); - getDownloadService().download(songs, save, autoplay, playNext, shuffle); + getDownloadService().download(songs, save, autoplay, playNext, shuffle, false); String playlistName = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME); + if (playlistName != null) { getDownloadService().setSuggestedPlaylistName(playlistName); } @@ -748,7 +753,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{ if (unpin) { downloadService.unpin(songs); } else { - downloadService.download(songs, save, autoplay, playNext, shuffle); + downloadService.download(songs, save, autoplay, playNext, shuffle, false); if (!append && Util.getShouldTransitionOnPlaybackPreference(SubsonicTabActivity.this)) { Util.startActivityWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); } @@ -973,6 +978,9 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{ case R.id.menu_chat: Util.startActivityWithoutTransition(SubsonicTabActivity.this, ChatActivity.class); break; + case R.id.menu_bookmarks: + Util.startActivityWithoutTransition(this, BookmarkActivity.class); + break; case R.id.menu_now_playing: Util.startActivityWithoutTransition(SubsonicTabActivity.this, DownloadActivity.class); break; diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java b/src/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java index 1231d052..0847ab88 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java @@ -14,18 +14,18 @@ public class Bookmark implements Serializable { * */ private static final long serialVersionUID = 8988990025189807803L; - private Long position; + private int position; private String username; private String comment; private Date created; private Date changed; - private List entries; + private Entry entry; - public Long getPosition() { + public int getPosition() { return position; } - public void setPosition(Long position) { + public void setPosition(int position) { this.position = position; } @@ -77,11 +77,11 @@ public class Bookmark implements Serializable { } } - public List getEntries() { - return this.entries; + public Entry getEntry() { + return this.entry; } - public void addEntry(Entry entry) { - entries.add(entry); + public void setEntry(Entry entry) { + this.entry = entry; } } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java b/src/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java index 68883772..d2be950d 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java @@ -99,6 +99,7 @@ public class MusicDirectory { private String type; private Date created; private int closeness; + private int bookmarkPosition; public Integer getDiscNumber() { return discNumber; @@ -327,6 +328,14 @@ public class MusicDirectory { public void setCloseness(int closeness) { this.closeness = closeness; } + + public int getBookmarkPosition() { + return bookmarkPosition; + } + + public void setBookmarkPosition(int bookmarkPosition) { + this.bookmarkPosition = bookmarkPosition; + } @Override public boolean equals(Object o) { diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java b/src/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java index 8f434727..59188858 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java @@ -385,7 +385,7 @@ public class CachedMusicService implements MusicService { } @Override - public void createBookmark(String id, Long position, Context context, ProgressListener progressListener) throws Exception { + public void createBookmark(String id, int position, Context context, ProgressListener progressListener) throws Exception { musicService.createBookmark(id, position, context, progressListener); } } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java b/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java index fc85e539..d136b95f 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java @@ -22,7 +22,7 @@ import java.util.List; import com.thejoshwa.ultrasonic.androidapp.audiofx.EqualizerController; import com.thejoshwa.ultrasonic.androidapp.audiofx.VisualizerController; -import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory; +import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory.Entry; import com.thejoshwa.ultrasonic.androidapp.domain.PlayerState; import com.thejoshwa.ultrasonic.androidapp.domain.RepeatMode; @@ -32,9 +32,9 @@ import com.thejoshwa.ultrasonic.androidapp.domain.RepeatMode; */ public interface DownloadService { - void download(List songs, boolean save, boolean autoplay, boolean playNext, boolean shuffle); + void download(List songs, boolean save, boolean autoplay, boolean playNext, boolean shuffle, boolean newPlaylist); - void downloadBackground(List songs, boolean save); + void downloadBackground(List songs, boolean save); void setShufflePlayEnabled(boolean enabled); @@ -106,11 +106,11 @@ public interface DownloadService { int getPlayerDuration(); - void delete(List songs); + void delete(List songs); - void unpin(List songs); + void unpin(List songs); - DownloadFile forSong(MusicDirectory.Entry song); + DownloadFile forSong(Entry song); long getDownloadListUpdateRevision(); @@ -133,4 +133,6 @@ public interface DownloadService { void setVolume(float volume); void swap(boolean mainList, int from, int to); + + void restore(List songs, int currentPlayingIndex, int currentPlayingPosition, boolean autoPlay, boolean newPlaylist); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java b/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java index e6473579..97901e8f 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java @@ -296,30 +296,39 @@ public class DownloadServiceImpl extends Service implements DownloadService { } @Override - public synchronized void download(List songs, boolean save, boolean autoplay, boolean playNext, boolean shuffle) { + public synchronized void download(List songs, boolean save, boolean autoplay, boolean playNext, boolean shuffle, boolean newPlaylist) { shufflePlay = false; int offset = 1; if (songs.isEmpty()) { return; } + + if (newPlaylist) { + downloadList.clear(); + } + if (playNext) { if (autoplay && getCurrentPlayingIndex() >= 0) { offset = 0; } + for (MusicDirectory.Entry song : songs) { DownloadFile downloadFile = new DownloadFile(this, song, save); downloadList.add(getCurrentPlayingIndex() + offset, downloadFile); offset++; } + revision++; } else { for (MusicDirectory.Entry song : songs) { DownloadFile downloadFile = new DownloadFile(this, song, save); downloadList.add(downloadFile); } + revision++; } + updateJukeboxPlaylist(); if(shuffle) @@ -332,8 +341,10 @@ public class DownloadServiceImpl extends Service implements DownloadService { currentPlaying = downloadList.get(0); currentPlaying.setPlaying(true); } + checkDownloads(); } + lifecycleSupport.serializeDownloadQueue(); } @@ -353,13 +364,23 @@ public class DownloadServiceImpl extends Service implements DownloadService { } } - public void restore(List songs, int currentPlayingIndex, int currentPlayingPosition) { - download(songs, false, false, false, false); + @Override + public void restore(List songs, int currentPlayingIndex, int currentPlayingPosition, boolean autoPlay, boolean newPlaylist) { + download(songs, false, false, false, false, newPlaylist); + if (currentPlayingIndex != -1) { play(currentPlayingIndex, autoPlayStart); - if (currentPlaying != null && currentPlaying.isCompleteFileAvailable()) { - doPlay(currentPlaying, currentPlayingPosition, autoPlayStart); + + if (currentPlaying != null) { + if (autoPlay && jukeboxEnabled) { + jukeboxService.skip(getCurrentPlayingIndex(), currentPlayingPosition / 1000); + } else { + if (currentPlaying.isCompleteFileAvailable()) { + doPlay(currentPlaying, currentPlayingPosition, autoPlay); + } + } } + autoPlayStart = false; } } @@ -683,9 +704,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { private synchronized void play(int index, boolean start) { if (index < 0 || index >= size()) { - reset(); - setCurrentPlaying(null, false); - lifecycleSupport.serializeDownloadQueue(); + resetPlayback(); } else { if (nextPlayingTask != null) { nextPlayingTask.cancel(); @@ -708,13 +727,20 @@ public class DownloadServiceImpl extends Service implements DownloadService { } } + private synchronized void resetPlayback() { + reset(); + setCurrentPlaying(null, false); + lifecycleSupport.serializeDownloadQueue(); + } + private synchronized void playNext(boolean start) { // Swap the media players since nextMediaPlayer is ready to play - if(start) { + if (start) { nextMediaPlayer.start(); } else { Log.i(TAG, "nextMediaPlayer already playing"); } + MediaPlayer tmp = mediaPlayer; mediaPlayer = nextMediaPlayer; nextMediaPlayer = tmp; @@ -724,7 +750,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { setNextPlaying(); // Proxy should not be being used here since the next player was already setup to play - if(proxy != null) { + if (proxy != null) { proxy.stop(); proxy = null; } @@ -781,9 +807,32 @@ public class DownloadServiceImpl extends Service implements DownloadService { private void onSongCompleted() { int index = getCurrentPlayingIndex(); + + if (currentPlaying != null) { + final Entry song = currentPlaying.getSong(); + + if (song != null && song.getBookmarkPosition() > 0 && Util.getShouldClearBookmark(this)) { + MusicService musicService = MusicServiceFactory.getMusicService(DownloadServiceImpl.this); + try { + musicService.deleteBookmark(song.getId(), DownloadServiceImpl.this, null); + } catch (Exception e) { + + } + } + } + if (index != -1) { switch (getRepeatMode()) { case OFF: + if (index + 1 < 0 || index + 1 >= size()) { + if (Util.getShouldClearPlaylist(this)) { + clear(); + } + + resetPlayback(); + break; + } + play(index + 1); break; case ALL: @@ -969,10 +1018,12 @@ public class DownloadServiceImpl extends Service implements DownloadService { private void setPlayerStateCompleted() { Log.i(TAG, this.playerState.name() + " -> " + PlayerState.COMPLETED + " (" + currentPlaying + ")"); this.playerState = PlayerState.COMPLETED; + if(positionCache != null) { positionCache.stop(); positionCache = null; } + scrobbler.scrobble(this, currentPlaying, true); } @@ -1201,7 +1252,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { SeekBar progressBar = DownloadActivity.getProgressBar(); - if (progressBar != null && downloadFile.isCompleteFileAvailable()) { + if (progressBar != null && downloadFile.isWorkDone()) { // Populate seek bar secondary progress if we have a complete file for consistency DownloadActivity.getProgressBar().setSecondaryProgress(100 * progressBar.getMax()); } @@ -1236,18 +1287,22 @@ public class DownloadServiceImpl extends Service implements DownloadService { private synchronized void setupNext(final DownloadFile downloadFile) { try { final File file = downloadFile.isCompleteFileAvailable() ? downloadFile.getCompleteFile() : downloadFile.getPartialFile(); + if(nextMediaPlayer != null) { nextMediaPlayer.setOnCompletionListener(null); nextMediaPlayer.release(); nextMediaPlayer = null; } + nextMediaPlayer = new MediaPlayer(); nextMediaPlayer.setWakeMode(DownloadServiceImpl.this, PowerManager.PARTIAL_WAKE_LOCK); + try { nextMediaPlayer.setAudioSessionId(mediaPlayer.getAudioSessionId()); } catch(Throwable e) { nextMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } + nextMediaPlayer.setDataSource(file.getPath()); setNextPlayerState(PREPARING); @@ -1308,6 +1363,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { int pos = cachedPosition; Log.i(TAG, "Ending position " + pos + " of " + duration); + if (!isPartial || (downloadFile.isWorkDone() && (Math.abs(duration - pos) < 10000))) { if(nextPlaying != null && nextPlayerState == PlayerState.PREPARED) { if(!nextSetup) { @@ -1319,6 +1375,7 @@ public class DownloadServiceImpl extends Service implements DownloadService { } else { onSongCompleted(); } + return; } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java b/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java index 2c995e98..6f840bd0 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java @@ -152,6 +152,9 @@ public class DownloadServiceLifecycleSupport { commandFilter.addAction(DownloadServiceImpl.CMD_PREVIOUS); commandFilter.addAction(DownloadServiceImpl.CMD_NEXT); downloadService.registerReceiver(intentReceiver, commandFilter); + + int instance = Util.getActiveServer(downloadService); + downloadService.setJukeboxEnabled(Util.getJukeboxEnabled(downloadService, instance)); deserializeDownloadQueue(); @@ -209,7 +212,7 @@ public class DownloadServiceLifecycleSupport { return; } Log.i(TAG, "Deserialized currentPlayingIndex: " + state.currentPlayingIndex + ", currentPlayingPosition: " + state.currentPlayingPosition); - downloadService.restore(state.songs, state.currentPlayingIndex, state.currentPlayingPosition); + downloadService.restore(state.songs, state.currentPlayingIndex, state.currentPlayingPosition, false, false); // Work-around: Serialize again, as the restore() method creates a serialization without current playing info. serializeDownloadQueue(); diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java b/src/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java index 44e8a327..83f72c81 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java @@ -164,9 +164,11 @@ public class JukeboxService { tasks.remove(Start.class); startStatusUpdate(); + if (jukeboxStatus != null) { jukeboxStatus.setPositionSeconds(offsetSeconds); } + tasks.add(new Skip(index, offsetSeconds)); downloadService.setPlayerState(PlayerState.STARTED); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java b/src/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java index fd26bc92..d23f3392 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java @@ -32,7 +32,6 @@ import com.thejoshwa.ultrasonic.androidapp.domain.Indexes; import com.thejoshwa.ultrasonic.androidapp.domain.JukeboxStatus; import com.thejoshwa.ultrasonic.androidapp.domain.Lyrics; import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory; -import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory.Entry; import com.thejoshwa.ultrasonic.androidapp.domain.MusicFolder; import com.thejoshwa.ultrasonic.androidapp.domain.Playlist; import com.thejoshwa.ultrasonic.androidapp.domain.SearchCritera; @@ -135,5 +134,5 @@ public interface MusicService { void deleteBookmark(String id, Context context, ProgressListener progressListener) throws Exception; - void createBookmark(String id, Long position, Context context, ProgressListener progressListener) throws Exception; + void createBookmark(String id, int position, Context context, ProgressListener progressListener) throws Exception; } \ No newline at end of file diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java b/src/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java index 663e83a5..af5bbb90 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java @@ -1221,7 +1221,7 @@ public class RESTMusicService implements MusicService { } @Override - public void createBookmark(String id, Long position, Context context, ProgressListener progressListener) throws Exception { + public void createBookmark(String id, int position, Context context, ProgressListener progressListener) throws Exception { checkServerVersion(context, "1.9", "Bookmarks not supported."); HttpParams params = new BasicHttpParams(); diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java index 1a968cfc..b5fd05a7 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java @@ -47,7 +47,7 @@ public class AlbumListParser extends MusicDirectoryEntryParser { if (eventType == XmlPullParser.START_TAG) { String name = getElementName(); if ("album".equals(name)) { - dir.addChild(parseEntry("", useId3)); + dir.addChild(parseEntry("", useId3, 0)); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java index 9923d8c8..dad72518 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java @@ -38,10 +38,11 @@ public class BookmarkParser extends MusicDirectoryEntryParser { bookmark.setChanged(get("changed")); bookmark.setCreated(get("created")); bookmark.setComment(get("comment")); - bookmark.setPosition(getLong("position")); + bookmark.setPosition(getInteger("position")); bookmark.setUsername(get("username")); } else if ("entry".equals(name)) { - bookmark.addEntry(parseEntry(null, false)); + bookmark.setEntry(parseEntry(null, false, bookmark.getPosition())); + dir.add(bookmark); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java index 2a9a492d..5e15e854 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java @@ -31,7 +31,7 @@ public class MusicDirectoryEntryParser extends AbstractParser { super(context); } - protected MusicDirectory.Entry parseEntry(String artist, boolean isAlbum) { + protected MusicDirectory.Entry parseEntry(String artist, boolean isAlbum, int bookmarkPosition) { MusicDirectory.Entry entry = new MusicDirectory.Entry(); entry.setId(get("id")); entry.setParent(get("parent")); @@ -60,6 +60,7 @@ public class MusicDirectoryEntryParser extends AbstractParser { entry.setIsVideo(getBoolean("isVideo")); entry.setDiscNumber(getInteger("discNumber")); entry.setType(get("type")); + entry.setBookmarkPosition(bookmarkPosition); } else if(!"".equals(artist)) { entry.setPath(artist + "/" + entry.getTitle()); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java index cdfcd27f..bcb9011d 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java @@ -51,9 +51,9 @@ public class MusicDirectoryParser extends MusicDirectoryEntryParser { String name = getElementName(); if ("child".equals(name) || "song".equals(name)) { - dir.addChild(parseEntry(artist, false)); + dir.addChild(parseEntry(artist, false, 0)); } else if ("album".equals(name) && !isAlbum) { - dir.addChild(parseEntry(artist, true)); + dir.addChild(parseEntry(artist, true, 0)); } else if ("directory".equals(name) || "artist".equals(name)) { dir.setName(get("name")); } else if ("error".equals(name)) { diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java index 9c0d9ec5..0a43ccc0 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java @@ -46,7 +46,7 @@ public class PlaylistParser extends MusicDirectoryEntryParser { if (eventType == XmlPullParser.START_TAG) { String name = getElementName(); if ("entry".equals(name)) { - dir.addChild(parseEntry("", false)); + dir.addChild(parseEntry("", false, 0)); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java index 247d929d..8717433a 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java @@ -46,7 +46,7 @@ public class RandomSongsParser extends MusicDirectoryEntryParser { if (eventType == XmlPullParser.START_TAG) { String name = getElementName(); if ("song".equals(name)) { - dir.addChild(parseEntry("", false)); + dir.addChild(parseEntry("", false, 0)); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java index 2665d0c3..3bcfcb43 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java @@ -57,9 +57,9 @@ public class SearchResult2Parser extends MusicDirectoryEntryParser { artist.setName(get("name")); artists.add(artist); } else if ("album".equals(name)) { - albums.add(parseEntry("", useId3)); + albums.add(parseEntry("", useId3, 0)); } else if ("song".equals(name)) { - songs.add(parseEntry("", false)); + songs.add(parseEntry("", false, 0)); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java index d685d5d0..484054fd 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java @@ -51,7 +51,7 @@ public class SearchResultParser extends MusicDirectoryEntryParser { if (eventType == XmlPullParser.START_TAG) { String name = getElementName(); if ("match".equals(name)) { - songs.add(parseEntry("", false)); + songs.add(parseEntry("", false, 0)); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java index d8950037..eb9c4f12 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java @@ -44,7 +44,7 @@ public class ShareParser extends MusicDirectoryEntryParser { share.setUsername(get("username")); share.setVisitCount(getLong("visitCount")); } else if ("entry".equals(name)) { - share.addEntry(parseEntry(null, false)); + share.addEntry(parseEntry(null, false, 0)); } else if ("error".equals(name)) { handleError(); } diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java b/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java index bd6a6b62..09d7f7e2 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java @@ -62,6 +62,7 @@ public final class Constants { // Preferences keys. public static final String PREFERENCES_KEY_SERVER = "server"; public static final String PREFERENCES_KEY_SERVER_ENABLED = "serverEnabled"; + public static final String PREFERENCES_KEY_JUKEBOX_BY_DEFAULT = "jukeboxEnabled"; public static final String PREFERENCES_KEY_SERVER_INSTANCE = "serverInstanceId"; public static final String PREFERENCES_KEY_SERVER_NAME = "serverName"; public static final String PREFERENCES_KEY_SERVER_URL = "serverUrl"; @@ -118,6 +119,9 @@ public final class Constants { public static final String PREFERENCES_KEY_TEMP_LOSS = "tempLoss"; public static final String PREFERENCES_KEY_CHAT_REFRESH_INTERVAL = "chatRefreshInterval"; public static final String PREFERENCES_KEY_DIRECTORY_CACHE_TIME = "directoryCacheTime"; + public static final String PREFERENCES_KEY_CLEAR_PLAYLIST = "clearPlaylist"; + public static final String PREFERENCES_KEY_CLEAR_BOOKMARK = "clearBookmark"; + public static final String PREFERENCES_KEY_DISC_SORT = "discAndTrackSort"; // Name of the preferences file. public static final String PREFERENCES_FILE_NAME = "com.thejoshwa.ultrasonic.androidapp_preferences"; diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java b/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java index ec88b6cc..952a84ff 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java @@ -48,6 +48,7 @@ import android.widget.Toast; import com.thejoshwa.ultrasonic.androidapp.R; import com.thejoshwa.ultrasonic.androidapp.activity.DownloadActivity; import com.thejoshwa.ultrasonic.androidapp.activity.MainActivity; +import com.thejoshwa.ultrasonic.androidapp.domain.Bookmark; import com.thejoshwa.ultrasonic.androidapp.domain.MusicDirectory; import com.thejoshwa.ultrasonic.androidapp.domain.PlayerState; import com.thejoshwa.ultrasonic.androidapp.domain.RepeatMode; @@ -74,7 +75,7 @@ import java.lang.reflect.Method; import java.security.MessageDigest; import java.text.DecimalFormat; import java.text.NumberFormat; -import java.util.Locale; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @@ -220,6 +221,14 @@ public class Util extends DownloadActivity { SharedPreferences prefs = getPreferences(context); return prefs.getBoolean(Constants.PREFERENCES_KEY_SERVER_ENABLED + instance, true); } + + public static boolean getJukeboxEnabled(Context context, int instance) { + if (instance == 0) { + return false; + } + SharedPreferences prefs = getPreferences(context); + return prefs.getBoolean(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + instance, false); + } public static void setServerRestVersion(Context context, Version version) { SERVER_REST_VERSIONS.put(getActiveServer(context), version); @@ -241,6 +250,7 @@ public class Util extends DownloadActivity { String userName = prefs.getString(Constants.PREFERENCES_KEY_USERNAME + newInstance, null); String password = prefs.getString(Constants.PREFERENCES_KEY_PASSWORD + newInstance, null); boolean serverEnabled = prefs.getBoolean(Constants.PREFERENCES_KEY_SERVER_ENABLED + newInstance, true); + boolean jukeboxEnabled = prefs.getBoolean(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + newInstance, true); editor.putString(Constants.PREFERENCES_KEY_SERVER + instance, server); editor.putString(Constants.PREFERENCES_KEY_SERVER_NAME + instance, serverName); @@ -248,6 +258,7 @@ public class Util extends DownloadActivity { editor.putString(Constants.PREFERENCES_KEY_USERNAME + instance, userName); editor.putString(Constants.PREFERENCES_KEY_PASSWORD + instance, password); editor.putBoolean(Constants.PREFERENCES_KEY_SERVER_ENABLED + instance, serverEnabled); + editor.putBoolean(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + instance, jukeboxEnabled); editor.putString(Constants.PREFERENCES_KEY_SERVER + newInstance, null); editor.putString(Constants.PREFERENCES_KEY_SERVER_NAME + newInstance, null); @@ -255,6 +266,7 @@ public class Util extends DownloadActivity { editor.putString(Constants.PREFERENCES_KEY_USERNAME + newInstance, null); editor.putString(Constants.PREFERENCES_KEY_PASSWORD + newInstance, null); editor.putBoolean(Constants.PREFERENCES_KEY_SERVER_ENABLED + newInstance, true); + editor.putBoolean(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + newInstance, false); editor.commit(); if (instance == activeInstance) { @@ -818,6 +830,16 @@ public class Util extends DownloadActivity { return musicDirectory; } + + public static MusicDirectory getSongsFromBookmarks(List bookmarks) { + MusicDirectory musicDirectory = new MusicDirectory(); + + for (Bookmark bookmark : bookmarks) { + musicDirectory.addChild(bookmark.getEntry()); + } + + return musicDirectory; + } /** *

Broadcasts the given song info as the new song being played.

@@ -1252,7 +1274,30 @@ public class Util extends DownloadActivity { } public static String formatTotalDuration(long totalDuration) { - long millis = totalDuration * 1000; + return formatTotalDuration(totalDuration, false); + } + + public static boolean getShouldClearPlaylist(Context context) { + SharedPreferences prefs = getPreferences(context); + return prefs.getBoolean(Constants.PREFERENCES_KEY_CLEAR_PLAYLIST, false); + } + + public static boolean getShouldSortByDisc(Context context) { + SharedPreferences prefs = getPreferences(context); + return prefs.getBoolean(Constants.PREFERENCES_KEY_DISC_SORT, false); + } + + public static boolean getShouldClearBookmark(Context context) { + SharedPreferences prefs = getPreferences(context); + return prefs.getBoolean(Constants.PREFERENCES_KEY_CLEAR_BOOKMARK, false); + } + + public static String formatTotalDuration(long totalDuration, boolean inMilliseconds) { + long millis = totalDuration; + + if (!inMilliseconds) { + millis = totalDuration * 1000; + } long hours = TimeUnit.MILLISECONDS.toHours(millis); long minutes = TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(hours); diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java b/src/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java index 1cadb1d2..facde077 100644 --- a/src/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java +++ b/src/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java @@ -59,8 +59,9 @@ public class ChatAdapter extends ArrayAdapter { if (convertView == null) { holder = new ViewHolder(); + holder.layout = layout; - convertView = LayoutInflater.from(activity).inflate(layout, parent, false); + convertView = LayoutInflater.from(activity).inflate(holder.layout, parent, false); TextView usernameView = (TextView) convertView.findViewById(R.id.chat_username); TextView timeView = (TextView) convertView.findViewById(R.id.chat_time); @@ -94,6 +95,7 @@ public class ChatAdapter extends ArrayAdapter { private static class ViewHolder { + int layout; TextView message; TextView username; TextView time;