mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-23 15:07:39 +01:00
Add Genre support, add random songs
This commit is contained in:
parent
ef8bf089c4
commit
38cafc4025
@ -2,8 +2,8 @@
|
||||
<manifest xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
package="com.thejoshwa.ultrasonic.androidapp"
|
||||
a:installLocation="auto"
|
||||
a:versionCode="6"
|
||||
a:versionName="1.0.0.30" >
|
||||
a:versionCode="7"
|
||||
a:versionName="1.0.1.1" >
|
||||
|
||||
<uses-permission a:name="android.permission.INTERNET" />
|
||||
<uses-permission a:name="android.permission.READ_PHONE_STATE" />
|
||||
@ -78,6 +78,10 @@
|
||||
a:configChanges="orientation|keyboardHidden"
|
||||
a:label="@string/equalizer.label"
|
||||
a:launchMode="singleTask" />
|
||||
<activity
|
||||
a:name=".activity.SelectGenreActivity"
|
||||
a:configChanges="orientation|keyboardHidden"
|
||||
a:launchMode="standard" />
|
||||
<activity
|
||||
a:name=".activity.VoiceQueryReceiverActivity"
|
||||
a:launchMode="singleTask" >
|
||||
|
@ -129,20 +129,20 @@ public final class R {
|
||||
public static final int unknown_album_large=0x7f02004d;
|
||||
}
|
||||
public static final class id {
|
||||
public static final int album=0x7f0d0050;
|
||||
public static final int album=0x7f0d0055;
|
||||
public static final int album_artist=0x7f0d0002;
|
||||
public static final int album_coverart=0x7f0d0000;
|
||||
public static final int album_menu_pin=0x7f0d008d;
|
||||
public static final int album_menu_play_last=0x7f0d008c;
|
||||
public static final int album_menu_play_now=0x7f0d008b;
|
||||
public static final int album_menu_pin=0x7f0d0095;
|
||||
public static final int album_menu_play_last=0x7f0d0094;
|
||||
public static final int album_menu_play_now=0x7f0d0093;
|
||||
public static final int album_star=0x7f0d0003;
|
||||
public static final int album_title=0x7f0d0001;
|
||||
public static final int appwidget_coverart=0x7f0d0004;
|
||||
public static final int appwidget_top=0x7f0d0006;
|
||||
public static final int artist=0x7f0d0008;
|
||||
public static final int artist_menu_pin=0x7f0d0090;
|
||||
public static final int artist_menu_play_last=0x7f0d008f;
|
||||
public static final int artist_menu_play_now=0x7f0d008e;
|
||||
public static final int artist_menu_pin=0x7f0d0098;
|
||||
public static final int artist_menu_play_last=0x7f0d0097;
|
||||
public static final int artist_menu_play_now=0x7f0d0096;
|
||||
public static final int button_bar=0x7f0d000c;
|
||||
public static final int button_bar_home=0x7f0d000d;
|
||||
public static final int button_bar_music=0x7f0d000e;
|
||||
@ -154,7 +154,7 @@ public final class R {
|
||||
public static final int control_next=0x7f0d000b;
|
||||
public static final int control_play=0x7f0d000a;
|
||||
public static final int control_previous=0x7f0d0009;
|
||||
public static final int control_stop=0x7f0d0051;
|
||||
public static final int control_stop=0x7f0d0056;
|
||||
public static final int download_album=0x7f0d0028;
|
||||
public static final int download_album_art_image=0x7f0d0022;
|
||||
public static final int download_album_art_layout=0x7f0d0021;
|
||||
@ -163,8 +163,8 @@ public final class R {
|
||||
public static final int download_control_layout=0x7f0d0014;
|
||||
public static final int download_duration=0x7f0d0026;
|
||||
public static final int download_empty=0x7f0d0029;
|
||||
public static final int download_equalizer=0x7f0d0080;
|
||||
public static final int download_jukebox=0x7f0d0082;
|
||||
public static final int download_equalizer=0x7f0d0088;
|
||||
public static final int download_jukebox=0x7f0d008a;
|
||||
public static final int download_list=0x7f0d002a;
|
||||
public static final int download_next=0x7f0d001a;
|
||||
public static final int download_pause=0x7f0d0017;
|
||||
@ -180,7 +180,7 @@ public final class R {
|
||||
public static final int download_status=0x7f0d001e;
|
||||
public static final int download_stop=0x7f0d0018;
|
||||
public static final int download_toggle_list=0x7f0d001d;
|
||||
public static final int download_visualizer=0x7f0d0081;
|
||||
public static final int download_visualizer=0x7f0d0089;
|
||||
public static final int download_visualizer_view_layout=0x7f0d0023;
|
||||
public static final int equalizer_bar=0x7f0d0031;
|
||||
public static final int equalizer_frequency=0x7f0d002f;
|
||||
@ -200,84 +200,92 @@ public final class R {
|
||||
public static final int lyrics_title=0x7f0d003a;
|
||||
public static final int main_select_server_1=0x7f0d003f;
|
||||
public static final int main_select_server_2=0x7f0d0040;
|
||||
public static final int main_albums=0x7f0d0043;
|
||||
public static final int main_albums_alphaByArtist=0x7f0d004b;
|
||||
public static final int main_albums_alphaByName=0x7f0d004a;
|
||||
public static final int main_albums_frequent=0x7f0d0046;
|
||||
public static final int main_albums_highest=0x7f0d0047;
|
||||
public static final int main_albums_newest=0x7f0d0044;
|
||||
public static final int main_albums_random=0x7f0d0048;
|
||||
public static final int main_albums_recent=0x7f0d0045;
|
||||
public static final int main_albums_starred=0x7f0d0049;
|
||||
public static final int main_albums=0x7f0d0048;
|
||||
public static final int main_albums_alphaByArtist=0x7f0d0050;
|
||||
public static final int main_albums_alphaByName=0x7f0d004f;
|
||||
public static final int main_albums_button=0x7f0d0043;
|
||||
public static final int main_albums_frequent=0x7f0d004b;
|
||||
public static final int main_albums_highest=0x7f0d004c;
|
||||
public static final int main_albums_newest=0x7f0d0049;
|
||||
public static final int main_albums_random=0x7f0d004d;
|
||||
public static final int main_albums_recent=0x7f0d004a;
|
||||
public static final int main_albums_starred=0x7f0d004e;
|
||||
public static final int main_artists_button=0x7f0d0042;
|
||||
public static final int main_dummy=0x7f0d003d;
|
||||
public static final int main_genres_button=0x7f0d0044;
|
||||
public static final int main_list=0x7f0d003c;
|
||||
public static final int main_music=0x7f0d0041;
|
||||
public static final int main_select_server=0x7f0d003e;
|
||||
public static final int main_shuffle=0x7f0d007f;
|
||||
public static final int main_songs=0x7f0d0041;
|
||||
public static final int main_songs_starred=0x7f0d0042;
|
||||
public static final int menu_exit=0x7f0d007e;
|
||||
public static final int menu_help=0x7f0d007d;
|
||||
public static final int menu_lyrics=0x7f0d0087;
|
||||
public static final int menu_refresh=0x7f0d0091;
|
||||
public static final int menu_remove=0x7f0d0088;
|
||||
public static final int menu_remove_all=0x7f0d0084;
|
||||
public static final int menu_save_playlist=0x7f0d0083;
|
||||
public static final int menu_screen_on_off=0x7f0d0085;
|
||||
public static final int menu_settings=0x7f0d007c;
|
||||
public static final int menu_show_album=0x7f0d0086;
|
||||
public static final int menu_shuffle=0x7f0d0089;
|
||||
public static final int notification_image=0x7f0d004d;
|
||||
public static final int play_video_contents=0x7f0d0052;
|
||||
public static final int progress_message=0x7f0d0053;
|
||||
public static final int save_playlist_name=0x7f0d0055;
|
||||
public static final int save_playlist_root=0x7f0d0054;
|
||||
public static final int search_albums=0x7f0d0059;
|
||||
public static final int search_artists=0x7f0d0058;
|
||||
public static final int search_list=0x7f0d0056;
|
||||
public static final int search_more_albums=0x7f0d005c;
|
||||
public static final int search_more_artists=0x7f0d005b;
|
||||
public static final int search_more_songs=0x7f0d005d;
|
||||
public static final int search_search=0x7f0d0057;
|
||||
public static final int search_songs=0x7f0d005a;
|
||||
public static final int select_album_art=0x7f0d0067;
|
||||
public static final int select_album_artist=0x7f0d0069;
|
||||
public static final int select_album_delete=0x7f0d0065;
|
||||
public static final int select_album_duration=0x7f0d006c;
|
||||
public static final int select_album_empty=0x7f0d005e;
|
||||
public static final int select_album_entries=0x7f0d005f;
|
||||
public static final int select_album_genre=0x7f0d006a;
|
||||
public static final int select_album_more=0x7f0d0066;
|
||||
public static final int select_album_pin=0x7f0d0063;
|
||||
public static final int select_album_play_all=0x7f0d008a;
|
||||
public static final int select_album_play_last=0x7f0d0062;
|
||||
public static final int select_album_play_now=0x7f0d0061;
|
||||
public static final int select_album_select=0x7f0d0060;
|
||||
public static final int select_album_song_count=0x7f0d006b;
|
||||
public static final int select_album_title=0x7f0d0068;
|
||||
public static final int select_album_unpin=0x7f0d0064;
|
||||
public static final int select_artist_folder=0x7f0d006e;
|
||||
public static final int select_artist_folder_1=0x7f0d006f;
|
||||
public static final int select_artist_folder_2=0x7f0d0070;
|
||||
public static final int select_artist_list=0x7f0d006d;
|
||||
public static final int select_playlist_empty=0x7f0d0071;
|
||||
public static final int select_playlist_list=0x7f0d0072;
|
||||
public static final int song_artist=0x7f0d0077;
|
||||
public static final int song_check=0x7f0d0073;
|
||||
public static final int song_duration=0x7f0d0078;
|
||||
public static final int song_menu_play_last=0x7f0d0094;
|
||||
public static final int song_menu_play_next=0x7f0d0093;
|
||||
public static final int song_menu_play_now=0x7f0d0092;
|
||||
public static final int song_star=0x7f0d0079;
|
||||
public static final int song_status=0x7f0d0076;
|
||||
public static final int song_title=0x7f0d0075;
|
||||
public static final int song_track=0x7f0d0074;
|
||||
public static final int status_icon=0x7f0d004e;
|
||||
public static final int statusbar=0x7f0d004c;
|
||||
public static final int tab_progress=0x7f0d007a;
|
||||
public static final int tab_progress_message=0x7f0d007b;
|
||||
public static final int main_shuffle=0x7f0d0087;
|
||||
public static final int main_songs=0x7f0d0045;
|
||||
public static final int main_songs_button=0x7f0d0046;
|
||||
public static final int main_songs_starred=0x7f0d0047;
|
||||
public static final int menu_exit=0x7f0d0086;
|
||||
public static final int menu_help=0x7f0d0085;
|
||||
public static final int menu_lyrics=0x7f0d008f;
|
||||
public static final int menu_refresh=0x7f0d0099;
|
||||
public static final int menu_remove=0x7f0d0090;
|
||||
public static final int menu_remove_all=0x7f0d008c;
|
||||
public static final int menu_save_playlist=0x7f0d008b;
|
||||
public static final int menu_screen_on_off=0x7f0d008d;
|
||||
public static final int menu_settings=0x7f0d0084;
|
||||
public static final int menu_show_album=0x7f0d008e;
|
||||
public static final int menu_shuffle=0x7f0d0091;
|
||||
public static final int notification_image=0x7f0d0052;
|
||||
public static final int play_video_contents=0x7f0d0057;
|
||||
public static final int progress_message=0x7f0d0058;
|
||||
public static final int save_playlist_name=0x7f0d005a;
|
||||
public static final int save_playlist_root=0x7f0d0059;
|
||||
public static final int search_albums=0x7f0d005e;
|
||||
public static final int search_artists=0x7f0d005d;
|
||||
public static final int search_list=0x7f0d005b;
|
||||
public static final int search_more_albums=0x7f0d0061;
|
||||
public static final int search_more_artists=0x7f0d0060;
|
||||
public static final int search_more_songs=0x7f0d0062;
|
||||
public static final int search_search=0x7f0d005c;
|
||||
public static final int search_songs=0x7f0d005f;
|
||||
public static final int select_album_art=0x7f0d006c;
|
||||
public static final int select_album_artist=0x7f0d006e;
|
||||
public static final int select_album_delete=0x7f0d006a;
|
||||
public static final int select_album_duration=0x7f0d0071;
|
||||
public static final int select_album_empty=0x7f0d0063;
|
||||
public static final int select_album_entries=0x7f0d0064;
|
||||
public static final int select_album_genre=0x7f0d006f;
|
||||
public static final int select_album_more=0x7f0d006b;
|
||||
public static final int select_album_pin=0x7f0d0068;
|
||||
public static final int select_album_play_all=0x7f0d0092;
|
||||
public static final int select_album_play_last=0x7f0d0067;
|
||||
public static final int select_album_play_now=0x7f0d0066;
|
||||
public static final int select_album_select=0x7f0d0065;
|
||||
public static final int select_album_song_count=0x7f0d0070;
|
||||
public static final int select_album_title=0x7f0d006d;
|
||||
public static final int select_album_unpin=0x7f0d0069;
|
||||
public static final int select_artist_empty=0x7f0d0072;
|
||||
public static final int select_artist_folder=0x7f0d0074;
|
||||
public static final int select_artist_folder_1=0x7f0d0075;
|
||||
public static final int select_artist_folder_2=0x7f0d0076;
|
||||
public static final int select_artist_list=0x7f0d0073;
|
||||
public static final int select_genre_empty=0x7f0d0077;
|
||||
public static final int select_genre_list=0x7f0d0078;
|
||||
public static final int select_playlist_empty=0x7f0d0079;
|
||||
public static final int select_playlist_list=0x7f0d007a;
|
||||
public static final int song_artist=0x7f0d007f;
|
||||
public static final int song_check=0x7f0d007b;
|
||||
public static final int song_duration=0x7f0d0080;
|
||||
public static final int song_menu_play_last=0x7f0d009c;
|
||||
public static final int song_menu_play_next=0x7f0d009b;
|
||||
public static final int song_menu_play_now=0x7f0d009a;
|
||||
public static final int song_star=0x7f0d0081;
|
||||
public static final int song_status=0x7f0d007e;
|
||||
public static final int song_title=0x7f0d007d;
|
||||
public static final int song_track=0x7f0d007c;
|
||||
public static final int status_icon=0x7f0d0053;
|
||||
public static final int statusbar=0x7f0d0051;
|
||||
public static final int tab_progress=0x7f0d0082;
|
||||
public static final int tab_progress_message=0x7f0d0083;
|
||||
public static final int title=0x7f0d0007;
|
||||
public static final int toast_layout_root=0x7f0d0036;
|
||||
public static final int trackname=0x7f0d004f;
|
||||
public static final int trackname=0x7f0d0054;
|
||||
}
|
||||
public static final class integer {
|
||||
public static final int config_activityDefaultDur=0x7f080001;
|
||||
@ -311,9 +319,10 @@ public final class R {
|
||||
public static final int select_album_header=0x7f030018;
|
||||
public static final int select_artist=0x7f030019;
|
||||
public static final int select_artist_header=0x7f03001a;
|
||||
public static final int select_playlist=0x7f03001b;
|
||||
public static final int song_list_item=0x7f03001c;
|
||||
public static final int tab_progress=0x7f03001d;
|
||||
public static final int select_genre=0x7f03001b;
|
||||
public static final int select_playlist=0x7f03001c;
|
||||
public static final int song_list_item=0x7f03001d;
|
||||
public static final int tab_progress=0x7f03001e;
|
||||
}
|
||||
public static final class menu {
|
||||
public static final int common=0x7f0c0000;
|
||||
@ -333,12 +342,12 @@ public final class R {
|
||||
public static final int select_album_n_songs_downloading=0x7f0a0001;
|
||||
}
|
||||
public static final class string {
|
||||
public static final int background_task_loading=0x7f0900ef;
|
||||
public static final int background_task_network_error=0x7f0900f1;
|
||||
public static final int background_task_no_network=0x7f0900f0;
|
||||
public static final int background_task_not_found=0x7f0900f2;
|
||||
public static final int background_task_parse_error=0x7f0900f3;
|
||||
public static final int background_task_wait=0x7f0900ee;
|
||||
public static final int background_task_loading=0x7f0900f8;
|
||||
public static final int background_task_network_error=0x7f0900fa;
|
||||
public static final int background_task_no_network=0x7f0900f9;
|
||||
public static final int background_task_not_found=0x7f0900fb;
|
||||
public static final int background_task_parse_error=0x7f0900fc;
|
||||
public static final int background_task_wait=0x7f0900f7;
|
||||
public static final int button_bar_browse=0x7f09000d;
|
||||
public static final int button_bar_home=0x7f09000c;
|
||||
public static final int button_bar_now_playing=0x7f090010;
|
||||
@ -356,248 +365,257 @@ public final class R {
|
||||
public static final int common_save=0x7f090002;
|
||||
public static final int common_unpin=0x7f090008;
|
||||
public static final int common_various_artists=0x7f09000a;
|
||||
public static final int download_empty=0x7f09004a;
|
||||
public static final int download_jukebox_not_authorized=0x7f090069;
|
||||
public static final int download_jukebox_off=0x7f090065;
|
||||
public static final int download_jukebox_offline=0x7f090068;
|
||||
public static final int download_jukebox_on=0x7f090064;
|
||||
public static final int download_jukebox_server_too_old=0x7f090067;
|
||||
public static final int download_jukebox_volume=0x7f090066;
|
||||
public static final int download_menu_equalizer=0x7f090056;
|
||||
public static final int download_menu_jukebox=0x7f090058;
|
||||
public static final int download_menu_lyrics=0x7f09004f;
|
||||
public static final int download_menu_remove=0x7f090050;
|
||||
public static final int download_menu_remove_all=0x7f090051;
|
||||
public static final int download_menu_save=0x7f090055;
|
||||
public static final int download_menu_screen_off=0x7f090053;
|
||||
public static final int download_menu_screen_on=0x7f090052;
|
||||
public static final int download_menu_show_album=0x7f09004e;
|
||||
public static final int download_menu_shuffle=0x7f090054;
|
||||
public static final int download_menu_shuffle_notification=0x7f090059;
|
||||
public static final int download_menu_visualizer=0x7f090057;
|
||||
public static final int download_playerstate_buffering=0x7f09004c;
|
||||
public static final int download_playerstate_downloading=0x7f09004b;
|
||||
public static final int download_playerstate_playing_shuffle=0x7f09004d;
|
||||
public static final int download_playlist_done=0x7f09005d;
|
||||
public static final int download_playlist_error=0x7f09005e;
|
||||
public static final int download_playlist_name=0x7f09005b;
|
||||
public static final int download_playlist_saving=0x7f09005c;
|
||||
public static final int download_playlist_title=0x7f09005a;
|
||||
public static final int download_repeat_all=0x7f090060;
|
||||
public static final int download_repeat_off=0x7f09005f;
|
||||
public static final int download_repeat_single=0x7f090061;
|
||||
public static final int download_visualizer_off=0x7f090063;
|
||||
public static final int download_visualizer_on=0x7f090062;
|
||||
public static final int equalizer_enabled=0x7f090100;
|
||||
public static final int equalizer_label=0x7f0900ff;
|
||||
public static final int equalizer_preset=0x7f090101;
|
||||
public static final int error_label=0x7f09006d;
|
||||
public static final int help_back=0x7f090029;
|
||||
public static final int help_close=0x7f09002a;
|
||||
public static final int help_label=0x7f090027;
|
||||
public static final int help_loading=0x7f09002c;
|
||||
public static final int help_title=0x7f090028;
|
||||
public static final int help_url=0x7f09002b;
|
||||
public static final int lyrics_nomatch=0x7f09006c;
|
||||
public static final int main_albums_alphaByArtist=0x7f09001f;
|
||||
public static final int main_albums_alphaByName=0x7f09001e;
|
||||
public static final int main_albums_frequent=0x7f09001a;
|
||||
public static final int main_albums_highest=0x7f09001b;
|
||||
public static final int main_albums_newest=0x7f090018;
|
||||
public static final int main_albums_random=0x7f09001c;
|
||||
public static final int main_albums_recent=0x7f090019;
|
||||
public static final int main_albums_starred=0x7f09001d;
|
||||
public static final int main_albums_title=0x7f090017;
|
||||
public static final int main_offline=0x7f090015;
|
||||
public static final int download_empty=0x7f090053;
|
||||
public static final int download_jukebox_not_authorized=0x7f090072;
|
||||
public static final int download_jukebox_off=0x7f09006e;
|
||||
public static final int download_jukebox_offline=0x7f090071;
|
||||
public static final int download_jukebox_on=0x7f09006d;
|
||||
public static final int download_jukebox_server_too_old=0x7f090070;
|
||||
public static final int download_jukebox_volume=0x7f09006f;
|
||||
public static final int download_menu_equalizer=0x7f09005f;
|
||||
public static final int download_menu_jukebox=0x7f090061;
|
||||
public static final int download_menu_lyrics=0x7f090058;
|
||||
public static final int download_menu_remove=0x7f090059;
|
||||
public static final int download_menu_remove_all=0x7f09005a;
|
||||
public static final int download_menu_save=0x7f09005e;
|
||||
public static final int download_menu_screen_off=0x7f09005c;
|
||||
public static final int download_menu_screen_on=0x7f09005b;
|
||||
public static final int download_menu_show_album=0x7f090057;
|
||||
public static final int download_menu_shuffle=0x7f09005d;
|
||||
public static final int download_menu_shuffle_notification=0x7f090062;
|
||||
public static final int download_menu_visualizer=0x7f090060;
|
||||
public static final int download_playerstate_buffering=0x7f090055;
|
||||
public static final int download_playerstate_downloading=0x7f090054;
|
||||
public static final int download_playerstate_playing_shuffle=0x7f090056;
|
||||
public static final int download_playlist_done=0x7f090066;
|
||||
public static final int download_playlist_error=0x7f090067;
|
||||
public static final int download_playlist_name=0x7f090064;
|
||||
public static final int download_playlist_saving=0x7f090065;
|
||||
public static final int download_playlist_title=0x7f090063;
|
||||
public static final int download_repeat_all=0x7f090069;
|
||||
public static final int download_repeat_off=0x7f090068;
|
||||
public static final int download_repeat_single=0x7f09006a;
|
||||
public static final int download_visualizer_off=0x7f09006c;
|
||||
public static final int download_visualizer_on=0x7f09006b;
|
||||
public static final int equalizer_enabled=0x7f090109;
|
||||
public static final int equalizer_label=0x7f090108;
|
||||
public static final int equalizer_preset=0x7f09010a;
|
||||
public static final int error_label=0x7f090076;
|
||||
public static final int help_back=0x7f090030;
|
||||
public static final int help_close=0x7f090031;
|
||||
public static final int help_label=0x7f09002e;
|
||||
public static final int help_loading=0x7f090033;
|
||||
public static final int help_title=0x7f09002f;
|
||||
public static final int help_url=0x7f090032;
|
||||
public static final int lyrics_nomatch=0x7f090075;
|
||||
public static final int main_albums_alphaByArtist=0x7f090023;
|
||||
public static final int main_albums_alphaByName=0x7f090022;
|
||||
public static final int main_albums_frequent=0x7f09001e;
|
||||
public static final int main_albums_highest=0x7f09001f;
|
||||
public static final int main_albums_newest=0x7f09001c;
|
||||
public static final int main_albums_random=0x7f090020;
|
||||
public static final int main_albums_recent=0x7f09001d;
|
||||
public static final int main_albums_starred=0x7f090021;
|
||||
public static final int main_albums_title=0x7f09001b;
|
||||
public static final int main_artists_title=0x7f090019;
|
||||
public static final int main_genres_title=0x7f09001a;
|
||||
public static final int main_music=0x7f090028;
|
||||
public static final int main_offline=0x7f090017;
|
||||
public static final int main_select_all_genres=0x7f090015;
|
||||
public static final int main_select_genre=0x7f090014;
|
||||
public static final int main_select_server=0x7f090013;
|
||||
public static final int main_settings=0x7f090016;
|
||||
public static final int main_shuffle=0x7f090014;
|
||||
public static final int main_songs_starred=0x7f090021;
|
||||
public static final int main_songs_title=0x7f090020;
|
||||
public static final int main_settings=0x7f090018;
|
||||
public static final int main_shuffle=0x7f090016;
|
||||
public static final int main_songs_genre=0x7f090027;
|
||||
public static final int main_songs_random=0x7f090026;
|
||||
public static final int main_songs_starred=0x7f090025;
|
||||
public static final int main_songs_title=0x7f090024;
|
||||
public static final int main_welcome_text=0x7f090012;
|
||||
public static final int main_welcome_title=0x7f090011;
|
||||
public static final int menu_exit=0x7f090022;
|
||||
public static final int menu_help=0x7f090024;
|
||||
public static final int menu_search=0x7f090025;
|
||||
public static final int menu_settings=0x7f090023;
|
||||
public static final int music_library_label=0x7f090038;
|
||||
public static final int music_library_label_offline=0x7f090039;
|
||||
public static final int music_service_retry=0x7f0900ed;
|
||||
public static final int parser_artist_count=0x7f0900fb;
|
||||
public static final int parser_not_authenticated=0x7f0900f9;
|
||||
public static final int parser_not_authorized=0x7f0900fa;
|
||||
public static final int parser_reading=0x7f0900f5;
|
||||
public static final int parser_reading_done=0x7f0900f6;
|
||||
public static final int parser_upgrade_client=0x7f0900f7;
|
||||
public static final int parser_upgrade_server=0x7f0900f8;
|
||||
public static final int play_video_loading=0x7f09002d;
|
||||
public static final int play_video_noplugin=0x7f09002e;
|
||||
public static final int playlist_label=0x7f090026;
|
||||
public static final int progress_wait=0x7f090037;
|
||||
public static final int search_albums=0x7f090034;
|
||||
public static final int search_artists=0x7f090033;
|
||||
public static final int search_label=0x7f09002f;
|
||||
public static final int search_more=0x7f090036;
|
||||
public static final int search_no_match=0x7f090032;
|
||||
public static final int search_search=0x7f090031;
|
||||
public static final int search_songs=0x7f090035;
|
||||
public static final int search_title=0x7f090030;
|
||||
public static final int select_album_donate_dialog_0_trial_days_left=0x7f090048;
|
||||
public static final int select_album_donate_dialog_later=0x7f090047;
|
||||
public static final int select_album_donate_dialog_message=0x7f090045;
|
||||
public static final int select_album_donate_dialog_now=0x7f090046;
|
||||
public static final int select_album_empty=0x7f09003a;
|
||||
public static final int select_album_more=0x7f09003e;
|
||||
public static final int select_album_n_selected=0x7f09003c;
|
||||
public static final int select_album_n_unselected=0x7f09003d;
|
||||
public static final int select_album_no_network=0x7f090043;
|
||||
public static final int select_album_no_sdcard=0x7f090042;
|
||||
public static final int select_album_not_licensed=0x7f090044;
|
||||
public static final int select_album_offline=0x7f09003f;
|
||||
public static final int select_album_play_all=0x7f090041;
|
||||
public static final int select_album_searching=0x7f090040;
|
||||
public static final int select_album_select=0x7f09003b;
|
||||
public static final int select_artist_all_folders=0x7f0900fe;
|
||||
public static final int select_artist_folder=0x7f0900fd;
|
||||
public static final int select_artist_refresh=0x7f0900fc;
|
||||
public static final int select_playlist_empty=0x7f090049;
|
||||
public static final int service_connecting=0x7f0900f4;
|
||||
public static final int settings_appearance_title=0x7f090083;
|
||||
public static final int settings_buffer_length=0x7f0900be;
|
||||
public static final int settings_buffer_length_1=0x7f0900c0;
|
||||
public static final int settings_buffer_length_10=0x7f0900c4;
|
||||
public static final int settings_buffer_length_12=0x7f0900c5;
|
||||
public static final int settings_buffer_length_15=0x7f0900c6;
|
||||
public static final int settings_buffer_length_2=0x7f0900c1;
|
||||
public static final int settings_buffer_length_20=0x7f0900c7;
|
||||
public static final int settings_buffer_length_30=0x7f0900c8;
|
||||
public static final int settings_buffer_length_5=0x7f0900c2;
|
||||
public static final int settings_buffer_length_8=0x7f0900c3;
|
||||
public static final int settings_cache_location=0x7f09007b;
|
||||
public static final int settings_cache_location_error=0x7f09007c;
|
||||
public static final int settings_cache_size=0x7f09007a;
|
||||
public static final int settings_cache_size_100=0x7f0900a5;
|
||||
public static final int settings_cache_size_1000=0x7f0900a8;
|
||||
public static final int settings_cache_size_10000=0x7f0900ab;
|
||||
public static final int settings_cache_size_200=0x7f0900a6;
|
||||
public static final int settings_cache_size_2000=0x7f0900a9;
|
||||
public static final int settings_cache_size_20000=0x7f0900ac;
|
||||
public static final int settings_cache_size_500=0x7f0900a7;
|
||||
public static final int settings_cache_size_5000=0x7f0900aa;
|
||||
public static final int settings_cache_size_unlimited=0x7f0900ad;
|
||||
public static final int settings_cache_title=0x7f090078;
|
||||
public static final int settings_clear_search_history=0x7f0900ae;
|
||||
public static final int settings_connection_failure=0x7f090080;
|
||||
public static final int settings_default_albums=0x7f0900eb;
|
||||
public static final int settings_default_artists=0x7f0900ea;
|
||||
public static final int settings_default_songs=0x7f0900ec;
|
||||
public static final int settings_display_bitrate=0x7f090099;
|
||||
public static final int settings_display_bitrate_summary=0x7f09009a;
|
||||
public static final int settings_hide_media_summary=0x7f0900b8;
|
||||
public static final int settings_hide_media_title=0x7f0900b7;
|
||||
public static final int settings_hide_media_toast=0x7f0900b9;
|
||||
public static final int settings_invalid_url=0x7f090081;
|
||||
public static final int settings_invalid_username=0x7f090082;
|
||||
public static final int settings_max_albums=0x7f0900d9;
|
||||
public static final int settings_max_artists=0x7f0900e8;
|
||||
public static final int settings_max_bitrate_112=0x7f090090;
|
||||
public static final int settings_max_bitrate_128=0x7f090091;
|
||||
public static final int settings_max_bitrate_160=0x7f090092;
|
||||
public static final int settings_max_bitrate_192=0x7f090093;
|
||||
public static final int settings_max_bitrate_256=0x7f090094;
|
||||
public static final int settings_max_bitrate_32=0x7f09008c;
|
||||
public static final int settings_max_bitrate_320=0x7f090095;
|
||||
public static final int settings_max_bitrate_64=0x7f09008d;
|
||||
public static final int settings_max_bitrate_80=0x7f09008e;
|
||||
public static final int settings_max_bitrate_96=0x7f09008f;
|
||||
public static final int settings_max_bitrate_mobile=0x7f09008b;
|
||||
public static final int settings_max_bitrate_unlimited=0x7f090096;
|
||||
public static final int settings_max_bitrate_wifi=0x7f09008a;
|
||||
public static final int settings_max_songs=0x7f0900e9;
|
||||
public static final int settings_media_button_summary=0x7f0900bb;
|
||||
public static final int settings_media_button_title=0x7f0900ba;
|
||||
public static final int settings_network_timeout=0x7f0900bf;
|
||||
public static final int settings_network_timeout_105000=0x7f0900cf;
|
||||
public static final int settings_network_timeout_120000=0x7f0900d0;
|
||||
public static final int settings_network_timeout_15000=0x7f0900c9;
|
||||
public static final int settings_network_timeout_30000=0x7f0900ca;
|
||||
public static final int settings_network_timeout_45000=0x7f0900cb;
|
||||
public static final int settings_network_timeout_60000=0x7f0900cc;
|
||||
public static final int settings_network_timeout_75000=0x7f0900cd;
|
||||
public static final int settings_network_timeout_90000=0x7f0900ce;
|
||||
public static final int settings_network_title=0x7f090089;
|
||||
public static final int settings_other_title=0x7f0900b0;
|
||||
public static final int settings_playback_control_title=0x7f0900b2;
|
||||
public static final int settings_preload=0x7f090079;
|
||||
public static final int settings_preload_1=0x7f09009f;
|
||||
public static final int settings_preload_10=0x7f0900a3;
|
||||
public static final int settings_preload_2=0x7f0900a0;
|
||||
public static final int settings_preload_3=0x7f0900a1;
|
||||
public static final int settings_preload_5=0x7f0900a2;
|
||||
public static final int settings_preload_unlimited=0x7f0900a4;
|
||||
public static final int settings_screen_lit_summary=0x7f0900bd;
|
||||
public static final int settings_screen_lit_title=0x7f0900bc;
|
||||
public static final int settings_scrobble_summary=0x7f0900b4;
|
||||
public static final int settings_scrobble_title=0x7f0900b3;
|
||||
public static final int settings_search_1=0x7f0900da;
|
||||
public static final int settings_search_10=0x7f0900dd;
|
||||
public static final int settings_search_100=0x7f0900e5;
|
||||
public static final int settings_search_15=0x7f0900de;
|
||||
public static final int settings_search_20=0x7f0900df;
|
||||
public static final int settings_search_25=0x7f0900e0;
|
||||
public static final int settings_search_250=0x7f0900e6;
|
||||
public static final int settings_search_3=0x7f0900db;
|
||||
public static final int settings_search_30=0x7f0900e1;
|
||||
public static final int settings_search_40=0x7f0900e2;
|
||||
public static final int settings_search_5=0x7f0900dc;
|
||||
public static final int settings_search_50=0x7f0900e3;
|
||||
public static final int settings_search_500=0x7f0900e7;
|
||||
public static final int settings_search_75=0x7f0900e4;
|
||||
public static final int settings_search_history_cleared=0x7f0900af;
|
||||
public static final int settings_search_title=0x7f0900b1;
|
||||
public static final int settings_server_address=0x7f090075;
|
||||
public static final int settings_server_name=0x7f090074;
|
||||
public static final int settings_server_password=0x7f090077;
|
||||
public static final int settings_server_scaling_summary=0x7f0900b6;
|
||||
public static final int settings_server_scaling_title=0x7f0900b5;
|
||||
public static final int settings_server_unused1=0x7f090071;
|
||||
public static final int settings_server_unused2=0x7f090072;
|
||||
public static final int settings_server_unused3=0x7f090073;
|
||||
public static final int settings_server_username=0x7f090076;
|
||||
public static final int settings_servers_title=0x7f090070;
|
||||
public static final int settings_show_lockscreen_controls=0x7f0900d5;
|
||||
public static final int settings_show_lockscreen_controls_summary=0x7f0900d6;
|
||||
public static final int settings_show_notification=0x7f0900d1;
|
||||
public static final int settings_show_notification_always=0x7f0900d3;
|
||||
public static final int settings_show_notification_always_summary=0x7f0900d4;
|
||||
public static final int settings_show_notification_summary=0x7f0900d2;
|
||||
public static final int settings_show_track_number=0x7f09009d;
|
||||
public static final int settings_show_track_number_summary=0x7f09009e;
|
||||
public static final int settings_test_connection_title=0x7f09006f;
|
||||
public static final int settings_testing_connection=0x7f09007d;
|
||||
public static final int settings_testing_ok=0x7f09007e;
|
||||
public static final int settings_testing_unlicensed=0x7f09007f;
|
||||
public static final int settings_theme_dark=0x7f090088;
|
||||
public static final int settings_theme_fullscreen=0x7f090085;
|
||||
public static final int settings_theme_fullscreenlight=0x7f090086;
|
||||
public static final int settings_theme_light=0x7f090087;
|
||||
public static final int settings_theme_title=0x7f090084;
|
||||
public static final int settings_title=0x7f09006e;
|
||||
public static final int settings_use_folder_for_album_artist=0x7f09009b;
|
||||
public static final int settings_use_folder_for_album_artist_summary=0x7f09009c;
|
||||
public static final int settings_use_stream_proxy=0x7f0900d7;
|
||||
public static final int settings_use_stream_proxy_summary=0x7f0900d8;
|
||||
public static final int settings_wifi_required_summary=0x7f090098;
|
||||
public static final int settings_wifi_required_title=0x7f090097;
|
||||
public static final int song_details_all=0x7f09006a;
|
||||
public static final int song_details_kbps=0x7f09006b;
|
||||
public static final int util_bytes_format_byte=0x7f090108;
|
||||
public static final int util_bytes_format_gigabyte=0x7f090105;
|
||||
public static final int util_bytes_format_kilobyte=0x7f090107;
|
||||
public static final int util_bytes_format_megabyte=0x7f090106;
|
||||
public static final int widget_initial_text=0x7f090102;
|
||||
public static final int widget_sdcard_busy=0x7f090103;
|
||||
public static final int widget_sdcard_missing=0x7f090104;
|
||||
public static final int menu_exit=0x7f090029;
|
||||
public static final int menu_help=0x7f09002b;
|
||||
public static final int menu_search=0x7f09002c;
|
||||
public static final int menu_settings=0x7f09002a;
|
||||
public static final int music_library_label=0x7f09003f;
|
||||
public static final int music_library_label_offline=0x7f090040;
|
||||
public static final int music_service_retry=0x7f0900f6;
|
||||
public static final int parser_artist_count=0x7f090104;
|
||||
public static final int parser_not_authenticated=0x7f090102;
|
||||
public static final int parser_not_authorized=0x7f090103;
|
||||
public static final int parser_reading=0x7f0900fe;
|
||||
public static final int parser_reading_done=0x7f0900ff;
|
||||
public static final int parser_upgrade_client=0x7f090100;
|
||||
public static final int parser_upgrade_server=0x7f090101;
|
||||
public static final int play_video_loading=0x7f090034;
|
||||
public static final int play_video_noplugin=0x7f090035;
|
||||
public static final int playlist_label=0x7f09002d;
|
||||
public static final int progress_wait=0x7f09003e;
|
||||
public static final int search_albums=0x7f09003b;
|
||||
public static final int search_artists=0x7f09003a;
|
||||
public static final int search_label=0x7f090036;
|
||||
public static final int search_more=0x7f09003d;
|
||||
public static final int search_no_match=0x7f090039;
|
||||
public static final int search_search=0x7f090038;
|
||||
public static final int search_songs=0x7f09003c;
|
||||
public static final int search_title=0x7f090037;
|
||||
public static final int select_album_donate_dialog_0_trial_days_left=0x7f09004f;
|
||||
public static final int select_album_donate_dialog_later=0x7f09004e;
|
||||
public static final int select_album_donate_dialog_message=0x7f09004c;
|
||||
public static final int select_album_donate_dialog_now=0x7f09004d;
|
||||
public static final int select_album_empty=0x7f090041;
|
||||
public static final int select_album_more=0x7f090045;
|
||||
public static final int select_album_n_selected=0x7f090043;
|
||||
public static final int select_album_n_unselected=0x7f090044;
|
||||
public static final int select_album_no_network=0x7f09004a;
|
||||
public static final int select_album_no_sdcard=0x7f090049;
|
||||
public static final int select_album_not_licensed=0x7f09004b;
|
||||
public static final int select_album_offline=0x7f090046;
|
||||
public static final int select_album_play_all=0x7f090048;
|
||||
public static final int select_album_searching=0x7f090047;
|
||||
public static final int select_album_select=0x7f090042;
|
||||
public static final int select_artist_all_folders=0x7f090107;
|
||||
public static final int select_artist_empty=0x7f090050;
|
||||
public static final int select_artist_folder=0x7f090106;
|
||||
public static final int select_artist_refresh=0x7f090105;
|
||||
public static final int select_genre_empty=0x7f090051;
|
||||
public static final int select_playlist_empty=0x7f090052;
|
||||
public static final int service_connecting=0x7f0900fd;
|
||||
public static final int settings_appearance_title=0x7f09008c;
|
||||
public static final int settings_buffer_length=0x7f0900c7;
|
||||
public static final int settings_buffer_length_1=0x7f0900c9;
|
||||
public static final int settings_buffer_length_10=0x7f0900cd;
|
||||
public static final int settings_buffer_length_12=0x7f0900ce;
|
||||
public static final int settings_buffer_length_15=0x7f0900cf;
|
||||
public static final int settings_buffer_length_2=0x7f0900ca;
|
||||
public static final int settings_buffer_length_20=0x7f0900d0;
|
||||
public static final int settings_buffer_length_30=0x7f0900d1;
|
||||
public static final int settings_buffer_length_5=0x7f0900cb;
|
||||
public static final int settings_buffer_length_8=0x7f0900cc;
|
||||
public static final int settings_cache_location=0x7f090084;
|
||||
public static final int settings_cache_location_error=0x7f090085;
|
||||
public static final int settings_cache_size=0x7f090083;
|
||||
public static final int settings_cache_size_100=0x7f0900ae;
|
||||
public static final int settings_cache_size_1000=0x7f0900b1;
|
||||
public static final int settings_cache_size_10000=0x7f0900b4;
|
||||
public static final int settings_cache_size_200=0x7f0900af;
|
||||
public static final int settings_cache_size_2000=0x7f0900b2;
|
||||
public static final int settings_cache_size_20000=0x7f0900b5;
|
||||
public static final int settings_cache_size_500=0x7f0900b0;
|
||||
public static final int settings_cache_size_5000=0x7f0900b3;
|
||||
public static final int settings_cache_size_unlimited=0x7f0900b6;
|
||||
public static final int settings_cache_title=0x7f090081;
|
||||
public static final int settings_clear_search_history=0x7f0900b7;
|
||||
public static final int settings_connection_failure=0x7f090089;
|
||||
public static final int settings_default_albums=0x7f0900f4;
|
||||
public static final int settings_default_artists=0x7f0900f3;
|
||||
public static final int settings_default_songs=0x7f0900f5;
|
||||
public static final int settings_display_bitrate=0x7f0900a2;
|
||||
public static final int settings_display_bitrate_summary=0x7f0900a3;
|
||||
public static final int settings_hide_media_summary=0x7f0900c1;
|
||||
public static final int settings_hide_media_title=0x7f0900c0;
|
||||
public static final int settings_hide_media_toast=0x7f0900c2;
|
||||
public static final int settings_invalid_url=0x7f09008a;
|
||||
public static final int settings_invalid_username=0x7f09008b;
|
||||
public static final int settings_max_albums=0x7f0900e2;
|
||||
public static final int settings_max_artists=0x7f0900f1;
|
||||
public static final int settings_max_bitrate_112=0x7f090099;
|
||||
public static final int settings_max_bitrate_128=0x7f09009a;
|
||||
public static final int settings_max_bitrate_160=0x7f09009b;
|
||||
public static final int settings_max_bitrate_192=0x7f09009c;
|
||||
public static final int settings_max_bitrate_256=0x7f09009d;
|
||||
public static final int settings_max_bitrate_32=0x7f090095;
|
||||
public static final int settings_max_bitrate_320=0x7f09009e;
|
||||
public static final int settings_max_bitrate_64=0x7f090096;
|
||||
public static final int settings_max_bitrate_80=0x7f090097;
|
||||
public static final int settings_max_bitrate_96=0x7f090098;
|
||||
public static final int settings_max_bitrate_mobile=0x7f090094;
|
||||
public static final int settings_max_bitrate_unlimited=0x7f09009f;
|
||||
public static final int settings_max_bitrate_wifi=0x7f090093;
|
||||
public static final int settings_max_songs=0x7f0900f2;
|
||||
public static final int settings_media_button_summary=0x7f0900c4;
|
||||
public static final int settings_media_button_title=0x7f0900c3;
|
||||
public static final int settings_network_timeout=0x7f0900c8;
|
||||
public static final int settings_network_timeout_105000=0x7f0900d8;
|
||||
public static final int settings_network_timeout_120000=0x7f0900d9;
|
||||
public static final int settings_network_timeout_15000=0x7f0900d2;
|
||||
public static final int settings_network_timeout_30000=0x7f0900d3;
|
||||
public static final int settings_network_timeout_45000=0x7f0900d4;
|
||||
public static final int settings_network_timeout_60000=0x7f0900d5;
|
||||
public static final int settings_network_timeout_75000=0x7f0900d6;
|
||||
public static final int settings_network_timeout_90000=0x7f0900d7;
|
||||
public static final int settings_network_title=0x7f090092;
|
||||
public static final int settings_other_title=0x7f0900b9;
|
||||
public static final int settings_playback_control_title=0x7f0900bb;
|
||||
public static final int settings_preload=0x7f090082;
|
||||
public static final int settings_preload_1=0x7f0900a8;
|
||||
public static final int settings_preload_10=0x7f0900ac;
|
||||
public static final int settings_preload_2=0x7f0900a9;
|
||||
public static final int settings_preload_3=0x7f0900aa;
|
||||
public static final int settings_preload_5=0x7f0900ab;
|
||||
public static final int settings_preload_unlimited=0x7f0900ad;
|
||||
public static final int settings_screen_lit_summary=0x7f0900c6;
|
||||
public static final int settings_screen_lit_title=0x7f0900c5;
|
||||
public static final int settings_scrobble_summary=0x7f0900bd;
|
||||
public static final int settings_scrobble_title=0x7f0900bc;
|
||||
public static final int settings_search_1=0x7f0900e3;
|
||||
public static final int settings_search_10=0x7f0900e6;
|
||||
public static final int settings_search_100=0x7f0900ee;
|
||||
public static final int settings_search_15=0x7f0900e7;
|
||||
public static final int settings_search_20=0x7f0900e8;
|
||||
public static final int settings_search_25=0x7f0900e9;
|
||||
public static final int settings_search_250=0x7f0900ef;
|
||||
public static final int settings_search_3=0x7f0900e4;
|
||||
public static final int settings_search_30=0x7f0900ea;
|
||||
public static final int settings_search_40=0x7f0900eb;
|
||||
public static final int settings_search_5=0x7f0900e5;
|
||||
public static final int settings_search_50=0x7f0900ec;
|
||||
public static final int settings_search_500=0x7f0900f0;
|
||||
public static final int settings_search_75=0x7f0900ed;
|
||||
public static final int settings_search_history_cleared=0x7f0900b8;
|
||||
public static final int settings_search_title=0x7f0900ba;
|
||||
public static final int settings_server_address=0x7f09007e;
|
||||
public static final int settings_server_name=0x7f09007d;
|
||||
public static final int settings_server_password=0x7f090080;
|
||||
public static final int settings_server_scaling_summary=0x7f0900bf;
|
||||
public static final int settings_server_scaling_title=0x7f0900be;
|
||||
public static final int settings_server_unused1=0x7f09007a;
|
||||
public static final int settings_server_unused2=0x7f09007b;
|
||||
public static final int settings_server_unused3=0x7f09007c;
|
||||
public static final int settings_server_username=0x7f09007f;
|
||||
public static final int settings_servers_title=0x7f090079;
|
||||
public static final int settings_show_lockscreen_controls=0x7f0900de;
|
||||
public static final int settings_show_lockscreen_controls_summary=0x7f0900df;
|
||||
public static final int settings_show_notification=0x7f0900da;
|
||||
public static final int settings_show_notification_always=0x7f0900dc;
|
||||
public static final int settings_show_notification_always_summary=0x7f0900dd;
|
||||
public static final int settings_show_notification_summary=0x7f0900db;
|
||||
public static final int settings_show_track_number=0x7f0900a6;
|
||||
public static final int settings_show_track_number_summary=0x7f0900a7;
|
||||
public static final int settings_test_connection_title=0x7f090078;
|
||||
public static final int settings_testing_connection=0x7f090086;
|
||||
public static final int settings_testing_ok=0x7f090087;
|
||||
public static final int settings_testing_unlicensed=0x7f090088;
|
||||
public static final int settings_theme_dark=0x7f090091;
|
||||
public static final int settings_theme_fullscreen=0x7f09008e;
|
||||
public static final int settings_theme_fullscreenlight=0x7f09008f;
|
||||
public static final int settings_theme_light=0x7f090090;
|
||||
public static final int settings_theme_title=0x7f09008d;
|
||||
public static final int settings_title=0x7f090077;
|
||||
public static final int settings_use_folder_for_album_artist=0x7f0900a4;
|
||||
public static final int settings_use_folder_for_album_artist_summary=0x7f0900a5;
|
||||
public static final int settings_use_stream_proxy=0x7f0900e0;
|
||||
public static final int settings_use_stream_proxy_summary=0x7f0900e1;
|
||||
public static final int settings_wifi_required_summary=0x7f0900a1;
|
||||
public static final int settings_wifi_required_title=0x7f0900a0;
|
||||
public static final int song_details_all=0x7f090073;
|
||||
public static final int song_details_kbps=0x7f090074;
|
||||
public static final int util_bytes_format_byte=0x7f090111;
|
||||
public static final int util_bytes_format_gigabyte=0x7f09010e;
|
||||
public static final int util_bytes_format_kilobyte=0x7f090110;
|
||||
public static final int util_bytes_format_megabyte=0x7f09010f;
|
||||
public static final int widget_initial_text=0x7f09010b;
|
||||
public static final int widget_sdcard_busy=0x7f09010c;
|
||||
public static final int widget_sdcard_missing=0x7f09010d;
|
||||
}
|
||||
public static final class style {
|
||||
public static final int Dark=0x7f0b0000;
|
||||
|
@ -1,87 +1,113 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="vertical" a:layout_width="fill_parent" a:layout_height="fill_parent">
|
||||
|
||||
<LinearLayout a:id="@+id/main_select_server"
|
||||
a:orientation="horizontal" a:paddingTop="2dip" a:paddingBottom="2dip"
|
||||
a:paddingLeft="6dp" a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:minHeight="?android:attr/listPreferredItemHeight">
|
||||
|
||||
<ImageView a:layout_width="wrap_content" a:layout_height="wrap_content"
|
||||
a:layout_gravity="center_vertical" a:src="@drawable/ic_menu_select_artist_folder" />
|
||||
|
||||
<LinearLayout a:orientation="vertical" a:layout_width="wrap_content"
|
||||
a:layout_height="fill_parent">
|
||||
|
||||
<TextView a:id="@+id/main.select_server_1" a:text="@string/main.select_server"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:layout_marginLeft="10dip" a:layout_marginTop="6dip"
|
||||
a:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<TextView a:id="@+id/main.select_server_2" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:layout_marginLeft="10dip"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView a:id="@+id/main_songs" a:text="@string/main.songs_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" a:textColor="@color/cyan"
|
||||
a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"
|
||||
a:textStyle="bold" />
|
||||
|
||||
<TextView a:id="@+id/main_songs_starred" a:text="@string/main.songs_starred"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums" a:text="@string/main.albums_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" a:textColor="@color/cyan"
|
||||
a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"
|
||||
a:textStyle="bold" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_newest" a:text="@string/main.albums_newest"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_recent" a:text="@string/main.albums_recent"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_frequent" a:text="@string/main.albums_frequent"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_highest" a:text="@string/main.albums_highest"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_random" a:text="@string/main.albums_random"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_starred" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:gravity="center_vertical"
|
||||
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
|
||||
a:text="@string/main.albums_starred" a:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_alphaByName" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:gravity="center_vertical"
|
||||
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
|
||||
a:text="@string/main.albums_alphaByName" a:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_alphaByArtist" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:gravity="center_vertical"
|
||||
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
|
||||
a:text="@string/main.albums_alphaByArtist" a:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="vertical" a:layout_width="fill_parent" a:layout_height="fill_parent">
|
||||
|
||||
<LinearLayout a:id="@+id/main_select_server"
|
||||
a:orientation="horizontal" a:paddingTop="2dip" a:paddingBottom="2dip"
|
||||
a:paddingLeft="6dp" a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:minHeight="?android:attr/listPreferredItemHeight">
|
||||
|
||||
<ImageView a:layout_width="wrap_content" a:layout_height="wrap_content"
|
||||
a:layout_gravity="center_vertical" a:src="@drawable/ic_menu_select_artist_folder" />
|
||||
|
||||
<LinearLayout a:orientation="vertical" a:layout_width="wrap_content"
|
||||
a:layout_height="fill_parent">
|
||||
|
||||
<TextView a:id="@+id/main.select_server_1" a:text="@string/main.select_server"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:layout_marginLeft="10dip" a:layout_marginTop="6dip"
|
||||
a:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<TextView a:id="@+id/main.select_server_2" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:layout_marginLeft="10dip"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView a:id="@+id/main_music" a:text="@string/main.music"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" a:textColor="@color/cyan"
|
||||
a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"
|
||||
a:textStyle="bold" />
|
||||
|
||||
<TextView a:id="@+id/main_artists_button" a:text="@string/main.artists_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_button" a:text="@string/main.albums_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_genres_button" a:text="@string/main.genres_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_songs" a:text="@string/main.songs_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" a:textColor="@color/cyan"
|
||||
a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"
|
||||
a:textStyle="bold" />
|
||||
|
||||
<TextView a:id="@+id/main_songs_button" a:text="@string/main.songs_random"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_songs_starred" a:text="@string/main.songs_starred"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums" a:text="@string/main.albums_title"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" a:textColor="@color/cyan"
|
||||
a:gravity="center_vertical" a:paddingLeft="6dp" a:textAllCaps="true"
|
||||
a:textStyle="bold" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_newest" a:text="@string/main.albums_newest"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_recent" a:text="@string/main.albums_recent"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_frequent" a:text="@string/main.albums_frequent"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_highest" a:text="@string/main.albums_highest"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_random" a:text="@string/main.albums_random"
|
||||
a:layout_width="fill_parent" a:layout_height="wrap_content"
|
||||
a:textAppearance="?android:attr/textAppearanceMedium" a:gravity="center_vertical"
|
||||
a:paddingLeft="6dip" a:paddingRight="6dip" a:minHeight="40dip" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_starred" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:gravity="center_vertical"
|
||||
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
|
||||
a:text="@string/main.albums_starred" a:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_alphaByName" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:gravity="center_vertical"
|
||||
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
|
||||
a:text="@string/main.albums_alphaByName" a:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
<TextView a:id="@+id/main_albums_alphaByArtist" a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content" a:gravity="center_vertical"
|
||||
a:minHeight="40dip" a:paddingLeft="6dip" a:paddingRight="6dip"
|
||||
a:text="@string/main.albums_alphaByArtist" a:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
a:text="@string/select_album.select"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:visibility="gone"
|
||||
a:layout_marginLeft="6dp"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
@ -56,7 +56,7 @@
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:visibility="gone"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="6dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
@ -1,48 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="horizontal"
|
||||
a:background="@android:color/transparent"
|
||||
a:paddingTop="6dp"
|
||||
a:paddingBottom="0dp"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content">
|
||||
|
||||
<Button a:id="@+id/select_album_pin"
|
||||
a:text="@string/common.pin"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:layout_marginLeft="6dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
<Button a:id="@+id/select_album_unpin"
|
||||
a:text="@string/common.unpin"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
<Button a:id="@+id/select_album_delete"
|
||||
a:text="@string/common.delete"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="6dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
<Button a:id="@+id/select_album_more"
|
||||
a:text="@string/select_album.more"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:visibility="gone"
|
||||
a:layout_marginLeft="6dp"
|
||||
a:layout_marginRight="6dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="horizontal"
|
||||
a:background="@android:color/transparent"
|
||||
a:paddingTop="6dp"
|
||||
a:paddingBottom="0dp"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content">
|
||||
|
||||
<Button a:id="@+id/select_album_pin"
|
||||
a:text="@string/common.pin"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
<Button a:id="@+id/select_album_unpin"
|
||||
a:text="@string/common.unpin"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
<Button a:id="@+id/select_album_delete"
|
||||
a:text="@string/common.delete"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
<Button a:id="@+id/select_album_more"
|
||||
a:text="@string/select_album.more"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
a:visibility="gone"
|
||||
a:layout_marginLeft="3dp"
|
||||
a:layout_marginRight="3dp"
|
||||
a:layout_weight="1"
|
||||
a:layout_width="0dp"
|
||||
a:layout_height="fill_parent"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -1,19 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="vertical"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="fill_parent">
|
||||
|
||||
<include layout="@layout/tab_progress"/>
|
||||
|
||||
<ListView a:id="@+id/select_artist_list"
|
||||
a:textFilterEnabled="true"
|
||||
a:fastScrollEnabled="true"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="0dip"
|
||||
a:layout_weight="1.0"/>
|
||||
|
||||
<include layout="@layout/button_bar"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="vertical"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="fill_parent">
|
||||
|
||||
<include layout="@layout/tab_progress"/>
|
||||
|
||||
<TextView
|
||||
a:id="@+id/select_artist_empty"
|
||||
a:text="@string/select_artist.empty"
|
||||
a:visibility="gone"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content"
|
||||
a:padding="10dip"/>
|
||||
|
||||
<ListView a:id="@+id/select_artist_list"
|
||||
a:textFilterEnabled="true"
|
||||
a:fastScrollEnabled="true"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="0dip"
|
||||
a:layout_weight="1.0"/>
|
||||
|
||||
<include layout="@layout/button_bar"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
27
res/layout/select_genre.xml
Normal file
27
res/layout/select_genre.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="vertical"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="fill_parent">
|
||||
|
||||
<include layout="@layout/tab_progress"/>
|
||||
|
||||
<TextView
|
||||
a:id="@+id/select_genre_empty"
|
||||
a:text="@string/select_genre.empty"
|
||||
a:visibility="gone"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="wrap_content"
|
||||
a:padding="10dip"/>
|
||||
|
||||
<ListView a:id="@+id/select_genre_list"
|
||||
a:textFilterEnabled="true"
|
||||
a:fastScrollEnabled="true"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="0dip"
|
||||
a:layout_weight="1.0"/>
|
||||
|
||||
<include layout="@layout/button_bar"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -20,20 +20,27 @@
|
||||
<string name="main.welcome_title">Welcome!</string>
|
||||
<string name="main.welcome_text">Welcome to UltraSonic! The app is currently not configured. After you\'ve set up your personal server (available from <b>subsonic.org</b>), please go to <b>Settings</b> and change the configuration to connect to it.</string>
|
||||
<string name="main.select_server">Select Server</string>
|
||||
<string name="main.select_genre">Select Genre</string>
|
||||
<string name="main.select_all_genres">All Genres</string>
|
||||
<string name="main.shuffle">Shuffle Play</string>
|
||||
<string name="main.offline">Offline</string>
|
||||
<string name="main.settings">Settings</string>
|
||||
<string name="main.artists_title">Artists</string>
|
||||
<string name="main.genres_title">Genres</string>
|
||||
<string name="main.albums_title">Albums</string>
|
||||
<string name="main.albums_newest">Recently Added</string>
|
||||
<string name="main.albums_recent">Recently Played</string>
|
||||
<string name="main.albums_frequent">Most Played</string>
|
||||
<string name="main.albums_highest">Top Rated</string>
|
||||
<string name="main.albums_random">Random</string>
|
||||
<string name="main.albums_starred">Starred Albums</string>
|
||||
<string name="main.albums_starred">Starred</string>
|
||||
<string name="main.albums_alphaByName">By Name</string>
|
||||
<string name="main.albums_alphaByArtist">By Artist</string>
|
||||
<string name="main.songs_title">Songs</string>
|
||||
<string name="main.songs_starred">Starred Songs</string>
|
||||
<string name="main.songs_starred">Starred</string>
|
||||
<string name="main.songs_random">Random</string>
|
||||
<string name="main.songs_genre">By Genre</string>
|
||||
<string name="main.music">Music</string>
|
||||
<string name="menu.exit">Exit</string>
|
||||
<string name="menu.settings">Settings</string>
|
||||
<string name="menu.help">Help</string>
|
||||
@ -73,6 +80,8 @@
|
||||
<string name="select_album.donate_dialog_now">Now</string>
|
||||
<string name="select_album.donate_dialog_later">Later</string>
|
||||
<string name="select_album.donate_dialog_0_trial_days_left">Trial period is over</string>
|
||||
<string name="select_artist.empty">No artists found</string>
|
||||
<string name="select_genre.empty">No genres found</string>
|
||||
<string name="select_playlist.empty">No saved playlists on server</string>
|
||||
<string name="download.empty">Playlist is empty</string>
|
||||
<string name="download.playerstate_downloading">Downloading - %s</string>
|
||||
@ -251,10 +260,10 @@
|
||||
<string name="parser.upgrade_server">Incompatible versions. Please upgrade Subsonic server.</string>
|
||||
<string name="parser.not_authenticated">Wrong username or password.</string>
|
||||
<string name="parser.not_authorized">Not authorized. Check user permissions in Subsonic server.</string>
|
||||
<string name="parser.artist_count">Got %d artists.</string>
|
||||
<string name="parser.artist_count">Got %d Artists.</string>
|
||||
<string name="select_artist.refresh">Refresh</string>
|
||||
<string name="select_artist.folder">Select folder</string>
|
||||
<string name="select_artist.all_folders">All folders</string>
|
||||
<string name="select_artist.folder">Select Folder</string>
|
||||
<string name="select_artist.all_folders">All Folders</string>
|
||||
<string name="equalizer.label">Equalizer</string>
|
||||
<string name="equalizer.enabled">Enabled</string>
|
||||
<string name="equalizer.preset">Select preset</string>
|
||||
|
@ -20,7 +20,6 @@
|
||||
package com.thejoshwa.ultrasonic.androidapp.activity;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.DownloadService;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.DownloadServiceImpl;
|
||||
@ -28,6 +27,7 @@ import com.thejoshwa.ultrasonic.androidapp.util.Constants;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.MergeAdapter;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.FileUtil;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
@ -53,7 +53,7 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
private String theme;
|
||||
|
||||
private static boolean infoDialogDisplayed;
|
||||
|
||||
|
||||
/**
|
||||
* Called when the activity is first created.
|
||||
*/
|
||||
@ -74,8 +74,16 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
final View serverButton = buttons.findViewById(R.id.main_select_server);
|
||||
final TextView serverTextView = (TextView) serverButton.findViewById(R.id.main_select_server_2);
|
||||
|
||||
final View albumsTitle = buttons.findViewById(R.id.main_albums);
|
||||
final View musicTitle = buttons.findViewById(R.id.main_music);
|
||||
final View artistsButton = buttons.findViewById(R.id.main_artists_button);
|
||||
final View albumsButton = buttons.findViewById(R.id.main_albums_button);
|
||||
final View genresButton = buttons.findViewById(R.id.main_genres_button);
|
||||
|
||||
final View songsTitle = buttons.findViewById(R.id.main_songs);
|
||||
final View randomSongsButton = buttons.findViewById(R.id.main_songs_button);
|
||||
final View songsStarredButton = buttons.findViewById(R.id.main_songs_starred);
|
||||
|
||||
final View albumsTitle = buttons.findViewById(R.id.main_albums);
|
||||
final View albumsNewestButton = buttons.findViewById(R.id.main_albums_newest);
|
||||
final View albumsRandomButton = buttons.findViewById(R.id.main_albums_random);
|
||||
final View albumsHighestButton = buttons.findViewById(R.id.main_albums_highest);
|
||||
@ -84,8 +92,7 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
final View albumsFrequentButton = buttons.findViewById(R.id.main_albums_frequent);
|
||||
final View albumsAlphaByNameButton = buttons.findViewById(R.id.main_albums_alphaByName);
|
||||
final View albumsAlphaByArtistButton = buttons.findViewById(R.id.main_albums_alphaByArtist);
|
||||
final View songsStarredButton = buttons.findViewById(R.id.main_songs_starred);
|
||||
|
||||
|
||||
final View dummyView = findViewById(R.id.main_dummy);
|
||||
|
||||
int instance = Util.getActiveServer(this);
|
||||
@ -99,8 +106,10 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
adapter.addViews(Arrays.asList(serverButton), true);
|
||||
|
||||
if (!Util.isOffline(this)) {
|
||||
adapter.addView(musicTitle, false);
|
||||
adapter.addViews(Arrays.asList(artistsButton, albumsButton, genresButton), true);
|
||||
adapter.addView(songsTitle, false);
|
||||
adapter.addViews(Arrays.asList(songsStarredButton), true);
|
||||
adapter.addViews(Arrays.asList(randomSongsButton, songsStarredButton), true);
|
||||
adapter.addView(albumsTitle, false);
|
||||
adapter.addViews(Arrays.asList(albumsNewestButton, albumsRecentButton, albumsFrequentButton, albumsHighestButton, albumsRandomButton, albumsStarredButton, albumsAlphaByNameButton, albumsAlphaByArtistButton), true);
|
||||
}
|
||||
@ -114,23 +123,31 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
if (view == serverButton) {
|
||||
dummyView.showContextMenu();
|
||||
} else if (view == albumsNewestButton) {
|
||||
showAlbumList("newest");
|
||||
showAlbumList("newest", R.string.main_albums_newest);
|
||||
} else if (view == albumsRandomButton) {
|
||||
showAlbumList("random");
|
||||
showAlbumList("random", R.string.main_albums_random);
|
||||
} else if (view == albumsHighestButton) {
|
||||
showAlbumList("highest");
|
||||
showAlbumList("highest", R.string.main_albums_highest);
|
||||
} else if (view == albumsRecentButton) {
|
||||
showAlbumList("recent");
|
||||
showAlbumList("recent", R.string.main_albums_recent);
|
||||
} else if (view == albumsFrequentButton) {
|
||||
showAlbumList("frequent");
|
||||
showAlbumList("frequent", R.string.main_albums_frequent);
|
||||
} else if (view == albumsStarredButton) {
|
||||
showAlbumList("starred");
|
||||
showAlbumList("starred", R.string.main_albums_starred);
|
||||
} else if (view == albumsAlphaByNameButton) {
|
||||
showAlbumList("alphabeticalByName");
|
||||
showAlbumList("alphabeticalByName", R.string.main_albums_alphaByName);
|
||||
} else if (view == albumsAlphaByArtistButton) {
|
||||
showAlbumList("alphabeticalByArtist");
|
||||
showAlbumList("alphabeticalByArtist", R.string.main_albums_alphaByArtist);
|
||||
} else if (view == songsStarredButton) {
|
||||
showStarredSongs();
|
||||
} else if (view == artistsButton) {
|
||||
showArtists();
|
||||
} else if (view == albumsButton) {
|
||||
showAlbumList("alphabeticalByName", R.string.main_albums_title);
|
||||
} else if (view == randomSongsButton) {
|
||||
showRandomSongs();
|
||||
} else if (view == genresButton) {
|
||||
showGenres();
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -283,9 +300,10 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private void showAlbumList(String type) {
|
||||
private void showAlbumList(String type, int title) {
|
||||
Intent intent = new Intent(this, SelectAlbumActivity.class);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TYPE, type);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, title);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, Util.getMaxAlbums(this));
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
@ -296,4 +314,24 @@ public class MainActivity extends SubsonicTabActivity {
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_STARRED, 1);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
||||
private void showRandomSongs() {
|
||||
Intent intent = new Intent(this, SelectAlbumActivity.class);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_RANDOM, 1);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, Util.getMaxSongs(this));
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
||||
private void showArtists() {
|
||||
Intent intent = new Intent(this, SelectArtistActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, "Artists");
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
||||
private void showGenres() {
|
||||
Intent intent = new Intent(this, SelectGenreActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
}
|
@ -168,16 +168,23 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
|
||||
String playlistId = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID);
|
||||
String playlistName = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_PLAYLIST_NAME);
|
||||
String albumListType = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TYPE);
|
||||
String genreName = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME);
|
||||
int albumListTitle = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, 0);
|
||||
int getStarredTracks = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_STARRED, 0);
|
||||
int getRandomTracks = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_RANDOM, 0);
|
||||
int albumListSize = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0);
|
||||
int albumListOffset = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0);
|
||||
|
||||
if (playlistId != null) {
|
||||
getPlaylist(playlistId, playlistName);
|
||||
} else if (albumListType != null) {
|
||||
getAlbumList(albumListType, albumListSize, albumListOffset);
|
||||
getAlbumList(albumListType, albumListTitle, albumListSize, albumListOffset);
|
||||
} else if (genreName != null) {
|
||||
getSongsForGenre(genreName, albumListSize, albumListOffset);
|
||||
} else if (getStarredTracks != 0) {
|
||||
getStarred();
|
||||
} else if (getRandomTracks != 0) {
|
||||
getRandom(albumListSize);
|
||||
} else {
|
||||
getMusicDirectory(id, name);
|
||||
}
|
||||
@ -328,6 +335,44 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private void getSongsForGenre(final String genre, final int count, final int offset) {
|
||||
setTitle(genre);
|
||||
|
||||
new LoadTask() {
|
||||
@Override
|
||||
protected MusicDirectory load(MusicService service) throws Exception {
|
||||
return service.getSongsByGenre(genre, count, offset, SelectAlbumActivity.this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void done(Pair<MusicDirectory, Boolean> result) {
|
||||
// Hide more button when results are less than album list size
|
||||
if (result.getFirst().getChildren().size() < getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0)) {
|
||||
moreButton.setVisibility(View.GONE);
|
||||
} else {
|
||||
moreButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
moreButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(SelectAlbumActivity.this, SelectAlbumActivity.class);
|
||||
String genre = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME);
|
||||
int size = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, 0);
|
||||
int offset = getIntent().getIntExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0) + size;
|
||||
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME, genre);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, size);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, offset);
|
||||
Util.startActivityWithoutTransition(SelectAlbumActivity.this, intent);
|
||||
}
|
||||
});
|
||||
|
||||
super.done(result);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private void getStarred() {
|
||||
setTitle(R.string.main_songs_starred);
|
||||
|
||||
@ -338,6 +383,17 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private void getRandom(final int size) {
|
||||
setTitle(R.string.main_songs_random);
|
||||
|
||||
new LoadTask() {
|
||||
@Override
|
||||
protected MusicDirectory load(MusicService service) throws Exception {
|
||||
return service.getRandomSongs(size, SelectAlbumActivity.this, this);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private void getPlaylist(final String playlistId, String playlistName) {
|
||||
setTitle(playlistName);
|
||||
@ -350,26 +406,10 @@ public class SelectAlbumActivity extends SubsonicTabActivity {
|
||||
}.execute();
|
||||
}
|
||||
|
||||
private void getAlbumList(final String albumListType, final int size, final int offset) {
|
||||
private void getAlbumList(final String albumListType, final int albumListTitle, final int size, final int offset) {
|
||||
showHeader = false;
|
||||
|
||||
if ("newest".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_newest);
|
||||
} else if ("random".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_random);
|
||||
} else if ("highest".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_highest);
|
||||
} else if ("recent".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_recent);
|
||||
} else if ("frequent".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_frequent);
|
||||
} else if ("starred".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_starred);
|
||||
} else if ("alphabeticalByName".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_alphaByName);
|
||||
} else if ("alphabeticalByArtist".equals(albumListType)) {
|
||||
setTitle(R.string.main_albums_alphaByArtist);
|
||||
}
|
||||
setTitle(albumListTitle);
|
||||
|
||||
new LoadTask() {
|
||||
@Override
|
||||
|
@ -75,7 +75,12 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter
|
||||
|
||||
registerForContextMenu(artistList);
|
||||
|
||||
setTitle(Util.isOffline(this) ? R.string.music_library_label_offline : R.string.music_library_label);
|
||||
String title = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE);
|
||||
if (title == null) {
|
||||
setTitle(Util.isOffline(this) ? R.string.music_library_label_offline : R.string.music_library_label);
|
||||
} else {
|
||||
setTitle(title);
|
||||
}
|
||||
|
||||
musicFolders = null;
|
||||
load();
|
||||
@ -94,6 +99,8 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter
|
||||
private void refresh() {
|
||||
finish();
|
||||
Intent intent = getIntent();
|
||||
String title = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TITLE, title);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
@ -0,0 +1,161 @@
|
||||
/*
|
||||
This file is part of Subsonic.
|
||||
|
||||
Subsonic is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Subsonic is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2009 (C) Sindre Mehus
|
||||
*/
|
||||
|
||||
package com.thejoshwa.ultrasonic.androidapp.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.MusicService;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.MusicServiceFactory;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.BackgroundTask;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Constants;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.GenreAdapter;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.TabActivityBackgroundTask;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.Util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SelectGenreActivity extends SubsonicTabActivity implements AdapterView.OnItemClickListener {
|
||||
|
||||
private static final String TAG = SelectGenreActivity.class.getSimpleName();
|
||||
|
||||
private ListView genreList;
|
||||
private View emptyView;
|
||||
|
||||
/**
|
||||
* Called when the activity is first created.
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.select_genre);
|
||||
|
||||
genreList = (ListView) findViewById(R.id.select_genre_list);
|
||||
genreList.setOnItemClickListener(this);
|
||||
genreList.setOnTouchListener(gestureListener);
|
||||
|
||||
emptyView = findViewById(R.id.select_genre_empty);
|
||||
|
||||
registerForContextMenu(genreList);
|
||||
|
||||
setTitle(R.string.main_genres_title);
|
||||
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.main, menu);
|
||||
inflater.inflate(R.menu.select_common, menu);
|
||||
super.onCreateOptionsMenu(menu);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void refresh() {
|
||||
finish();
|
||||
Intent intent = getIntent();
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_REFRESH, true);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
||||
private void load() {
|
||||
BackgroundTask<List<Genre>> task = new TabActivityBackgroundTask<List<Genre>>(this) {
|
||||
@Override
|
||||
protected List<Genre> doInBackground() throws Throwable {
|
||||
MusicService musicService = MusicServiceFactory.getMusicService(SelectGenreActivity.this);
|
||||
|
||||
List<Genre> genres = new ArrayList<Genre>();
|
||||
|
||||
try {
|
||||
genres = musicService.getGenres(SelectGenreActivity.this, this);
|
||||
} catch (Exception x) {
|
||||
Log.e(TAG, "Failed to load genres", x);
|
||||
}
|
||||
|
||||
return genres;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void done(List<Genre> result) {
|
||||
emptyView.setVisibility(result == null || result.isEmpty() ? View.VISIBLE : View.GONE);
|
||||
|
||||
if (result != null) {
|
||||
genreList.setAdapter(new GenreAdapter(SelectGenreActivity.this, result));
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
task.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
Genre genre = (Genre) parent.getItemAtPosition(position);
|
||||
Intent intent = new Intent(this, SelectAlbumActivity.class);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_GENRE_NAME, genre.getName());
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_SIZE, Util.getMaxSongs(this));
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_OFFSET, 0);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
|
||||
case R.id.menu_refresh:
|
||||
refresh();
|
||||
return true;
|
||||
|
||||
case R.id.main_shuffle:
|
||||
Intent intent = new Intent(this, DownloadActivity.class);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true);
|
||||
Util.startActivityWithoutTransition(this, intent);
|
||||
return true;
|
||||
|
||||
case R.id.menu_exit:
|
||||
Intent intent1 = new Intent(this, MainActivity.class);
|
||||
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
intent1.putExtra(Constants.INTENT_EXTRA_NAME_EXIT, true);
|
||||
Util.startActivityWithoutTransition(this, intent1);
|
||||
return true;
|
||||
|
||||
case R.id.menu_settings:
|
||||
startActivity(new Intent(this, SettingsActivity.class));
|
||||
return true;
|
||||
|
||||
case R.id.menu_help:
|
||||
startActivity(new Intent(this, HelpActivity.class));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
@ -445,7 +445,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{
|
||||
Intent intent = new Intent(SubsonicTabActivity.this, DownloadActivity.class);
|
||||
SubsonicTabActivity.this.startActivity(intent);
|
||||
}
|
||||
else if (name.equalsIgnoreCase("SelectArtistActivity") || name.equalsIgnoreCase("SelectAlbumActivity"))
|
||||
else if (name.equalsIgnoreCase("SelectArtistActivity") || name.equalsIgnoreCase("SelectAlbumActivity") || name.equalsIgnoreCase("SelectGenreActivity"))
|
||||
{
|
||||
Intent intent = new Intent(SubsonicTabActivity.this, MainActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
@ -478,7 +478,7 @@ public class SubsonicTabActivity extends Activity implements OnClickListener{
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
SubsonicTabActivity.this.startActivity(intent);
|
||||
}
|
||||
if (name.equalsIgnoreCase("SelectArtistActivity") || name.equalsIgnoreCase("SelectAlbumActivity"))
|
||||
if (name.equalsIgnoreCase("SelectArtistActivity") || name.equalsIgnoreCase("SelectAlbumActivity") || name.equalsIgnoreCase("SelectGenreActivity"))
|
||||
{
|
||||
Intent intent = new Intent(SubsonicTabActivity.this, SearchActivity.class);
|
||||
intent.putExtra(Constants.INTENT_EXTRA_REQUEST_SEARCH, true);
|
||||
|
33
src/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java
Normal file
33
src/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java
Normal file
@ -0,0 +1,33 @@
|
||||
package com.thejoshwa.ultrasonic.androidapp.domain;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Genre implements Serializable {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -3943025175219134028L;
|
||||
private String name;
|
||||
private String index;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getIndex() {
|
||||
return index;
|
||||
}
|
||||
|
||||
public void setIndex(String index) {
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
}
|
||||
}
|
@ -25,6 +25,8 @@ import org.apache.http.HttpResponse;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Indexes;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.JukeboxStatus;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Lyrics;
|
||||
@ -54,6 +56,7 @@ public class CachedMusicService implements MusicService {
|
||||
private final TimeLimitedCache<Indexes> cachedIndexes = new TimeLimitedCache<Indexes>(60 * 60, TimeUnit.SECONDS);
|
||||
private final TimeLimitedCache<List<Playlist>> cachedPlaylists = new TimeLimitedCache<List<Playlist>>(60, TimeUnit.SECONDS);
|
||||
private final TimeLimitedCache<List<MusicFolder>> cachedMusicFolders = new TimeLimitedCache<List<MusicFolder>>(10 * 3600, TimeUnit.SECONDS);
|
||||
private final TimeLimitedCache<List<Genre>> cachedGenres = new TimeLimitedCache<List<Genre>>(10 * 3600, TimeUnit.SECONDS);
|
||||
private String restUrl;
|
||||
|
||||
public CachedMusicService(MusicService musicService) {
|
||||
@ -247,4 +250,20 @@ public class CachedMusicService implements MusicService {
|
||||
public void unstar(String id, Context context, ProgressListener progressListener) throws Exception {
|
||||
musicService.unstar(id, context, progressListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Genre> getGenres(Context context, ProgressListener progressListener) throws Exception {
|
||||
checkSettingsChanged(context);
|
||||
List<Genre> result = cachedGenres.get();
|
||||
if (result == null) {
|
||||
result = musicService.getGenres(context, progressListener);
|
||||
cachedGenres.set(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MusicDirectory getSongsByGenre(String genre, int count, int offset, Context context, ProgressListener progressListener) throws Exception {
|
||||
return musicService.getSongsByGenre(genre, count, offset, context, progressListener);
|
||||
}
|
||||
}
|
||||
|
@ -1102,27 +1102,26 @@ public class DownloadServiceImpl extends Service implements DownloadService {
|
||||
private final File partialFile;
|
||||
|
||||
public BufferTask(DownloadFile downloadFile, int position) {
|
||||
this.downloadFile = downloadFile;
|
||||
this.position = position;
|
||||
partialFile = downloadFile.getPartialFile();
|
||||
this.downloadFile = downloadFile;
|
||||
this.position = position;
|
||||
partialFile = downloadFile.getPartialFile();
|
||||
int bufferLength = downloadFile.getBufferLength();
|
||||
|
||||
int bufferLength = downloadFile.getBufferLength();
|
||||
// Calculate roughly how many bytes buffer length corresponds to.
|
||||
int bitRate = downloadFile.getBitRate();
|
||||
long byteCount = Math.max(100000, bitRate * 1024 / 8 * bufferLength);
|
||||
|
||||
// Calculate roughly how many bytes buffer length corresponds to.
|
||||
int bitRate = downloadFile.getBitRate();
|
||||
long byteCount = Math.max(100000, bitRate * 1024 / 8 * bufferLength);
|
||||
|
||||
// Find out how large the file should grow before resuming playback.
|
||||
if (position == 0) {
|
||||
expectedFileSize = byteCount;
|
||||
} else {
|
||||
expectedFileSize = partialFile.length() + byteCount;
|
||||
}
|
||||
// Find out how large the file should grow before resuming playback.
|
||||
if (position == 0) {
|
||||
expectedFileSize = byteCount;
|
||||
} else {
|
||||
expectedFileSize = partialFile.length() + byteCount;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
if (!downloadFile.isOffline() && !getIsCompleteFileAvailable(downloadFile)) {
|
||||
if (!getIsCompleteFileAvailable(downloadFile)) {
|
||||
setPlayerState(DOWNLOADING);
|
||||
|
||||
while (!bufferComplete()) {
|
||||
@ -1131,6 +1130,7 @@ public class DownloadServiceImpl extends Service implements DownloadService {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
doPlay(downloadFile, position, true);
|
||||
@ -1148,18 +1148,18 @@ public class DownloadServiceImpl extends Service implements DownloadService {
|
||||
}
|
||||
|
||||
private boolean bufferComplete() {
|
||||
if (!downloadFile.isOffline() && getIsCompleteFileAvailable(downloadFile)) {
|
||||
if (!getIsCompleteFileAvailable(downloadFile)) {
|
||||
long size = partialFile.length();
|
||||
|
||||
if (size >= expectedFileSize) {
|
||||
Log.i(TAG, "Buffering complete: " + partialFile + " (" + size + "/" + expectedFileSize + ")");
|
||||
Log.i(TAG, "Buffering complete: " + partialFile + " ("
|
||||
+ size + "/" + expectedFileSize + ")");
|
||||
return true;
|
||||
}
|
||||
|
||||
Log.i(TAG, "Buffering incomplete: " + partialFile + " (" + size + "/" + expectedFileSize + ")");
|
||||
Log.i(TAG, "Buffering incomplete: " + partialFile + " (" + size
|
||||
+ "/" + expectedFileSize + ")");
|
||||
return false;
|
||||
} else {
|
||||
Log.i(TAG, "Buffering complete: " + partialFile);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,8 @@ import org.apache.http.HttpResponse;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Indexes;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.JukeboxStatus;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Lyrics;
|
||||
@ -47,6 +49,8 @@ public interface MusicService {
|
||||
|
||||
List<MusicFolder> getMusicFolders(Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
List<Genre> getGenres(Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
void star(String id, Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
void unstar(String id, Context context, ProgressListener progressListener) throws Exception;
|
||||
@ -71,6 +75,8 @@ public interface MusicService {
|
||||
|
||||
MusicDirectory getRandomSongs(int size, Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
MusicDirectory getSongsByGenre(String genre, int count, int offset, Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
SearchResult getStarred(Context context, ProgressListener progressListener) throws Exception;
|
||||
|
||||
Bitmap getCoverArt(Context context, MusicDirectory.Entry entry, int size, boolean saveToFile, ProgressListener progressListener) throws Exception;
|
||||
|
@ -36,6 +36,7 @@ import android.graphics.BitmapFactory;
|
||||
import android.media.MediaMetadataRetriever;
|
||||
import android.util.Log;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Artist;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Indexes;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.JukeboxStatus;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Lyrics;
|
||||
@ -371,6 +372,16 @@ public class OfflineMusicService extends RESTMusicService {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MusicDirectory getSongsByGenre(String genre, int count, int offset, Context context, ProgressListener progressListener) throws Exception {
|
||||
throw new OfflineException("Getting Songs By Genre not available in offline mode");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Genre> getGenres(Context context, ProgressListener progressListener) throws Exception {
|
||||
throw new OfflineException("Getting Genres not available in offline mode");
|
||||
}
|
||||
|
||||
private void listFilesRecursively(File parent, List<File> children) {
|
||||
for (File file : FileUtil.listMusicFiles(parent)) {
|
||||
|
@ -70,6 +70,7 @@ import android.net.NetworkInfo;
|
||||
import android.util.Log;
|
||||
import android.util.Xml;
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Indexes;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.JukeboxStatus;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Lyrics;
|
||||
@ -82,6 +83,7 @@ import com.thejoshwa.ultrasonic.androidapp.domain.ServerInfo;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Version;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.parser.AlbumListParser;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.parser.ErrorParser;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.parser.GenreParser;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.parser.IndexesParser;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.parser.JukeboxStatusParser;
|
||||
import com.thejoshwa.ultrasonic.androidapp.service.parser.LicenseParser;
|
||||
@ -797,4 +799,40 @@ public class RESTMusicService implements MusicService {
|
||||
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
|
||||
return networkInfo == null ? -1 : networkInfo.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Genre> getGenres(Context context, ProgressListener progressListener) throws Exception {
|
||||
checkServerVersion(context, "1.9", "Genres not supported.");
|
||||
Reader reader = getReader(context, progressListener, "getGenres", null);
|
||||
try {
|
||||
return new GenreParser(context).parse(reader, progressListener);
|
||||
} finally {
|
||||
Util.close(reader);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MusicDirectory getSongsByGenre(String genre, int count, int offset, Context context, ProgressListener progressListener) throws Exception {
|
||||
checkServerVersion(context, "1.9", "Genres not supported.");
|
||||
HttpParams params = new BasicHttpParams();
|
||||
HttpConnectionParams.setSoTimeout(params, SOCKET_READ_TIMEOUT_GET_RANDOM_SONGS);
|
||||
|
||||
List<String> parameterNames = new ArrayList<String>();
|
||||
List<Object> parameterValues = new ArrayList<Object>();
|
||||
|
||||
parameterNames.add("genre");
|
||||
parameterValues.add(genre);
|
||||
parameterNames.add("count");
|
||||
parameterValues.add(count);
|
||||
parameterNames.add("offset");
|
||||
parameterValues.add(offset);
|
||||
|
||||
Reader reader = getReader(context, progressListener, "getSongsByGenre", params, parameterNames, parameterValues);
|
||||
|
||||
try {
|
||||
return new RandomSongsParser(context).parse(reader, progressListener);
|
||||
} finally {
|
||||
Util.close(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,119 @@
|
||||
/*
|
||||
This file is part of Subsonic.
|
||||
|
||||
Subsonic is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Subsonic is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2010 (C) Sindre Mehus
|
||||
*/
|
||||
package com.thejoshwa.ultrasonic.androidapp.service.parser;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.util.ProgressListener;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
import java.nio.CharBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Joshua Bahnsen
|
||||
*/
|
||||
public class GenreParser extends AbstractParser {
|
||||
|
||||
private static final String TAG = GenreParser.class.getSimpleName();
|
||||
|
||||
public GenreParser(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public List<Genre> parse(Reader reader, ProgressListener progressListener) throws Exception {
|
||||
updateProgress(progressListener, R.string.parser_reading);
|
||||
|
||||
List<Genre> result = new ArrayList<Genre>();
|
||||
StringReader sr = null;
|
||||
|
||||
try {
|
||||
BufferedReader br = new BufferedReader(reader);
|
||||
String xml = null;
|
||||
String line = null;
|
||||
|
||||
while ((line = br.readLine()) != null) {
|
||||
if (xml == null) {
|
||||
xml = line;
|
||||
} else {
|
||||
xml += line;
|
||||
}
|
||||
}
|
||||
br.close();
|
||||
|
||||
// Replace unescaped ampersand
|
||||
xml = xml.replaceAll("&(?!amp;|lt;|gt;|#37;)", "&");
|
||||
|
||||
// Replace unescaped percent symbol
|
||||
// No replacements for <> at this time
|
||||
xml = xml.replaceAll("%", "%");
|
||||
|
||||
sr = new StringReader(xml);
|
||||
} catch (IOException ioe) {
|
||||
Log.e(TAG, "Error parsing Genre XML", ioe);
|
||||
}
|
||||
|
||||
if (sr == null) {
|
||||
Log.w(TAG, "Unable to parse Genre XML, returning empty list");
|
||||
return result;
|
||||
}
|
||||
|
||||
init(sr);
|
||||
|
||||
Genre genre = null;
|
||||
|
||||
int eventType;
|
||||
do {
|
||||
eventType = nextParseEvent();
|
||||
if (eventType == XmlPullParser.START_TAG) {
|
||||
String name = getElementName();
|
||||
if ("genre".equals(name)) {
|
||||
genre = new Genre();
|
||||
} else if ("error".equals(name)) {
|
||||
handleError();
|
||||
} else {
|
||||
genre = null;
|
||||
}
|
||||
} else if (eventType == XmlPullParser.TEXT) {
|
||||
if (genre != null) {
|
||||
String value = getText();
|
||||
if (genre != null) {
|
||||
genre.setName(value);
|
||||
genre.setIndex(value.substring(0, 1));
|
||||
result.add(genre);
|
||||
genre = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (eventType != XmlPullParser.END_DOCUMENT);
|
||||
|
||||
validate();
|
||||
updateProgress(progressListener, R.string.parser_reading_done);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
/*
|
||||
This file is part of Subsonic.
|
||||
|
||||
Subsonic is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Subsonic is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Copyright 2010 (C) Sindre Mehus
|
||||
*/
|
||||
package com.thejoshwa.ultrasonic.androidapp.util;
|
||||
|
||||
import com.thejoshwa.ultrasonic.androidapp.domain.Genre;
|
||||
import com.thejoshwa.ultrasonic.androidapp.R;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.SectionIndexer;
|
||||
import android.content.Context;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Sindre Mehus
|
||||
*/
|
||||
public class GenreAdapter extends ArrayAdapter<Genre> implements SectionIndexer {
|
||||
|
||||
// Both arrays are indexed by section ID.
|
||||
private final Object[] sections;
|
||||
private final Integer[] positions;
|
||||
|
||||
public GenreAdapter(Context context, List<Genre> genres) {
|
||||
super(context, R.layout.artist_list_item, genres);
|
||||
|
||||
Set<String> sectionSet = new LinkedHashSet<String>(30);
|
||||
List<Integer> positionList = new ArrayList<Integer>(30);
|
||||
for (int i = 0; i < genres.size(); i++) {
|
||||
Genre genre = genres.get(i);
|
||||
String index = genre.getIndex();
|
||||
if (!sectionSet.contains(index)) {
|
||||
sectionSet.add(index);
|
||||
positionList.add(i);
|
||||
}
|
||||
}
|
||||
sections = sectionSet.toArray(new Object[sectionSet.size()]);
|
||||
positions = positionList.toArray(new Integer[positionList.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] getSections() {
|
||||
return sections;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPositionForSection(int section) {
|
||||
return positions[section];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSectionForPosition(int pos) {
|
||||
for (int i = 0; i < sections.length - 1; i++) {
|
||||
if (pos < positions[i + 1]) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return sections.length - 1;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user