From 89419732ca624cd4cc91181aef1746cd82540dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Garc=C3=ADa=20Amor?= Date: Sun, 26 Jul 2015 17:03:28 +0200 Subject: [PATCH] Project updated to Android Studio - No longer use submodules - Use latest SDK - Performed an entire project cleanup --- .classpath | 9 - .gitmodules | 10 - .gradle/2.2.1/taskArtifacts/cache.properties | 1 + .../2.2.1/taskArtifacts/cache.properties.lock | Bin 0 -> 17 bytes .gradle/2.2.1/taskArtifacts/fileHashes.bin | Bin 0 -> 228635 bytes .gradle/2.2.1/taskArtifacts/fileSnapshots.bin | Bin 0 -> 1016593 bytes .../2.2.1/taskArtifacts/outputFileStates.bin | Bin 0 -> 23432 bytes .gradle/2.2.1/taskArtifacts/taskArtifacts.bin | Bin 0 -> 82344 bytes .idea/codeStyleSettings.xml | 45 - .idea/compiler.xml | 19 +- .idea/copyright/profiles_settings.xml | 4 +- .idea/dictionaries/Josh.xml | 15 - .idea/encodings.xml | 7 - .idea/gradle.xml | 21 + .idea/inspectionProfiles/Project_Default.xml | 20 - .../inspectionProfiles/profiles_settings.xml | 7 - .../libraries/pulltorefresh_pulltorefresh.xml | 9 + .idea/libraries/support_v4_18_0_0.xml | 11 + .idea/modules.xml | 12 +- .idea/scopes/scope_settings.xml | 5 - .idea/vcs.xml | 5 +- .project | 33 - Subsonic-Android.iml | 29 - UltrasSonic.iml | 19 + ant.properties | 20 - build.gradle | 15 + build.xml | 85 - debug.keystore | Bin 1267 -> 0 bytes default.properties | 11 - drag-sort-listview | 1 - drag-sort-listview.iml | 33 - gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 + gradlew.bat | 90 + import-summary.txt | 809 +++++ library/build.gradle | 22 + library/library.iml | 92 + library/src/main/AndroidManifest.xml | 8 + .../android/dslv/DragSortController.java | 468 +++ .../android/dslv/DragSortCursorAdapter.java | 241 ++ .../mobeta/android/dslv/DragSortItemView.java | 100 + .../dslv/DragSortItemViewCheckable.java | 55 + .../mobeta/android/dslv/DragSortListView.java | 3073 +++++++++++++++++ .../dslv/ResourceDragSortCursorAdapter.java | 133 + .../dslv/SimpleDragSortCursorAdapter.java | 422 +++ .../android/dslv/SimpleFloatViewManager.java | 89 + library/src/main/res/values/dslv_attrs.xml | 30 + lint.xml | 3 - local.properties | 12 +- menudrawer.iml | 27 - proguard.cfg | 49 - project.properties | 17 - pulltorefresh.iml | 27 - settings.gradle | 4 + subsonic.keystore | Bin 1204 -> 0 bytes ultraSonic/build.gradle | 25 + ultraSonic/lint.xml | 3 + .../src/main/AndroidManifest.xml | 0 .../src/main/assets}/html/en/index.html | 0 .../src/main/assets}/html/fr/index.html | 0 .../src/main/assets}/html/img/paypal.png | Bin .../src/main/assets}/html/img/ultrasonic.png | Bin .../src/main/assets}/html/style.css | 0 .../androidapp/activity/BookmarkActivity.java | 0 .../androidapp/activity/ChatActivity.java | 0 .../androidapp/activity/DownloadActivity.java | 0 .../activity/EqualizerActivity.java | 0 .../androidapp/activity/HelpActivity.java | 0 .../androidapp/activity/LyricsActivity.java | 0 .../androidapp/activity/MainActivity.java | 0 .../activity/PreferenceResultActivity.java | 0 .../activity/QueryReceiverActivity.java | 0 .../androidapp/activity/ResultActivity.java | 0 .../androidapp/activity/SearchActivity.java | 0 .../activity/SelectAlbumActivity.java | 0 .../activity/SelectArtistActivity.java | 0 .../activity/SelectGenreActivity.java | 0 .../activity/SelectPlaylistActivity.java | 0 .../androidapp/activity/SettingsActivity.java | 0 .../androidapp/activity/ShareActivity.java | 0 .../activity/SubsonicTabActivity.java | 0 .../activity/VoiceQueryReceiverActivity.java | 0 .../audiofx/EqualizerController.java | 0 .../audiofx/VisualizerController.java | 0 .../ultrasonic/androidapp/domain/Artist.java | 0 .../androidapp/domain/Bookmark.java | 0 .../androidapp/domain/ChatMessage.java | 0 .../ultrasonic/androidapp/domain/Genre.java | 0 .../ultrasonic/androidapp/domain/Indexes.java | 0 .../androidapp/domain/JukeboxStatus.java | 0 .../ultrasonic/androidapp/domain/Lyrics.java | 0 .../androidapp/domain/MusicDirectory.java | 0 .../androidapp/domain/MusicFolder.java | 0 .../androidapp/domain/PlayerState.java | 0 .../androidapp/domain/Playlist.java | 0 .../androidapp/domain/RepeatMode.java | 0 .../androidapp/domain/SearchCriteria.java | 0 .../androidapp/domain/SearchResult.java | 0 .../androidapp/domain/ServerInfo.java | 0 .../ultrasonic/androidapp/domain/Share.java | 0 .../androidapp/domain/UserInfo.java | 0 .../ultrasonic/androidapp/domain/Version.java | 0 .../provider/SearchSuggestionProvider.java | 0 .../provider/UltraSonicAppWidgetProvider.java | 0 .../UltraSonicAppWidgetProvider4x1.java | 0 .../UltraSonicAppWidgetProvider4x2.java | 0 .../UltraSonicAppWidgetProvider4x3.java | 0 .../UltraSonicAppWidgetProvider4x4.java | 0 .../receiver/A2dpIntentReceiver.java | 0 .../receiver/BluetoothIntentReceiver.java | 0 .../receiver/MediaButtonIntentReceiver.java | 0 .../service/CachedMusicService.java | 0 .../androidapp/service/DownloadFile.java | 0 .../androidapp/service/DownloadService.java | 0 .../service/DownloadServiceImpl.java | 0 .../DownloadServiceLifecycleSupport.java | 0 .../androidapp/service/JukeboxService.java | 0 .../androidapp/service/MediaStoreService.java | 0 .../androidapp/service/MusicService.java | 0 .../service/MusicServiceFactory.java | 0 .../androidapp/service/OfflineException.java | 0 .../service/OfflineMusicService.java | 0 .../androidapp/service/RESTMusicService.java | 0 .../androidapp/service/Scrobbler.java | 0 .../service/ServerTooOldException.java | 0 .../service/parser/AbstractParser.java | 0 .../service/parser/AlbumListParser.java | 0 .../service/parser/BookmarkParser.java | 0 .../service/parser/ChatMessageParser.java | 0 .../service/parser/ErrorParser.java | 0 .../service/parser/GenreParser.java | 0 .../service/parser/IndexesParser.java | 0 .../service/parser/JukeboxStatusParser.java | 0 .../service/parser/LicenseParser.java | 0 .../service/parser/LyricsParser.java | 0 .../parser/MusicDirectoryEntryParser.java | 0 .../service/parser/MusicDirectoryParser.java | 0 .../service/parser/MusicFoldersParser.java | 0 .../service/parser/PlaylistParser.java | 0 .../service/parser/PlaylistsParser.java | 0 .../service/parser/RandomSongsParser.java | 0 .../service/parser/SearchResult2Parser.java | 0 .../service/parser/SearchResultParser.java | 0 .../service/parser/ShareParser.java | 0 .../service/parser/SubsonicRESTException.java | 0 .../service/parser/UserInfoParser.java | 0 .../service/parser/VersionParser.java | 0 .../service/ssl/SSLSocketFactory.java | 0 .../service/ssl/TrustManagerDecorator.java | 0 .../service/ssl/TrustSelfSignedStrategy.java | 0 .../androidapp/service/ssl/TrustStrategy.java | 0 .../androidapp/util/AlbumHeader.java | 0 .../androidapp/util/BackgroundTask.java | 0 .../androidapp/util/CacheCleaner.java | 0 .../androidapp/util/CancellableTask.java | 0 .../ultrasonic/androidapp/util/Constants.java | 0 .../util/EntryByDiscAndTrackComparator.java | 0 .../androidapp/util/ErrorDialog.java | 0 .../ultrasonic/androidapp/util/FileUtil.java | 0 .../androidapp/util/ImageLoader.java | 0 .../ultrasonic/androidapp/util/LRUCache.java | 0 .../androidapp/util/LoadingTask.java | 0 .../androidapp/util/MergeAdapter.java | 0 .../androidapp/util/ModalBackgroundTask.java | 0 .../androidapp/util/MyViewFlipper.java | 0 .../ultrasonic/androidapp/util/Pair.java | 0 .../androidapp/util/ProgressListener.java | 0 .../androidapp/util/SackOfViewsAdapter.java | 0 .../androidapp/util/ShareDetails.java | 0 .../androidapp/util/ShufflePlayBuffer.java | 0 .../androidapp/util/SilentBackgroundTask.java | 0 .../androidapp/util/SimpleServiceBinder.java | 0 .../androidapp/util/StreamProxy.java | 0 .../util/TabActivityBackgroundTask.java | 0 .../androidapp/util/TimeLimitedCache.java | 0 .../ultrasonic/androidapp/util/TimeSpan.java | 0 .../androidapp/util/TimeSpanPicker.java | 0 .../androidapp/util/TimeSpanPreference.java | 0 .../ultrasonic/androidapp/util/Util.java | 0 .../androidapp/util/VideoPlayerType.java | 0 .../ultrasonic/androidapp/view/AlbumView.java | 0 .../androidapp/view/ArtistAdapter.java | 0 .../androidapp/view/AutoRepeatButton.java | 0 .../androidapp/view/ChatAdapter.java | 0 .../androidapp/view/EntryAdapter.java | 0 .../androidapp/view/GenreAdapter.java | 0 .../androidapp/view/PlaylistAdapter.java | 0 .../androidapp/view/PlaylistView.java | 0 .../androidapp/view/ShareAdapter.java | 0 .../ultrasonic/androidapp/view/ShareView.java | 0 .../androidapp/view/SongListAdapter.java | 0 .../ultrasonic/androidapp/view/SongView.java | 0 .../androidapp/view/UpdateView.java | 0 .../androidapp/view/VisualizerView.java | 0 .../src/main/res}/anim/push_down_in.xml | 0 .../src/main/res}/anim/push_down_out.xml | 0 .../src/main/res}/anim/push_up_in.xml | 0 .../src/main/res}/anim/push_up_out.xml | 0 .../drawable-hdpi-v11/ic_stat_ultrasonic.png | Bin .../res}/drawable-hdpi-v14/menu_arrow.png | Bin .../drawable-hdpi-v9/ic_stat_ultrasonic.png | Bin .../btn_check_off_focused_holo_dark.png | Bin .../btn_check_off_focused_holo_light.png | Bin .../drawable-hdpi/btn_check_off_holo_dark.png | Bin .../btn_check_off_holo_light.png | Bin .../btn_check_on_focused_holo_dark.png | Bin .../btn_check_on_focused_holo_light.png | Bin .../drawable-hdpi/btn_check_on_holo_dark.png | Bin .../drawable-hdpi/btn_check_on_holo_light.png | Bin .../main/res/drawable-hdpi/ic_drag_queue.png | Bin .../main/res}/drawable-hdpi/ic_launcher.png | Bin .../res}/drawable-hdpi/ic_menu_about_dark.png | Bin .../drawable-hdpi/ic_menu_about_light.png | Bin .../ic_menu_add_to_queue_dark.png | Bin .../ic_menu_add_to_queue_light.png | Bin .../drawable-hdpi/ic_menu_backward_dark.png | Bin .../drawable-hdpi/ic_menu_backward_light.png | Bin .../drawable-hdpi/ic_menu_bookmark_dark.png | Bin .../drawable-hdpi/ic_menu_bookmark_light.png | Bin .../drawable-hdpi/ic_menu_browse_dark.png | Bin .../drawable-hdpi/ic_menu_browse_light.png | Bin .../res}/drawable-hdpi/ic_menu_chat_dark.png | Bin .../res}/drawable-hdpi/ic_menu_chat_light.png | Bin .../drawable-hdpi/ic_menu_chat_send_dark.png | Bin .../drawable-hdpi/ic_menu_chat_send_light.png | Bin .../res}/drawable-hdpi/ic_menu_exit_dark.png | Bin .../res}/drawable-hdpi/ic_menu_exit_light.png | Bin .../drawable-hdpi/ic_menu_forward_dark.png | Bin .../drawable-hdpi/ic_menu_forward_light.png | Bin .../res}/drawable-hdpi/ic_menu_help_dark.png | Bin .../res}/drawable-hdpi/ic_menu_help_light.png | Bin .../res}/drawable-hdpi/ic_menu_home_dark.png | Bin .../res}/drawable-hdpi/ic_menu_home_light.png | Bin .../drawable-hdpi/ic_menu_playlists_dark.png | Bin .../drawable-hdpi/ic_menu_playlists_light.png | Bin .../drawable-hdpi/ic_menu_remove_all_dark.png | Bin .../ic_menu_remove_all_light.png | Bin .../res}/drawable-hdpi/ic_menu_save_dark.png | Bin .../res}/drawable-hdpi/ic_menu_save_light.png | Bin .../ic_menu_screen_on_off_dark.png | Bin .../ic_menu_screen_on_off_light.png | Bin .../ic_menu_search_holo_dark.png | Bin .../ic_menu_search_holo_light.png | Bin .../drawable-hdpi/ic_menu_select_all_dark.png | Bin .../ic_menu_select_all_light.png | Bin .../ic_menu_select_folder_dark.png | Bin .../ic_menu_select_folder_light.png | Bin .../drawable-hdpi/ic_menu_settings_dark.png | Bin .../drawable-hdpi/ic_menu_settings_light.png | Bin .../res}/drawable-hdpi/ic_menu_share_dark.png | Bin .../drawable-hdpi/ic_menu_share_light.png | Bin .../res}/drawable-hdpi/ic_menu_unpin_dark.png | Bin .../drawable-hdpi/ic_menu_unpin_light.png | Bin .../res}/drawable-hdpi/ic_star_full_dark.png | Bin .../res}/drawable-hdpi/ic_star_full_light.png | Bin .../drawable-hdpi/ic_star_hollow_dark.png | Bin .../drawable-hdpi/ic_star_hollow_light.png | Bin .../res}/drawable-hdpi/ic_stat_play_dark.png | Bin .../res}/drawable-hdpi/ic_stat_play_light.png | Bin .../res}/drawable-hdpi/ic_stat_ultrasonic.png | Bin .../drawable-hdpi/list_focused_holo.9.png | Bin .../drawable-hdpi/list_longpressed_holo.9.png | Bin .../list_pressed_holo_dark.9.png | Bin .../list_pressed_holo_light.9.png | Bin .../list_selector_disabled_holo_dark.9.png | Bin .../list_selector_disabled_holo_light.9.png | Bin .../media_backward_normal_dark.png | Bin .../media_backward_normal_light.png | Bin .../media_forward_normal_dark.png | Bin .../media_forward_normal_light.png | Bin .../drawable-hdpi/media_pause_normal_dark.png | Bin .../media_pause_normal_light.png | Bin .../res}/drawable-hdpi/media_repeat_all.png | Bin .../drawable-hdpi/media_repeat_off_dark.png | Bin .../drawable-hdpi/media_repeat_off_light.png | Bin .../media_shuffle_normal_dark.png | Bin .../media_shuffle_normal_light.png | Bin .../drawable-hdpi/media_start_normal_dark.png | Bin .../media_start_normal_light.png | Bin .../drawable-hdpi/media_stop_normal_dark.png | Bin .../drawable-hdpi/media_stop_normal_light.png | Bin .../media_toggle_list_normal_dark.png | Bin .../media_toggle_list_normal_light.png | Bin .../main/res}/drawable-hdpi/menu_arrow.png | Bin .../drawable-hdpi/progress_bg_holo_dark.9.png | Bin .../progress_primary_holo_dark.9.png | Bin .../progress_secondary_holo_dark.9.png | Bin .../stat_sys_download_anim0_dark.png | Bin .../stat_sys_download_anim0_light.png | Bin .../stat_sys_download_anim1_dark.png | Bin .../stat_sys_download_anim1_light.png | Bin .../stat_sys_download_anim2_dark.png | Bin .../stat_sys_download_anim2_light.png | Bin .../stat_sys_download_anim3_dark.png | Bin .../stat_sys_download_anim3_light.png | Bin .../stat_sys_download_anim4_dark.png | Bin .../stat_sys_download_anim4_light.png | Bin .../stat_sys_download_anim5_dark.png | Bin .../stat_sys_download_anim5_light.png | Bin .../main/res}/drawable-hdpi/unknown_album.png | Bin .../drawable-hdpi/unknown_album_large.png | Bin .../drawable-ldpi-v11/ic_stat_ultrasonic.png | Bin .../drawable-ldpi-v9/ic_stat_ultrasonic.png | Bin .../btn_check_off_focused_holo_dark.png | Bin .../btn_check_off_focused_holo_light.png | Bin .../drawable-ldpi/btn_check_off_holo_dark.png | Bin .../btn_check_off_holo_light.png | Bin .../btn_check_on_focused_holo_dark.png | Bin .../btn_check_on_focused_holo_light.png | Bin .../drawable-ldpi/btn_check_on_holo_dark.png | Bin .../drawable-ldpi/btn_check_on_holo_light.png | Bin .../main/res}/drawable-ldpi/ic_launcher.png | Bin .../res}/drawable-ldpi/ic_menu_about_dark.png | Bin .../drawable-ldpi/ic_menu_about_light.png | Bin .../ic_menu_add_to_queue_dark.png | Bin .../ic_menu_add_to_queue_light.png | Bin .../drawable-ldpi/ic_menu_backward_dark.png | Bin .../drawable-ldpi/ic_menu_backward_light.png | Bin .../drawable-ldpi/ic_menu_bookmark_dark.png | Bin .../drawable-ldpi/ic_menu_bookmark_light.png | Bin .../drawable-ldpi/ic_menu_browse_dark.png | Bin .../drawable-ldpi/ic_menu_browse_light.png | Bin .../res}/drawable-ldpi/ic_menu_chat_dark.png | Bin .../res}/drawable-ldpi/ic_menu_chat_light.png | Bin .../drawable-ldpi/ic_menu_chat_send_dark.png | Bin .../drawable-ldpi/ic_menu_chat_send_light.png | Bin .../res}/drawable-ldpi/ic_menu_exit_dark.png | Bin .../res}/drawable-ldpi/ic_menu_exit_light.png | Bin .../drawable-ldpi/ic_menu_forward_dark.png | Bin .../drawable-ldpi/ic_menu_forward_light.png | Bin .../res}/drawable-ldpi/ic_menu_help_dark.png | Bin .../res}/drawable-ldpi/ic_menu_help_light.png | Bin .../res}/drawable-ldpi/ic_menu_home_dark.png | Bin .../res}/drawable-ldpi/ic_menu_home_light.png | Bin .../drawable-ldpi/ic_menu_playlists_dark.png | Bin .../drawable-ldpi/ic_menu_playlists_light.png | Bin .../drawable-ldpi/ic_menu_remove_all_dark.png | Bin .../ic_menu_remove_all_light.png | Bin .../res}/drawable-ldpi/ic_menu_save_dark.png | Bin .../res}/drawable-ldpi/ic_menu_save_light.png | Bin .../ic_menu_screen_on_off_dark.png | Bin .../ic_menu_screen_on_off_light.png | Bin .../ic_menu_search_holo_dark.png | Bin .../ic_menu_search_holo_light.png | Bin .../drawable-ldpi/ic_menu_select_all_dark.png | Bin .../ic_menu_select_all_light.png | Bin .../ic_menu_select_folder_dark.png | Bin .../ic_menu_select_folder_light.png | Bin .../drawable-ldpi/ic_menu_settings_dark.png | Bin .../drawable-ldpi/ic_menu_settings_light.png | Bin .../res}/drawable-ldpi/ic_menu_share_dark.png | Bin .../drawable-ldpi/ic_menu_share_light.png | Bin .../res}/drawable-ldpi/ic_menu_unpin_dark.png | Bin .../drawable-ldpi/ic_menu_unpin_light.png | Bin .../res}/drawable-ldpi/ic_star_full_dark.png | Bin .../res}/drawable-ldpi/ic_star_full_light.png | Bin .../drawable-ldpi/ic_star_hollow_dark.png | Bin .../drawable-ldpi/ic_star_hollow_light.png | Bin .../res}/drawable-ldpi/ic_stat_ultrasonic.png | Bin .../media_backward_normal_dark.png | Bin .../media_backward_normal_light.png | Bin .../media_forward_normal_dark.png | Bin .../media_forward_normal_light.png | Bin .../drawable-ldpi/media_pause_normal_dark.png | Bin .../media_pause_normal_light.png | Bin .../drawable-ldpi/media_repeat_off_dark.png | Bin .../drawable-ldpi/media_repeat_off_light.png | Bin .../media_shuffle_normal_dark.png | Bin .../media_shuffle_normal_light.png | Bin .../drawable-ldpi/media_start_normal_dark.png | Bin .../media_start_normal_light.png | Bin .../drawable-ldpi/media_stop_normal_dark.png | Bin .../drawable-ldpi/media_stop_normal_light.png | Bin .../media_toggle_list_normal_dark.png | Bin .../media_toggle_list_normal_light.png | Bin .../stat_sys_download_anim0_dark.png | Bin .../stat_sys_download_anim0_light.png | Bin .../stat_sys_download_anim1_dark.png | Bin .../stat_sys_download_anim1_light.png | Bin .../stat_sys_download_anim2_dark.png | Bin .../stat_sys_download_anim2_light.png | Bin .../stat_sys_download_anim3_dark.png | Bin .../stat_sys_download_anim3_light.png | Bin .../stat_sys_download_anim4_dark.png | Bin .../stat_sys_download_anim4_light.png | Bin .../stat_sys_download_anim5_dark.png | Bin .../stat_sys_download_anim5_light.png | Bin .../drawable-mdpi-v11/ic_stat_ultrasonic.png | Bin .../res}/drawable-mdpi-v14/menu_arrow.png | Bin .../drawable-mdpi-v9/ic_stat_ultrasonic.png | Bin .../btn_check_off_focused_holo_dark.png | Bin .../btn_check_off_focused_holo_light.png | Bin .../drawable-mdpi/btn_check_off_holo_dark.png | Bin .../btn_check_off_holo_light.png | Bin .../btn_check_on_focused_holo_dark.png | Bin .../btn_check_on_focused_holo_light.png | Bin .../drawable-mdpi/btn_check_on_holo_dark.png | Bin .../drawable-mdpi/btn_check_on_holo_light.png | Bin .../main/res/drawable-mdpi/ic_drag_queue.png | Bin .../main/res}/drawable-mdpi/ic_launcher.png | Bin .../res}/drawable-mdpi/ic_menu_about_dark.png | Bin .../drawable-mdpi/ic_menu_about_light.png | Bin .../ic_menu_add_to_queue_dark.png | Bin .../ic_menu_add_to_queue_light.png | Bin .../drawable-mdpi/ic_menu_backward_dark.png | Bin .../drawable-mdpi/ic_menu_backward_light.png | Bin .../drawable-mdpi/ic_menu_bookmark_dark.png | Bin .../drawable-mdpi/ic_menu_bookmark_light.png | Bin .../drawable-mdpi/ic_menu_browse_dark.png | Bin .../drawable-mdpi/ic_menu_browse_light.png | Bin .../res}/drawable-mdpi/ic_menu_chat_dark.png | Bin .../res}/drawable-mdpi/ic_menu_chat_light.png | Bin .../drawable-mdpi/ic_menu_chat_send_dark.png | Bin .../drawable-mdpi/ic_menu_chat_send_light.png | Bin .../res}/drawable-mdpi/ic_menu_exit_dark.png | Bin .../res}/drawable-mdpi/ic_menu_exit_light.png | Bin .../drawable-mdpi/ic_menu_forward_dark.png | Bin .../drawable-mdpi/ic_menu_forward_light.png | Bin .../res}/drawable-mdpi/ic_menu_help_dark.png | Bin .../res}/drawable-mdpi/ic_menu_help_light.png | Bin .../res}/drawable-mdpi/ic_menu_home_dark.png | Bin .../res}/drawable-mdpi/ic_menu_home_light.png | Bin .../drawable-mdpi/ic_menu_playlists_dark.png | Bin .../drawable-mdpi/ic_menu_playlists_light.png | Bin .../drawable-mdpi/ic_menu_remove_all_dark.png | Bin .../ic_menu_remove_all_light.png | Bin .../res}/drawable-mdpi/ic_menu_save_dark.png | Bin .../res}/drawable-mdpi/ic_menu_save_light.png | Bin .../ic_menu_screen_on_off_dark.png | Bin .../ic_menu_screen_on_off_light.png | Bin .../ic_menu_search_holo_dark.png | Bin .../ic_menu_search_holo_light.png | Bin .../drawable-mdpi/ic_menu_select_all_dark.png | Bin .../ic_menu_select_all_light.png | Bin .../ic_menu_select_folder_dark.png | Bin .../ic_menu_select_folder_light.png | Bin .../drawable-mdpi/ic_menu_settings_dark.png | Bin .../drawable-mdpi/ic_menu_settings_light.png | Bin .../res}/drawable-mdpi/ic_menu_share_dark.png | Bin .../drawable-mdpi/ic_menu_share_light.png | Bin .../res}/drawable-mdpi/ic_menu_unpin_dark.png | Bin .../drawable-mdpi/ic_menu_unpin_light.png | Bin .../res}/drawable-mdpi/ic_star_full_dark.png | Bin .../res}/drawable-mdpi/ic_star_full_light.png | Bin .../drawable-mdpi/ic_star_hollow_dark.png | Bin .../drawable-mdpi/ic_star_hollow_light.png | Bin .../res}/drawable-mdpi/ic_stat_ultrasonic.png | Bin .../media_backward_normal_dark.png | Bin .../media_backward_normal_light.png | Bin .../media_forward_normal_dark.png | Bin .../media_forward_normal_light.png | Bin .../drawable-mdpi/media_pause_normal_dark.png | Bin .../media_pause_normal_light.png | Bin .../drawable-mdpi/media_repeat_off_dark.png | Bin .../drawable-mdpi/media_repeat_off_light.png | Bin .../media_shuffle_normal_dark.png | Bin .../media_shuffle_normal_light.png | Bin .../drawable-mdpi/media_start_normal_dark.png | Bin .../media_start_normal_light.png | Bin .../drawable-mdpi/media_stop_normal_dark.png | Bin .../drawable-mdpi/media_stop_normal_light.png | Bin .../media_toggle_list_normal_dark.png | Bin .../media_toggle_list_normal_light.png | Bin .../main/res}/drawable-mdpi/menu_arrow.png | Bin .../stat_sys_download_anim0_dark.png | Bin .../stat_sys_download_anim0_light.png | Bin .../stat_sys_download_anim1_dark.png | Bin .../stat_sys_download_anim1_light.png | Bin .../stat_sys_download_anim2_dark.png | Bin .../stat_sys_download_anim2_light.png | Bin .../stat_sys_download_anim3_dark.png | Bin .../stat_sys_download_anim3_light.png | Bin .../stat_sys_download_anim4_dark.png | Bin .../stat_sys_download_anim4_light.png | Bin .../stat_sys_download_anim5_dark.png | Bin .../stat_sys_download_anim5_light.png | Bin .../main/res}/drawable-nodpi/preview4x1.png | Bin .../main/res}/drawable-nodpi/preview4x2.png | Bin .../main/res}/drawable-nodpi/preview4x3.png | Bin .../drawable-xhdpi-v11/ic_stat_ultrasonic.png | Bin .../appwidget_dark_bg_trans.9.png | Bin .../res}/drawable-xhdpi-v14/menu_arrow.png | Bin .../drawable-xhdpi-v9/ic_stat_ultrasonic.png | Bin .../btn_check_off_focused_holo_dark.png | Bin .../btn_check_off_focused_holo_light.png | Bin .../btn_check_off_holo_dark.png | Bin .../btn_check_off_holo_light.png | Bin .../btn_check_on_focused_holo_dark.png | Bin .../btn_check_on_focused_holo_light.png | Bin .../drawable-xhdpi/btn_check_on_holo_dark.png | Bin .../btn_check_on_holo_light.png | Bin .../main/res/drawable-xhdpi/ic_drag_queue.png | Bin .../main/res}/drawable-xhdpi/ic_launcher.png | Bin .../drawable-xhdpi/ic_menu_about_dark.png | Bin .../drawable-xhdpi/ic_menu_about_light.png | Bin .../ic_menu_add_to_queue_dark.png | Bin .../ic_menu_add_to_queue_light.png | Bin .../drawable-xhdpi/ic_menu_backward_dark.png | Bin .../drawable-xhdpi/ic_menu_backward_light.png | Bin .../drawable-xhdpi/ic_menu_bookmark_dark.png | Bin .../drawable-xhdpi/ic_menu_bookmark_light.png | Bin .../drawable-xhdpi/ic_menu_browse_dark.png | Bin .../drawable-xhdpi/ic_menu_browse_light.png | Bin .../res}/drawable-xhdpi/ic_menu_chat_dark.png | Bin .../drawable-xhdpi/ic_menu_chat_light.png | Bin .../drawable-xhdpi/ic_menu_chat_send_dark.png | Bin .../ic_menu_chat_send_light.png | Bin .../res}/drawable-xhdpi/ic_menu_exit_dark.png | Bin .../drawable-xhdpi/ic_menu_exit_light.png | Bin .../drawable-xhdpi/ic_menu_forward_dark.png | Bin .../drawable-xhdpi/ic_menu_forward_light.png | Bin .../res}/drawable-xhdpi/ic_menu_help_dark.png | Bin .../drawable-xhdpi/ic_menu_help_light.png | Bin .../res}/drawable-xhdpi/ic_menu_home_dark.png | Bin .../drawable-xhdpi/ic_menu_home_light.png | Bin .../main/res}/drawable-xhdpi/ic_menu_pin.png | Bin .../drawable-xhdpi/ic_menu_playlists_dark.png | Bin .../ic_menu_playlists_light.png | Bin .../ic_menu_remove_all_dark.png | Bin .../ic_menu_remove_all_light.png | Bin .../res}/drawable-xhdpi/ic_menu_save_dark.png | Bin .../drawable-xhdpi/ic_menu_save_light.png | Bin .../ic_menu_screen_on_off_dark.png | Bin .../ic_menu_screen_on_off_light.png | Bin .../ic_menu_search_holo_dark.png | Bin .../ic_menu_search_holo_light.png | Bin .../ic_menu_select_all_dark.png | Bin .../ic_menu_select_all_light.png | Bin .../ic_menu_select_folder_dark.png | Bin .../ic_menu_select_folder_light.png | Bin .../drawable-xhdpi/ic_menu_settings_dark.png | Bin .../drawable-xhdpi/ic_menu_settings_light.png | Bin .../drawable-xhdpi/ic_menu_share_dark.png | Bin .../drawable-xhdpi/ic_menu_share_light.png | Bin .../drawable-xhdpi/ic_menu_unpin_dark.png | Bin .../drawable-xhdpi/ic_menu_unpin_light.png | Bin .../res}/drawable-xhdpi/ic_star_full_dark.png | Bin .../drawable-xhdpi/ic_star_full_light.png | Bin .../drawable-xhdpi/ic_star_hollow_dark.png | Bin .../drawable-xhdpi/ic_star_hollow_light.png | Bin .../drawable-xhdpi/ic_stat_ultrasonic.png | Bin .../md__list_focused_holo.9.png | Bin .../md__list_longpressed_holo.9.png | Bin .../md__list_pressed_holo_dark.9.png | Bin ...md__list_selector_disabled_holo_dark.9.png | Bin .../media_backward_normal_dark.png | Bin .../media_backward_normal_light.png | Bin .../media_forward_normal_dark.png | Bin .../media_forward_normal_light.png | Bin .../media_pause_normal_dark.png | Bin .../media_pause_normal_light.png | Bin .../res}/drawable-xhdpi/media_play_next.png | Bin .../res}/drawable-xhdpi/media_repeat_all.png | Bin .../drawable-xhdpi/media_repeat_off_dark.png | Bin .../drawable-xhdpi/media_repeat_off_light.png | Bin .../drawable-xhdpi/media_repeat_single.png | Bin .../media_shuffle_normal_dark.png | Bin .../media_shuffle_normal_light.png | Bin .../media_start_normal_dark.png | Bin .../media_start_normal_light.png | Bin .../drawable-xhdpi/media_stop_normal_dark.png | Bin .../media_stop_normal_light.png | Bin .../media_toggle_list_normal_dark.png | Bin .../media_toggle_list_normal_light.png | Bin .../main/res}/drawable-xhdpi/menu_arrow.png | Bin .../stat_sys_download_anim0_dark.png | Bin .../stat_sys_download_anim0_light.png | Bin .../stat_sys_download_anim1_dark.png | Bin .../stat_sys_download_anim1_light.png | Bin .../stat_sys_download_anim2_dark.png | Bin .../stat_sys_download_anim2_light.png | Bin .../stat_sys_download_anim3_dark.png | Bin .../stat_sys_download_anim3_light.png | Bin .../stat_sys_download_anim4_dark.png | Bin .../stat_sys_download_anim4_light.png | Bin .../stat_sys_download_anim5_dark.png | Bin .../stat_sys_download_anim5_light.png | Bin .../btn_check_off_focused_holo_dark.png | Bin .../btn_check_off_focused_holo_light.png | Bin .../btn_check_off_holo_dark.png | Bin .../btn_check_off_holo_light.png | Bin .../btn_check_on_focused_holo_dark.png | Bin .../btn_check_on_focused_holo_light.png | Bin .../btn_check_on_holo_dark.png | Bin .../btn_check_on_holo_light.png | Bin .../drawable-xxhdpi/ic_contact_picture.png | Bin .../main/res}/drawable-xxhdpi/ic_launcher.png | Bin .../drawable-xxhdpi/ic_menu_about_dark.png | Bin .../drawable-xxhdpi/ic_menu_about_light.png | Bin .../ic_menu_add_to_queue_dark.png | Bin .../ic_menu_add_to_queue_light.png | Bin .../drawable-xxhdpi/ic_menu_backward_dark.png | Bin .../ic_menu_backward_light.png | Bin .../drawable-xxhdpi/ic_menu_bookmark_dark.png | Bin .../ic_menu_bookmark_light.png | Bin .../drawable-xxhdpi/ic_menu_browse_dark.png | Bin .../drawable-xxhdpi/ic_menu_browse_light.png | Bin .../drawable-xxhdpi/ic_menu_chat_dark.png | Bin .../drawable-xxhdpi/ic_menu_chat_light.png | Bin .../ic_menu_chat_send_dark.png | Bin .../ic_menu_chat_send_light.png | Bin .../drawable-xxhdpi/ic_menu_exit_dark.png | Bin .../drawable-xxhdpi/ic_menu_exit_light.png | Bin .../drawable-xxhdpi/ic_menu_forward_dark.png | Bin .../drawable-xxhdpi/ic_menu_forward_light.png | Bin .../drawable-xxhdpi/ic_menu_help_dark.png | Bin .../drawable-xxhdpi/ic_menu_help_light.png | Bin .../drawable-xxhdpi/ic_menu_home_dark.png | Bin .../drawable-xxhdpi/ic_menu_home_light.png | Bin .../ic_menu_playlists_dark.png | Bin .../ic_menu_playlists_light.png | Bin .../ic_menu_remove_all_dark.png | Bin .../ic_menu_remove_all_light.png | Bin .../drawable-xxhdpi/ic_menu_save_dark.png | Bin .../drawable-xxhdpi/ic_menu_save_light.png | Bin .../ic_menu_screen_on_off_dark.png | Bin .../ic_menu_screen_on_off_light.png | Bin .../ic_menu_search_holo_dark.png | Bin .../ic_menu_search_holo_light.png | Bin .../ic_menu_select_all_dark.png | Bin .../ic_menu_select_all_light.png | Bin .../ic_menu_select_folder_dark.png | Bin .../ic_menu_select_folder_light.png | Bin .../drawable-xxhdpi/ic_menu_settings_dark.png | Bin .../ic_menu_settings_light.png | Bin .../drawable-xxhdpi/ic_menu_share_dark.png | Bin .../drawable-xxhdpi/ic_menu_share_light.png | Bin .../drawable-xxhdpi/ic_menu_unpin_dark.png | Bin .../drawable-xxhdpi/ic_menu_unpin_light.png | Bin .../drawable-xxhdpi/ic_star_full_dark.png | Bin .../drawable-xxhdpi/ic_star_full_light.png | Bin .../drawable-xxhdpi/ic_star_hollow_dark.png | Bin .../drawable-xxhdpi/ic_star_hollow_light.png | Bin .../media_backward_normal_dark.png | Bin .../media_backward_normal_light.png | Bin .../media_forward_normal_dark.png | Bin .../media_forward_normal_light.png | Bin .../media_pause_normal_dark.png | Bin .../media_pause_normal_light.png | Bin .../drawable-xxhdpi/media_repeat_off_dark.png | Bin .../media_repeat_off_light.png | Bin .../media_shuffle_normal_dark.png | Bin .../media_shuffle_normal_light.png | Bin .../media_start_normal_dark.png | Bin .../media_start_normal_light.png | Bin .../media_stop_normal_dark.png | Bin .../media_stop_normal_light.png | Bin .../media_toggle_list_normal_dark.png | Bin .../media_toggle_list_normal_light.png | Bin .../stat_sys_download_anim0_dark.png | Bin .../stat_sys_download_anim0_light.png | Bin .../stat_sys_download_anim1_dark.png | Bin .../stat_sys_download_anim1_light.png | Bin .../stat_sys_download_anim2_dark.png | Bin .../stat_sys_download_anim2_light.png | Bin .../stat_sys_download_anim3_dark.png | Bin .../stat_sys_download_anim3_light.png | Bin .../stat_sys_download_anim4_dark.png | Bin .../stat_sys_download_anim4_light.png | Bin .../stat_sys_download_anim5_dark.png | Bin .../stat_sys_download_anim5_light.png | Bin .../res}/drawable-xxxhdpi/ic_launcher.png | Bin .../src/main/res}/drawable/btn_bg.xml | 0 .../res}/drawable/btn_check_custom_dark.xml | 0 .../res}/drawable/btn_check_custom_light.xml | 0 .../src/main/res}/drawable/drop_shadow.xml | 0 ...lector_background_transition_holo_dark.xml | 0 ...ector_background_transition_holo_light.xml | 0 .../res}/drawable/list_selector_holo_dark.xml | 0 .../drawable/list_selector_holo_light.xml | 0 ...lector_background_transition_holo_dark.xml | 0 .../drawable/md__list_selector_holo_dark.xml | 0 .../progress_horizontal_holo_dark.xml | 0 .../res}/drawable/stat_sys_download_dark.xml | 0 .../res}/drawable/stat_sys_download_light.xml | 0 .../src/main/res}/layout-land/download.xml | 0 .../src/main/res}/layout-port/download.xml | 0 .../src/main/res}/layout/album_buttons.xml | 0 .../src/main/res}/layout/album_list_item.xml | 0 .../src/main/res}/layout/appwidget4x1.xml | 0 .../src/main/res}/layout/appwidget4x2.xml | 0 .../src/main/res}/layout/appwidget4x3.xml | 0 .../src/main/res}/layout/appwidget4x4.xml | 0 .../src/main/res}/layout/artist_list_item.xml | 0 .../src/main/res}/layout/chat.xml | 0 .../src/main/res}/layout/chat_item.xml | 0 .../main/res}/layout/chat_item_reverse.xml | 0 .../layout/download_button_bar_flipper.xml | 0 .../main/res}/layout/download_playlist.xml | 0 .../src/main/res}/layout/download_slider.xml | 0 .../src/main/res}/layout/equalizer.xml | 0 .../src/main/res}/layout/equalizer_bar.xml | 0 .../src/main/res}/layout/help.xml | 2 +- .../src/main/res}/layout/jukebox_volume.xml | 0 .../src/main/res}/layout/lyrics.xml | 0 .../src/main/res}/layout/main.xml | 0 .../src/main/res}/layout/main_buttons.xml | 0 .../src/main/res}/layout/media_buttons.xml | 0 .../src/main/res}/layout/menu_main.xml | 0 .../src/main/res}/layout/notification.xml | 0 .../main/res}/layout/notification_large.xml | 0 .../src/main/res}/layout/now_playing.xml | 0 .../main/res}/layout/playlist_list_item.xml | 0 .../src/main/res}/layout/save_playlist.xml | 0 .../src/main/res}/layout/search.xml | 0 .../src/main/res}/layout/search_buttons.xml | 0 .../src/main/res}/layout/select_album.xml | 0 .../main/res}/layout/select_album_header.xml | 0 .../src/main/res}/layout/select_artist.xml | 0 .../main/res}/layout/select_artist_header.xml | 0 .../src/main/res}/layout/select_genre.xml | 0 .../src/main/res}/layout/select_playlist.xml | 0 .../src/main/res}/layout/select_share.xml | 0 .../src/main/res}/layout/share_details.xml | 0 .../src/main/res}/layout/share_list_item.xml | 0 .../src/main/res}/layout/song_details.xml | 0 .../src/main/res}/layout/song_list_item.xml | 0 .../src/main/res}/layout/tab_progress.xml | 0 .../src/main/res}/layout/time_span_dialog.xml | 0 .../src/main/res}/layout/update_playlist.xml | 0 .../src/main/res}/layout/video_details.xml | 0 .../src/main/res}/layout/video_list_item.xml | 0 .../src/main/res}/menu/main.xml | 0 .../src/main/res}/menu/nowplaying.xml | 0 .../src/main/res}/menu/nowplaying_context.xml | 0 .../src/main/res}/menu/select_album.xml | 0 .../main/res}/menu/select_album_context.xml | 0 .../main/res}/menu/select_artist_context.xml | 0 .../res}/menu/select_playlist_context.xml | 0 .../menu/select_playlist_context_offline.xml | 0 .../main/res}/menu/select_share_context.xml | 0 .../main/res}/menu/select_song_context.xml | 0 .../src/main/res}/values-es/strings.xml | 0 .../src/main/res}/values-fr/strings.xml | 0 .../src/main/res}/values-hu/strings.xml | 0 .../src/main/res}/values/arrays.xml | 0 .../src/main/res}/values/colors.xml | 0 .../src/main/res}/values/strings.xml | 0 .../src/main/res}/values/styles.xml | 0 .../src/main/res}/values/themes.xml | 0 .../src/main/res}/xml/appwidget_info_4x1.xml | 0 .../src/main/res}/xml/appwidget_info_4x2.xml | 0 .../src/main/res}/xml/appwidget_info_4x3.xml | 0 .../src/main/res}/xml/appwidget_info_4x4.xml | 0 .../src/main/res}/xml/searchable.xml | 0 .../src/main/res}/xml/settings.xml | 0 ultraSonic/ultraSonic.iml | 94 + 748 files changed, 6020 insertions(+), 491 deletions(-) delete mode 100644 .classpath delete mode 100644 .gitmodules create mode 100644 .gradle/2.2.1/taskArtifacts/cache.properties create mode 100644 .gradle/2.2.1/taskArtifacts/cache.properties.lock create mode 100644 .gradle/2.2.1/taskArtifacts/fileHashes.bin create mode 100644 .gradle/2.2.1/taskArtifacts/fileSnapshots.bin create mode 100644 .gradle/2.2.1/taskArtifacts/outputFileStates.bin create mode 100644 .gradle/2.2.1/taskArtifacts/taskArtifacts.bin delete mode 100644 .idea/codeStyleSettings.xml delete mode 100644 .idea/dictionaries/Josh.xml delete mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/libraries/pulltorefresh_pulltorefresh.xml create mode 100644 .idea/libraries/support_v4_18_0_0.xml delete mode 100644 .idea/scopes/scope_settings.xml delete mode 100644 .project delete mode 100644 Subsonic-Android.iml create mode 100644 UltrasSonic.iml delete mode 100644 ant.properties create mode 100644 build.gradle delete mode 100644 build.xml delete mode 100644 debug.keystore delete mode 100644 default.properties delete mode 160000 drag-sort-listview delete mode 100644 drag-sort-listview.iml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 import-summary.txt create mode 100644 library/build.gradle create mode 100644 library/library.iml create mode 100644 library/src/main/AndroidManifest.xml create mode 100644 library/src/main/java/com/mobeta/android/dslv/DragSortController.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/DragSortCursorAdapter.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/DragSortItemView.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/DragSortItemViewCheckable.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/DragSortListView.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java create mode 100644 library/src/main/java/com/mobeta/android/dslv/SimpleFloatViewManager.java create mode 100644 library/src/main/res/values/dslv_attrs.xml delete mode 100644 lint.xml delete mode 100644 menudrawer.iml delete mode 100644 proguard.cfg delete mode 100644 project.properties delete mode 100644 pulltorefresh.iml create mode 100644 settings.gradle delete mode 100644 subsonic.keystore create mode 100644 ultraSonic/build.gradle create mode 100644 ultraSonic/lint.xml rename AndroidManifest.xml => ultraSonic/src/main/AndroidManifest.xml (100%) rename {assets => ultraSonic/src/main/assets}/html/en/index.html (100%) rename {assets => ultraSonic/src/main/assets}/html/fr/index.html (100%) rename {assets => ultraSonic/src/main/assets}/html/img/paypal.png (100%) rename {assets => ultraSonic/src/main/assets}/html/img/ultrasonic.png (100%) rename {assets => ultraSonic/src/main/assets}/html/style.css (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/ChatActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/LyricsActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/audiofx/EqualizerController.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/audiofx/VisualizerController.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Artist.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/ChatMessage.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Indexes.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/JukeboxStatus.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Lyrics.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/MusicFolder.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/PlayerState.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Playlist.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/RepeatMode.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/SearchCriteria.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/SearchResult.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/ServerInfo.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Share.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/UserInfo.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/domain/Version.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/provider/SearchSuggestionProvider.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x1.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x2.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x3.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x4.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/receiver/A2dpIntentReceiver.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/receiver/BluetoothIntentReceiver.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/receiver/MediaButtonIntentReceiver.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/DownloadFile.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/MediaStoreService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/MusicServiceFactory.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/OfflineException.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/OfflineMusicService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/Scrobbler.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/ServerTooOldException.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/AbstractParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/ChatMessageParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/ErrorParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/GenreParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/IndexesParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/JukeboxStatusParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/LicenseParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/LyricsParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicFoldersParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistsParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/SubsonicRESTException.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/UserInfoParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/parser/VersionParser.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/ssl/SSLSocketFactory.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustManagerDecorator.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustSelfSignedStrategy.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustStrategy.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/AlbumHeader.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/BackgroundTask.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/CacheCleaner.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/CancellableTask.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/Constants.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/EntryByDiscAndTrackComparator.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/ErrorDialog.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/FileUtil.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/ImageLoader.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/LRUCache.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/LoadingTask.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/MergeAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/ModalBackgroundTask.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/MyViewFlipper.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/Pair.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/ProgressListener.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/SackOfViewsAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/ShareDetails.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/ShufflePlayBuffer.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/SilentBackgroundTask.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/SimpleServiceBinder.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/StreamProxy.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/TabActivityBackgroundTask.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/TimeLimitedCache.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/TimeSpan.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPicker.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPreference.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/Util.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/util/VideoPlayerType.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/AlbumView.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/ArtistAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/AutoRepeatButton.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/EntryAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/GenreAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/PlaylistAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/PlaylistView.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/ShareAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/ShareView.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/SongListAdapter.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/SongView.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/UpdateView.java (100%) rename {src => ultraSonic/src/main/java}/com/thejoshwa/ultrasonic/androidapp/view/VisualizerView.java (100%) rename {res => ultraSonic/src/main/res}/anim/push_down_in.xml (100%) rename {res => ultraSonic/src/main/res}/anim/push_down_out.xml (100%) rename {res => ultraSonic/src/main/res}/anim/push_up_in.xml (100%) rename {res => ultraSonic/src/main/res}/anim/push_up_out.xml (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi-v11/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi-v14/menu_arrow.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi-v9/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_off_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_off_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_off_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_off_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_on_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_on_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_on_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/btn_check_on_holo_light.png (100%) rename res/drawable-hdpi/ic_drag_queue.9.png => ultraSonic/src/main/res/drawable-hdpi/ic_drag_queue.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_launcher.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_about_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_about_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_add_to_queue_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_add_to_queue_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_backward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_backward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_bookmark_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_bookmark_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_browse_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_browse_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_chat_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_chat_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_chat_send_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_chat_send_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_exit_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_exit_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_forward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_forward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_help_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_help_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_home_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_home_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_playlists_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_playlists_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_remove_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_remove_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_save_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_save_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_screen_on_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_screen_on_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_search_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_search_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_select_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_select_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_select_folder_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_select_folder_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_settings_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_settings_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_share_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_share_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_unpin_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_menu_unpin_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_star_full_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_star_full_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_star_hollow_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_star_hollow_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_stat_play_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_stat_play_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/list_focused_holo.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/list_longpressed_holo.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/list_pressed_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/list_pressed_holo_light.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/list_selector_disabled_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/list_selector_disabled_holo_light.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_backward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_backward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_forward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_forward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_pause_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_pause_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_repeat_all.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_repeat_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_repeat_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_shuffle_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_shuffle_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_start_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_start_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_stop_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_stop_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_toggle_list_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/media_toggle_list_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/menu_arrow.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/progress_bg_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/progress_primary_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/progress_secondary_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim0_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim0_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim1_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim1_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim2_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim2_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim3_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim3_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim4_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim4_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim5_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/stat_sys_download_anim5_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/unknown_album.png (100%) rename {res => ultraSonic/src/main/res}/drawable-hdpi/unknown_album_large.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi-v11/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi-v9/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_off_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_off_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_off_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_off_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_on_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_on_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_on_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/btn_check_on_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_launcher.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_about_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_about_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_add_to_queue_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_add_to_queue_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_backward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_backward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_bookmark_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_bookmark_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_browse_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_browse_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_chat_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_chat_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_chat_send_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_chat_send_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_exit_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_exit_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_forward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_forward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_help_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_help_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_home_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_home_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_playlists_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_playlists_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_remove_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_remove_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_save_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_save_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_screen_on_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_screen_on_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_search_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_search_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_select_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_select_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_select_folder_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_select_folder_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_settings_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_settings_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_share_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_share_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_unpin_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_menu_unpin_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_star_full_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_star_full_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_star_hollow_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_star_hollow_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_backward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_backward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_forward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_forward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_pause_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_pause_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_repeat_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_repeat_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_shuffle_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_shuffle_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_start_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_start_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_stop_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_stop_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_toggle_list_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/media_toggle_list_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim0_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim0_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim1_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim1_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim2_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim2_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim3_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim3_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim4_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim4_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim5_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-ldpi/stat_sys_download_anim5_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi-v11/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi-v14/menu_arrow.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi-v9/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_off_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_off_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_off_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_off_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_on_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_on_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_on_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/btn_check_on_holo_light.png (100%) rename res/drawable-mdpi/ic_drag_queue.9.png => ultraSonic/src/main/res/drawable-mdpi/ic_drag_queue.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_launcher.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_about_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_about_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_add_to_queue_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_add_to_queue_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_backward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_backward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_bookmark_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_bookmark_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_browse_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_browse_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_chat_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_chat_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_chat_send_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_chat_send_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_exit_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_exit_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_forward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_forward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_help_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_help_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_home_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_home_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_playlists_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_playlists_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_remove_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_remove_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_save_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_save_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_screen_on_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_screen_on_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_search_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_search_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_select_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_select_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_select_folder_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_select_folder_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_settings_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_settings_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_share_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_share_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_unpin_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_menu_unpin_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_star_full_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_star_full_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_star_hollow_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_star_hollow_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_backward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_backward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_forward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_forward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_pause_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_pause_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_repeat_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_repeat_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_shuffle_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_shuffle_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_start_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_start_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_stop_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_stop_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_toggle_list_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/media_toggle_list_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/menu_arrow.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim0_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim0_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim1_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim1_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim2_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim2_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim3_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim3_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim4_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim4_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim5_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-mdpi/stat_sys_download_anim5_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-nodpi/preview4x1.png (100%) rename {res => ultraSonic/src/main/res}/drawable-nodpi/preview4x2.png (100%) rename {res => ultraSonic/src/main/res}/drawable-nodpi/preview4x3.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi-v11/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi-v14/appwidget_dark_bg_trans.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi-v14/menu_arrow.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi-v9/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_off_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_off_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_off_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_off_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_on_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_on_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_on_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/btn_check_on_holo_light.png (100%) rename res/drawable-xhdpi/ic_drag_queue.9.png => ultraSonic/src/main/res/drawable-xhdpi/ic_drag_queue.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_launcher.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_about_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_about_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_add_to_queue_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_add_to_queue_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_backward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_backward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_bookmark_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_bookmark_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_browse_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_browse_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_chat_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_chat_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_chat_send_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_chat_send_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_exit_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_exit_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_forward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_forward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_help_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_help_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_home_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_home_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_pin.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_playlists_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_playlists_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_remove_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_remove_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_save_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_save_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_screen_on_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_screen_on_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_search_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_search_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_select_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_select_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_select_folder_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_select_folder_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_settings_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_settings_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_share_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_share_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_unpin_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_menu_unpin_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_star_full_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_star_full_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_star_hollow_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_star_hollow_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/ic_stat_ultrasonic.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/md__list_focused_holo.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/md__list_longpressed_holo.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/md__list_pressed_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_backward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_backward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_forward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_forward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_pause_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_pause_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_play_next.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_repeat_all.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_repeat_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_repeat_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_repeat_single.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_shuffle_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_shuffle_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_start_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_start_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_stop_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_stop_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_toggle_list_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/media_toggle_list_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/menu_arrow.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim0_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim0_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim1_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim1_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim2_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim2_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim3_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim3_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim4_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim4_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim5_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xhdpi/stat_sys_download_anim5_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_off_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_off_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_off_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_off_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_on_focused_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_on_focused_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_on_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/btn_check_on_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_contact_picture.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_launcher.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_about_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_about_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_add_to_queue_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_add_to_queue_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_backward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_backward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_bookmark_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_bookmark_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_browse_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_browse_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_chat_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_chat_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_chat_send_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_chat_send_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_exit_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_exit_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_forward_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_forward_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_help_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_help_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_home_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_home_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_playlists_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_playlists_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_remove_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_remove_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_save_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_save_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_screen_on_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_screen_on_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_search_holo_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_search_holo_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_select_all_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_select_all_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_select_folder_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_select_folder_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_settings_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_settings_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_share_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_share_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_unpin_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_menu_unpin_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_star_full_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_star_full_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_star_hollow_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/ic_star_hollow_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_backward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_backward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_forward_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_forward_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_pause_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_pause_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_repeat_off_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_repeat_off_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_shuffle_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_shuffle_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_start_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_start_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_stop_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_stop_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_toggle_list_normal_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/media_toggle_list_normal_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim0_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim0_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim1_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim1_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim2_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim2_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim3_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim3_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim4_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim4_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim5_dark.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxhdpi/stat_sys_download_anim5_light.png (100%) rename {res => ultraSonic/src/main/res}/drawable-xxxhdpi/ic_launcher.png (100%) rename {res => ultraSonic/src/main/res}/drawable/btn_bg.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/btn_check_custom_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/btn_check_custom_light.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/drop_shadow.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/list_selector_background_transition_holo_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/list_selector_background_transition_holo_light.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/list_selector_holo_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/list_selector_holo_light.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/md__list_selector_background_transition_holo_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/md__list_selector_holo_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/progress_horizontal_holo_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/stat_sys_download_dark.xml (100%) rename {res => ultraSonic/src/main/res}/drawable/stat_sys_download_light.xml (100%) rename {res => ultraSonic/src/main/res}/layout-land/download.xml (100%) rename {res => ultraSonic/src/main/res}/layout-port/download.xml (100%) rename {res => ultraSonic/src/main/res}/layout/album_buttons.xml (100%) rename {res => ultraSonic/src/main/res}/layout/album_list_item.xml (100%) rename {res => ultraSonic/src/main/res}/layout/appwidget4x1.xml (100%) rename {res => ultraSonic/src/main/res}/layout/appwidget4x2.xml (100%) rename {res => ultraSonic/src/main/res}/layout/appwidget4x3.xml (100%) rename {res => ultraSonic/src/main/res}/layout/appwidget4x4.xml (100%) rename {res => ultraSonic/src/main/res}/layout/artist_list_item.xml (100%) rename {res => ultraSonic/src/main/res}/layout/chat.xml (100%) rename {res => ultraSonic/src/main/res}/layout/chat_item.xml (100%) rename {res => ultraSonic/src/main/res}/layout/chat_item_reverse.xml (100%) rename {res => ultraSonic/src/main/res}/layout/download_button_bar_flipper.xml (100%) rename {res => ultraSonic/src/main/res}/layout/download_playlist.xml (100%) rename {res => ultraSonic/src/main/res}/layout/download_slider.xml (100%) rename {res => ultraSonic/src/main/res}/layout/equalizer.xml (100%) rename {res => ultraSonic/src/main/res}/layout/equalizer_bar.xml (100%) rename {res => ultraSonic/src/main/res}/layout/help.xml (97%) rename {res => ultraSonic/src/main/res}/layout/jukebox_volume.xml (100%) rename {res => ultraSonic/src/main/res}/layout/lyrics.xml (100%) rename {res => ultraSonic/src/main/res}/layout/main.xml (100%) rename {res => ultraSonic/src/main/res}/layout/main_buttons.xml (100%) rename {res => ultraSonic/src/main/res}/layout/media_buttons.xml (100%) rename {res => ultraSonic/src/main/res}/layout/menu_main.xml (100%) rename {res => ultraSonic/src/main/res}/layout/notification.xml (100%) rename {res => ultraSonic/src/main/res}/layout/notification_large.xml (100%) rename {res => ultraSonic/src/main/res}/layout/now_playing.xml (100%) rename {res => ultraSonic/src/main/res}/layout/playlist_list_item.xml (100%) rename {res => ultraSonic/src/main/res}/layout/save_playlist.xml (100%) rename {res => ultraSonic/src/main/res}/layout/search.xml (100%) rename {res => ultraSonic/src/main/res}/layout/search_buttons.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_album.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_album_header.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_artist.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_artist_header.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_genre.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_playlist.xml (100%) rename {res => ultraSonic/src/main/res}/layout/select_share.xml (100%) rename {res => ultraSonic/src/main/res}/layout/share_details.xml (100%) rename {res => ultraSonic/src/main/res}/layout/share_list_item.xml (100%) rename {res => ultraSonic/src/main/res}/layout/song_details.xml (100%) rename {res => ultraSonic/src/main/res}/layout/song_list_item.xml (100%) rename {res => ultraSonic/src/main/res}/layout/tab_progress.xml (100%) rename {res => ultraSonic/src/main/res}/layout/time_span_dialog.xml (100%) rename {res => ultraSonic/src/main/res}/layout/update_playlist.xml (100%) rename {res => ultraSonic/src/main/res}/layout/video_details.xml (100%) rename {res => ultraSonic/src/main/res}/layout/video_list_item.xml (100%) rename {res => ultraSonic/src/main/res}/menu/main.xml (100%) rename {res => ultraSonic/src/main/res}/menu/nowplaying.xml (100%) rename {res => ultraSonic/src/main/res}/menu/nowplaying_context.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_album.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_album_context.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_artist_context.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_playlist_context.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_playlist_context_offline.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_share_context.xml (100%) rename {res => ultraSonic/src/main/res}/menu/select_song_context.xml (100%) rename {res => ultraSonic/src/main/res}/values-es/strings.xml (100%) rename {res => ultraSonic/src/main/res}/values-fr/strings.xml (100%) rename {res => ultraSonic/src/main/res}/values-hu/strings.xml (100%) rename {res => ultraSonic/src/main/res}/values/arrays.xml (100%) rename {res => ultraSonic/src/main/res}/values/colors.xml (100%) rename {res => ultraSonic/src/main/res}/values/strings.xml (100%) rename {res => ultraSonic/src/main/res}/values/styles.xml (100%) rename {res => ultraSonic/src/main/res}/values/themes.xml (100%) rename {res => ultraSonic/src/main/res}/xml/appwidget_info_4x1.xml (100%) rename {res => ultraSonic/src/main/res}/xml/appwidget_info_4x2.xml (100%) rename {res => ultraSonic/src/main/res}/xml/appwidget_info_4x3.xml (100%) rename {res => ultraSonic/src/main/res}/xml/appwidget_info_4x4.xml (100%) rename {res => ultraSonic/src/main/res}/xml/searchable.xml (100%) rename {res => ultraSonic/src/main/res}/xml/settings.xml (100%) create mode 100644 ultraSonic/ultraSonic.iml diff --git a/.classpath b/.classpath deleted file mode 100644 index d57ec025..00000000 --- a/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e1e7512a..00000000 --- a/.gitmodules +++ /dev/null @@ -1,10 +0,0 @@ -[submodule "menudrawer"] - path = menudrawer - url = git://github.com/SimonVT/android-menudrawer.git - branch = master -[submodule "pulltorefresh"] - path = pulltorefresh - url = git://github.com/chrisbanes/Android-PullToRefresh.git -[submodule "drag-sort-listview"] - path = drag-sort-listview - url = https://github.com/bauerca/drag-sort-listview diff --git a/.gradle/2.2.1/taskArtifacts/cache.properties b/.gradle/2.2.1/taskArtifacts/cache.properties new file mode 100644 index 00000000..9113aa8f --- /dev/null +++ b/.gradle/2.2.1/taskArtifacts/cache.properties @@ -0,0 +1 @@ +#Sun Jul 26 16:05:14 CEST 2015 diff --git a/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/.gradle/2.2.1/taskArtifacts/cache.properties.lock new file mode 100644 index 0000000000000000000000000000000000000000..0d5e2264795ad1a4697be9a847b2d638b566f790 GIT binary patch literal 17 UcmZQJ+bkjShpix<0Sx$(03^HvS^xk5 literal 0 HcmV?d00001 diff --git a/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/.gradle/2.2.1/taskArtifacts/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..e274505431e0557081bd17b2fd533d3688d4520f GIT binary patch literal 228635 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%0AIaZDIws4-~ zQT(}f^k7)m@}6GLh*$xa zt~TrFk$;2yIBEiqUXi&|Su|hTll9upjtg(ec)v z!XlDm#~pzmQ?mDZqV^8yMJN3Xjjg_pUDF~tE(_;!et*WckEjPXA}+4S@Z&$v_-LBf zgLdRc5$b3Eg}z~@&QF!R z$p86&zzy##;@zyV0P#SmmjWD5#f%*8M*UCBTLXI6j_(WeHBlW%=-mSDJ7?$ai1K3O zhcgLyVCVC~=t?vnu~@h-0jIeq_C6dxOX{%`LZC1CsD3(i3Cep!fE@5=Dz0VMjZnRT zuTp04K%+HAI@7HqP~2EA;Mv0=3$qlh5%-66Hn8GR6X&ig&4~Lf0{v$N9l2wN=;sNC z{eTZ=zMB8ny9MbF#xwXnz9qU5DtTxf$L*_t8wEJ6S=o9U=@X%z*>|%xuRF;K)hC1- ziCLU_1wX`F7~N)7U{2*X%4qAFQHk|M*-Ey78r;*PV7e!!0{PDt06)DSU*UNV==1IX%-`Uj!FT5C4xd2! zxuOhx$c(Qi3WVhN5Z9EMD-fDW~&dSu?B*)JA z0{`h`#kciBA@bwC7x>uQi@39WoW)FOwX<592wkuwGO7(snd2h@G$x3aeqi zd#s^pABt;L3H}>X)I&wFQJpBVnDV#ZvZ`S(ye*Fzl}{ztTKgVvjB6dK{o=c{B}wOtV`ZR%^xbAi@UMGftvEQcNPsw(0C&XiF`BrkbJm z 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

qVFGk9D`3dYyDtK zTpPZAbI0xPlxvxDR(NbrL!JkG$k_8!A0I4D@4B=*`kvF{Ft|U#G=2X)|2OFKtL|d( zX-@Q}15CSpLZ1h4eNLHb7H~N^YB>tGe~vv*d6V9%S^OowJv>CTL>KZ`U`tLxaGr9GXlfrq0f(6gu{bk*_#MS zM^X5NOBg)l-QX2lx7{p4;rop-IK9i%_rcRu>~VD6bp|cQ;4I@i=bQC@-vND3cPb9g3M{Pj8;8D!K)j5>Ii4%-x6(7vLGd}T z41@D_cR1R{QMVWR9^Psk{CU4v!gf;Oh9HCg}5CxLibs`O@`u&hzZIeNRO^4tH#_>V;8dAPRTG{Z;JWVfao@%fINqYyQ860vZZvD4?N$h5{N2Xegke zfQAAZ3TP;xp@4=08VYDAprL?<0vZZvD4?N$h5{N2XegkefQAAZ3jF^-fvi5zSHip8 z1pa{jNZ>vEg}~v{N$?Ib69nIb6r^yCDvaZSSP+HeCO0sxo|4^ZowoVW$km^2QA7nRIqMQ{RXWD1=cj^PG6 zPD^eadi3w$LOExtodWQb;N74;w(XmAGkBxWsp!l=4vj%$@+je=UpD>2*P@Fy&vL*Y z|71QgmBywqsWfI_v?Z6v;?T56K>YolPwcaR^9KjpEa_-LD1(>{*!z|b1Yt^)rUnjtCDBEK(Roe9=X;jT4I* zL=VO#_|&iO+UxvCW56ted`e94{nBS62eKGs1}lKZqmU`6k|a~P;gMuVSP!C@S%y*~ zDG>K>OP178gO2Bd(?LRsoYWKLOkq92pmBm} z4qPq`QtEsq4c;EJ($%G+Y@WPpCOT_PQ$Rr`1-HG~ZohPjK_~F%zx+lr^4%QE8H{jf zdG3y!6+9^OhW_33l#vAYy$o16T^RPab8X85z$bU%Q#pYk_*_oZ1?&ckoA58hYQpFM zK+C&JZ4rbZz5pP;fCkubjm6~zk{J{_6IygGIg%0{0sR4UuRn#y<8b+OiFZr3IhI=1 z)P8RzL9fw#SLjjLwzvOk<(Q4<&YNr6mFT-@2h<=ZDD0E`}fly z{c{>fzyV@L;O^M-PB43dxH|%<50TVIh)edCB2*H@TLgLIEm6H*L&JbYVTA1Enk0F5Pm6b4ykV77}WVAYISQn=Yp4aYJ2;;4&IU9t6#~9 zO07gCkAWj=ND$_&e!RgY);-{GV(##bam$cn%WqS*RKZK!xC=DeAw#d>5h1RpVINm2 z6^3&t!9FYw5Auh399DQZjl(C4&NaIA9(vyB)qgtl%<_Kl;CF+`A|oOZ94?FFK!r3o zj!W0|w{i$`f*h8{+l9?Hym;lWl5z2&GuYuYoHP%2Ry=Cg;k%NN!PW=k8$P=@e_6EN zz$^3a<#lP?X6Nju{3|p(=v;&-C>kW-{l&v)i`-}Blr}$18W++DxgR?J&tevAFpQvZ z(+Ij5ZA1qNicMJxGKCg_l)w-gZn@hWWt&~rpHEh-3lbO(XB`AlWM$imtnRF~2Byy% zETodcg&Nb;X&kY&Fyou0@f-@9P2-qZTOx1LBDPp*XTh7=Xw0OKB`251Ow@U*9_aco zSS((M1C!36K-vLAmQg(1ehzH~Xm;~aCSm2#E^3187#f2WNrOoZ?*j0VB>`3K4Tlu@ShJrIQHDJEbEvpZJgbbrEQ zB-8#TAZ?H=d=p9cj$NJ*o1a5FKru-RujV@%&8*kYg0gC`Hjy{$EUS$ ztD;O??|N6IoFItuaN9)!?)1B~uX*cB-KX?>*P}dlf`u9}t4|<5CPmc}3D|kE``J52 zCoeW@ytsAp`L%`xDkUeTm&}mmM{tF9;DhK;tbrkX>9e)_GP{V)ExOGP`rZ=SRA1U9o;JYrWY(n>;l!<)~+0BMcz{nTs4UOO2<# z`c{0skMYEcTWVr=Jm^6@Fr(`l?1Xjxpo%qM_Y!IPb<+js2~Y%^U4rvg|>2+xzc(w!HpWC7MUrQ-dQn zGdCJNIE3c}XE$&qxxM^^UyB^mqVsJzLtgCO-mc*}Lit1+-t5Q77uh90;8^0qkT-$f z!t(bNyipAc)}GDeuXOLrJ$kr*xH9bZGOb0Q2)75RHhRRI9(;8#9Cl6aJcD>H>Gz?j zAqP^(iaj`h&_IyGlA2r^gX8mci!mkfP#?30l}7D!JR{QXsYEcOBxCtY>fEGhckN|m zx}%my7O-8fbW)SJODuPcqDuk}_OV+_&F(ui!_WNO6VvC0IVzzkrffuW{uquM=eXZ- zm>qCox~tWM;Ptn*sYaqP9B~f^HY)HBkvR58eBiv9{ z+3+GXP9dYCn(&2a_5crdHHlim(eL`|DKY-gBx>t>y1u?7t|b~W(*kc_o-WWamV_M7u)O3h6P(QS&RFG^tyWD2M3Wq@dD*bO zO0X7p2up_i&n1U7saX6}kJO9^rbF;Z^#58a_J1hjshV8G|HbU0CYvYiBBq$UYqELD zaLnqN&09#l;Rk2)0Js&w7kGeRaf8p?O4|3RalwSl_Xps^$6$-an^yMuwzk#3n-X#q zlU%hgd^3ox;&3C{&bWKG0{Up6EdAqWm<)s!&{%{F?SDoF2{@_dq8x-s&Ff;Sxfdhl zAiRRgT|oCo>vM@xU2e*49pbVP5mC4+-7|Q|f47+x!DB~2m&++o7{#v?V!^*?ZVACa z^Y?GshlPK3l=~8O9TRC0dBu|*?S3DgQuX6vO4ips<*+oiZ~t>J^2JgrqkvrK-XL_- z8w>*pvP&sciz9-{p+wO*5{sh<1#3FN_kg-KxxYKO zzwZgl7%=qKklIW9Kuuo2R`3A9w@O$`#8-eap2DRA=gYZ;{5I`KNaOY&4S|EXDv*^51%3**D4M(A@V`j z??Dbo_$)sOrOUFUdLh4@`}~P9xN=$HjEj~C!S4jE?xx?{5?pj0l>OeA5XB{Vj>6hX z!WW9xVfgjq)QP|MPrqJ1qrAi2xH816D_%(TsBL|a>RNEGp&$^Hy}pzf_M&np{7a}{ z2#Nh3akvRk?;`?qJM!$skQ6{NtTle@fIVMAQs={YO&X-}8P+k+vD>grykY}$qytHcIhJLaa zUa5nQT;!e%Hr>J4T*IOv`-}fnT4YQg^4DDUdQNprN2j7w5&eg_KfCYt`o)q0w=$C{ zHkV*!<1lyXT$q`W@-C2@1eSvYxjtBu$RP#;tqKPgou+MHvU1lH*`0Br&y+NYm|Tw$ zDF$pxP+jD1gsl9 zWn5RYsO+@(unD0PBA3Ff(B@g6Cx~9dD+B^yo;--*axI~T2^17w+FQtNnc+4(#cMV- z_uLYwNC5!McDxscuw#3O6s3`Lb)vzKVA~aq>wfq!zJN&bpFOp35TIoJg5^Iz4EG0vKNU zhmxhZ@mR4J@O=LtruP~>ZDG;L%9%UxIV_b2`p@41^P64-G@#mY&}b!lJrAMPz;!56 zc|{6F=-q60xEd>)6^`7`=EoOtX4A60J^YEBMOhgqX&v&ao@#c$X*|}T%QB(Ax@8)>3&j( zd8=({yy0pZbQTk%L($BhKiiDnIeKIgJGtDq+mUZd$G|6?PKB;zixOg^(N&ujhvy{6 z{W;tw>9EOH*^jNu$`{ba4VwZLQVWEs;Yi`Q(ZZp!2Pj#H{n;OPf3S^o?O%NKz8B;9 zEA?Gq8XZ#K|qH&ULKnu`24%$opr%lK0A9+)7qTc++TMl5}jz zg{t`UcKWG%Mka)3dOPl@RJuqbi6jq7G>zlJp)hFB-=KszUz9rA>h*Fp&EFYekoEkf z)$?x3S8@2oYQD|c^C0(F8%x7bW0z}mH_u5;mCqkuP{E0CO0=koTYGBF+81~GS53KQ za-o1zJYD%J&WFy7;6nA&DdCdXWHYbu-W|#lZ}$D4W-Y5`-n=YNGO}J4P_oK(LKHD( zkG^=EF}~zFZIRK)Nsopz-`Xi(p?E?GQQ?&$y3YA|G+6iXyzA4<*O*V)F<(`L83p+Z zkyvG~F3t1XcDcUYFuBj-grZ(^7ps-0Df{hUS#{kgmQy%AFl=lHhZPYVBBo_Xz@i7{ z`U}3_*W+!|_gRUSPeDUnv=+oXj- zxMzzzuSE=STX*^5$RLn?y%(d6PRyK#D#A;|SujI>`9Pt7;6m<;iqD-lo-~b#ez;)S zLtWFe&Fag;N+RD_zStYO$4S<>@tLUrGM*84ZH z?9Vt@XQ~LhF=oPdncbex*qL5^hTQa?^ZJ=yAB}IS2rGeI6S`*cg3#>ZwPvlex6LFL z$8@po@j*q%Np=NLi)ZFT@sU~$KXLs->F3^BBRh6doj@v1@Ro5LMY5& z@oJLW^<#MYexI*14un~G#zhlVzAC5^+{C~ZsL`fNI=QV_qLPXHRXo>ZacRB@ADPvA`qBaCQkN!Z(QEhL_cqR>C)}_ zm3FFPJkdZ@Q0r}b@$2meyy8ku_%^1!{FdRXD*S}h-q>h179SG>4pGN0_3s&!Hi~k3 z(MK~gHSoA_Z;l(dkncrlUeejts_^Ms0wJ4ZrIIBS$RBF>#q(lz2y?CI4PLu@TpKbfGaJPy3~ zE7(KC*8XPkRqIouAJ|OP>7skvyKukk73mbir9$N9zZb zidMR|ObKqE_p_$;>HKZ|t^xOE#TUj6TqJu@I>k^>IPrk1AtHO+*hM*dBY$1-E6A)e zAO=*+vmq%*z=u_(Bl<>l@1dW#I_k6mp=HuJAX=5;AUFzviNo>tIxZI?i%+lYPyIQ{ zuy=r}uoE#Vm>2E4p1X+YWuA64Bg41AKbwzcX)PvitYuAi^yJ3RlYRXH+hB+vEa`{mnI zwMT|;SE9OxIB?XZUyj-{JPr=aTw{E8o4u-%!jg>~#&w31w|^WsirePS$TQJdH%2(A zih6ML33n91@bYr&$>e?d)!EE^T=(bM>~)x`6Vj`XbKj=(?BFv93@w}0@EHU^%2i_kzha?~ zD`KL%YHSY8f=Zh~qvDt8V$aN--E}~Zt1xQ7`s{!h7`ILvp^<oFS;KutGh#vBoX{Zml(E2!whhN;~SM zIYS`0#4kraL`b@^%?c8rIYR(#wsNuhO_<9fjT6Pr;A0N0<_v-4x-<1uj{?@jf-TJ% z0=g`WDIlQc41pXfQgeo&LB6);3<0@8bgStVVrE%$hCpV!VWv4lK$Xd2i00G<;hyFU z0fQzRB@yjc^E#v;!qc1~kjpjHoFR}ojU#z`g@3;gi&!*g2)Ok~J!sAlG~B3Qp`7Ln z0bE=VFOwrJw;)++(cK=+83O60ZR_bOiuya)kxtDSg1S;(nll6v3o6%>>ojKwq!gsC zC;cRpmckqu%^3oDtxBzD2(;Umk4DZAe1JCXU%>+e6<(PWIwyeXA5h2d;f%h&7L%}S5{Iaf@3UsGk6eI^Hx9J;1cT|a5yn{_{O+pePwT_ zu1KsT*CwvnutxT)$%@1gQcn`9I1|TqK4nf>+&5`ZrJn6hj(fH26?YVgB!$9;$~!Wt z9H;`CC%?k7n+)rPg?tbh zo(?qJxG?@p+@f*d_kZwN_3iU=jqKc{)+L8dqk>Q=a&Rfw=%Ji=3zi%f9!N8yt8H-U zVY8HsJJ)3IjZoVHV6P{`Emv5*7B11!U4KwXQ$Totj|O;<^>4o3AbWLo(XS8?2`lo9 z(dp#0w+99t>ktJ?Dv+Bp9(A^)i7H&ET^}9|In7)LO2}aXenS^@4U_iWKe($WD-4wV z(7LR1No_AGyy4C-d$~%l&lu_rrwuRClU!fza)hHc!20Z>>{>Y<@}#hqQy=8ycf}&#{7hDi%H}2BsFFm2g666pTgGOcrQ#gTi z3T7%A*nLe{!HRvKaIXatuzSgzmM=FD4y6fiOXFk(|pn(esh<8i2 zIhI=1)P8RzL9fyL`7jz5vyZ02XntR=w|fo{p=1K zughM4wKinL$Xy>d66SpRd3J668*l?4KGo&Qrc1}v$-G??ENIdLR zGWrBO|JBMd2VqVmG=&BT50D^xiP8F#Mw;^qHV21w9or+X0cDiyKe+^|fRjHBS#0}s zXrfBKT7t_idl_lDzFz_cFk58pHQA3SDBR-!)P+E5BDk*mo>n3h5`<3#dBdk#tUUPO zUc2(B$(KLM-nB}UKLlnGb4B?cyG^qeuU(rgF(ABDsQ)0U8KtErWG^aTzps+&S7N+a{Zdip7WNw?&s^VN*YD|pTAP{z zJZL4u;Q=;a!=<)w5M^yPhZP(_;ZWh^8#EjAUt&l>Im}0mJ3*s0GV~hG=(uf1x}ZR3 zD98*}0F6f>^O=PVd!A(Ypsf#!!-E1j9)}ekj(7ghxkk6%L(dz%`cH?RS>6vG$ljb5 zBZZ8JL~yt)jsq1+TH&~KU4JWwFek`iX}n$7e8Y=ZWG}NW8!kR{1{>*hPp z6&aaf!=bU^4m~VRG@_HSf8a*2*$}&u`F~nO+LEp9EUhf9gdi3ugr95AGkrOK@qmJr zBOH7i8~w@GZMa0Cag#KID6{Ekcz9Dki9)#;x$O(H43zq%1mhy5eeUpmTic_5R~LT6S~O7YcPEL?)3cueE4@Gk8@T=}amlN7!kbKONdTd~Cd} z@cov-)oxwQ4>w$_CFN!6hcb2;mjry>VoXUq)W_^$rBOQ_&xkbH3msyHpyAkH(uA?G z83G98yB8SUcAo5h_KwlXi_ID@Zk>F7t)cAYEESI_b}+Ze$q%V7{rp}&?Vs#c__g{? z!yS%>Q&F^;LS&cxfMbaZL*4{_3(MbA@J9B+c8a5xkgtd>W>%ToWFNM-rPnsr_uz$@ z2D0yXDh@rI?c8Ye;1He@B`^f5p-KX_m!I%!kz-nPzAb0Si{0DX<*7iyh{*?fmd}An zXCN&iQKAwV#l!9A&{lwEHy>pZRvzu57O0M)F<6n}CD*Ik8xA!NeKdP4`NOl<@5{I) zDj;iZdK>jm$Fh8ox>XPZLygJc_<~PrJKna-5toN0mOUS`%Fg%L95o_!4Xz*onTs4U zOO2<#`c{0skMYEcTdLFqxTpzEjmOT*FCW$`&-KmOfnRNW9Zso<0b;Rh5RwS2(Q>c; z*44!{^hih2{xf}LFOes|$`UW*P3&)-Y~E=1l4TFF+uncQv*q=tDv%^G1;r1?$8#ub zs5hwK249Pnb{4#;jmAv+SaNcC%tW1hbwF0&ZFqB7LG*Be^1t-i+I^W_#O4;=Z+zi? zI20iJxiI;c9HXtkh~nfV0eAXc+Sk1GrS4Puz3Wk)JHbMgJ`o-ZVK)B4Vb|o&Gl=Js zejl0|av+7Q7MzKZ6V^mDCa%#*z@~u2@*AI@j!$dhRz;b(-c?QX5G7a)(}dX_D{{I& z;W3hQ3)5py0%~D=L?s>%cFxXe6>jg)@5-?W?P6ZqHXhyZyq7$VF`bGV?sLKCN4jiX zv3@XXz1cvUJhfP54|))*fnmo3nq(a7r3y~0JuA!ib$eg#(Zl`2m0_=!X)XFhxIIV}hze_M zIHdw*2v}?}#rPvWaNbP+TR|gJPG3Kpu{>4wYNPTqqy$XS4U@4PN?@3fy;< zD;Z6O5KdgwxcY&_3bNBxRN`?Lu4aZ%E!3zcBiG<{*JR|PB~~J+pVVkFay+iYIt>j^ z{|oDLe(q3{k)uGzWEDtKO-8Qa#FRZFSM2Du5V=1B-RuNP-~od2-V+hMJt2DYfUmmX z^U+{xd82m$(;Y+p)r4BazN4nvA9`G@oz|<(kC9887Qi{lSRcO;Fa-z;paB)Kfrhp! zt`(``CZmKKb^mDb#n(dhmkHJ6ww{ASj4L9NFCp&CgNOXr&GDjMQ0jr7JAvB4LAeM^ zsF)EL@!oY%xobZ!xo@@CI*k^Qw0u#@4XfJ=ERMJHVH{p~5&Aa3J+>6N)CQw#~Ip0F?K$0~$vr41n+$`Ok4sQ@?r1z^NA zLJvPkz;lKEKJ&>%E~cQoX8~oKSL!Ya)WeELb`(0V!LJIlT5C#FQP7{J_tu7%XP1Ur z!emX#Y-Lv~Syw_NT?`M9An!FYQ3p-}AULJ> zEdS=)=VpNozfma3m9F>q3fJTy0c)oPykB?!=OFqgLQ?Pi3qkOrojVq1RNJBf5zs>n zcz|HB!jup!rveTYTP7GW0O%IFTN^=bIrQT{WPobo;P?WQcEYF;jG;k<2S|7&Cv`+w z8m5pKUBK~sdgmQ)6WXic*NN-JPFUVW5(+OCj{6z8?)VNu!>{v6!a?Hq)~BqCVh^y1 zNmebS5Ed@tOhVeRl!Go`ek^tR@7xKuF)#x^2)FJBbBVzH0@Q_SvX>SWHEW{GDx()D z#r+!8=6*6vF0B-3KwX@*HiBC6-pLdw8NB|6xKyp#vCeN$D9KW>fg?AX5x@$UBtqeh z2RYw*eR!^7jUXgJtO!mZ>;YkaLjxoWp)ZDN9{Yo%MxEEH4$&IlNcO_1qFhiP>PmGj z_%%UDK)KzOS1Tirqzu^_;(VGj)3QXNid5<{kfl{exi05547sR+I9xbso=s13@g89H zF@w&za^py1riwU5i|D%d@1V@wo%*KU7l;7|E!Sf7upZzY(-p<`+<0=X4h`t|St8_8bLQ;bf6<%eAbtTZWT z6L^Sef44YK0WAasGhns?D;rAMxi*s1*Z6|$B@@LyLv#hO&p=}Rl0vYHyI<3_%9{la zx??7qtsVD!1LU+q|D`N-LlbqTgKLFiGC2!gVwAjCdijKYW~$Pb25Nj`2fg24TB zdLfu4vlec^bkcezIo6DLiC*Pv=8{sYbXT0Tqt1WpeGsM|$Ab2tRs{&14+f#?L?90& zD4?x@DC-DoCgGSDCF7Z?El!-emOWYlizYg44F!c3Lwzzp`#{Q|HJ;!vWvVE#uM~E` zNx-GpGWy-+df&Iw|4t0ZsQv`6(CtaN!L_XrQmKjxJxB#X*^5`#!f>#T5^y`RCNMq# z5JUaJgfSvOg+~Zb;Sp$P%U)7hXlA@b3p`~cB|HN9Lr@TvIMAeZ_%WVI!K_Pei35)2 z_{m;(q>i})S>Y@WmtPS*qhCV&D3jE+t$Tc#9Fw6tRpGO7dC}oCY_`_~^NP*SCgj=c z4KJ-4xS^k1Hb4>`xyXHYY`TN7xrRkU_80%Dw8)q~laH3+{#R**j$1c$6@YNq(Ovm=};*pp=zl;EQEoiC|p>nNU1M7_)pf*l}^LE$ey&V zV{TE+0&z3A_uvVyH^h-P1ljLN)-hMz-zltHh)(t&@&MMftRY9rd(TRWbC7+bvkrX3 zz8#ZfRG|6NwQls3ab3-#veV+jCWKCiTne*A>{HVu($1E9~BWn91)m7CXc85f*AyC z3k?HgG++lnA*&>gpc)A?_eg$EgieCUnV^8kxfTx&{O_UB>IKz*2FqosQK1p|J6Qb0 zuco>pY07N!@%U2>sIVr}nqvu_H^)r66}&q?wDYyoLuafW@IV1xskCpC7C_(`oD&O^ zx|iDBu+0yCc6AutI|&vC!v$mSAv#-H)U_HCkvMpOg!l66Q8C;lSAYdwoU{sO7*$y) z)vJ&)H{E_F$;$7-axhc=uuqiTg-yNW$?Kc&7*X~1du_`Gz->iX@Bl&CyI#n|>EhLI zuaE695=KsMIy9gz571~O7vJN408#*#NrQ@p(iu?YCm!S(F(asG-&_f8H2E9Eac0x9 zy*>P$Py9HjPtkSBm%UAf&@}bJ1wPpt3>S5U{t^XUE$1V0z{z`Z;(+*ZE{1mlpH&}i zDHnIw3lSe4g+~t*#p1q;$&kH1Zn-`O+(VomHPe;-e2}c<@P_NZ(pgN54n;G2{%kXP z=jf41?BsIaZb#%Yd-bD3IGsvo28$A6qtR8H6^G{}$Nf3nCh4%rSJ^kBWF>^;{?{m3 zi2d0gcYm;rbnRb!^u8D4`Ky0J6@*0v^@mBoo~fToWB=y$S~=hGoAc-SD`ns2mX#{- z*>5*mI8=`cV~|gGhh9lYw!42pdzx9}3DgYblfns39l-1%AO&%9i>h-St9q=8`ZMzW z*{|fia{00KVpDG#EzF$>m9t~B!jS@ke8o|6p(;MToqp<`kqP0M-i|ve<*~%|!UV}W zdQhTi92X9SL4*DVokrv{YG+%$UaqG3J0lFTp1-tu-c8NZqsrHBc;Nv4a_xDLd#sJ6 zVW_doHM*PUq^8PeUy;u5m=vu&wPx*$yZx)CTr;^)z$u=teEsG_XGUcW|6FKomdPuh0n|+;ETr@<4dm778#A4^k_Kqt)24q zohRh92wNhe>ztoQgLNOzyFSf)jro)v^HoKdQIN9`N#jd-m*)9xyIkLHnA~S^LQ$`| zi)F8zE9+{FVmXD=1H;CKa99z+A!2%m1T1=BuD{@$UA4jW;nk7z^xG+4u8@i`qT)^L z{{_e}-xp6Xn$EuVZfmO|xm?@Y!_@|bblVI6tcKlhlV;G+h6kwl$X(>p9N4dE;<)sv zBVG#M^OjP%ysY2ajT57vm)OW&>|Tf|CFR#dzDpYUeT2P9{7N^``60RbKVOu%pEMz7QE{;PXjop@;Lec6wcD1u}Hoo9wsm?g4Zn=~DK z*kkY0&zajdvU^@GR&=~wuf?p*Mwt1~c1|C;!nH! zy=^~P0X~puuApAHLsmpM&NS=8$B#JK_q}m>R}=lb^`%R<=U3Xve&$yZi!NIDJp5Fn zxmSj_`fYTR(`x;~iQF41S#D8BAE7dI1~4)CzYDEhlh&;p;r5^3T3WE|4YL(NFCiiE zp+wTCaP*GVyd^ptJSb&e>uT~QZwPvlex6LFL$8@pop&G)8NU0FvwimzNe!wfPBY0O)!?bS$x&{)aVB`6Lq@i-u5ose@`X)O|m(|q}Fiq_KyQcaogM(c_upR#t0|5 zoce|<5i`8*FA4ZttgV~f0UTO2F2~B_W6Vz3OL;3okx0lMW9xdRxcWz7>XOF^mD3hR z+4SF6sFHORvJGBLGE(~}gw(}ye+bovcBZ6_^^#J5HG%NpRe?()TvK_L5j zFGd@km^oKftY|PnXy$N`Q@pBuNI_oPPwPBiPEd_YAR?pqQj&l-6_YwTl|>kacK#F++zO&LB(=P!NT{WFeoMm<7ATWnPaq#nzD{`gqlzQ7x%CYGb0 z-d72?i8^}7FX5<%1iYyD+Dcb~m zHR!P|At^}f?T(T22+@oK`Gv(QA)aJE8qJVPOA8T0N{4iwy!+EcR?vIpv`{gLY zZ4h?0@Til>9yfMTj^4;$SNsYxs|<(%>anVQahL0t>xL;0?sU`t%D!UHJRLnlom?)Q z_j+%g@v~{k_F=8>y$W+)QV^vYB!zfSkYU4Dngl#(7cjfr^n!WBtrM**FYaun8ds-A zS{GmFvhq_?=6`E)k7#YxbWBv5lWP2a(LFKD+c~nN=h=knzWuECZ(`Y>aj;em<%HIE zY&09sodz7Dj$P{CGbn8o<@BPDW@eAo&ZOXLyq`6#Pv>vzcMZ5VE50yp;38FRA_c++ zVsNYudW4+%)XwL9T<)&aC#C6B)dWniL&JfNaq-b2c6~X_$l}V~&ePso9|=AAJX$qw z77}Zs7Y8xK0zAB*U-6@lCzYKl@GN-WQ=RzD2|fLQ$?a#(U9#6;Qz`!&|__R0mzp4}P(SUZ)+3$AH$!=)$R*j+-Ngm+_SZoVj zHNm{VieLg=GXWH3izaC#Eu;VcL()h+97HU0BzDqC<(3)4OgyKhns8kt z!;X80|APmf)Hx-nIsGKzMxLlsh-Cu*r%peqhq9BN>Q#-mFQQWL;Ee>-Je{SQ9IwQ% z7{`)WGZC#Ct^9xI2$^aYS;*)AKaj}RoOzRYrCVr`HD}(&2{r6w2(G;c)Y%VAO4O{` z#;L1;o)p5>7Ubdnb&&e`zK+^{JJn94f*mF(2qsP0M$V@xzU z-bym8aA>hY<(Oy@4W_@m7xmqp-EDeY`+_B9pJAGvnD+iBvYyiF0N#PWTlY%( zJh*QpIHO$hrz1AVJ})FSP~StCQnWmVAADU-p(=Vv8y2O9~gZ6fTV~)a{2~e>FyT?ekyr zr|5#R_sUWf4#MTMNkGZePbK?#>s_Cd>2sD0-vw0!hPu63E;w1+>H#yLhuH7{!H zj67i2x($E(dt04RcxenV{vLz1wUU6vmp$OveLaY_1ce_(kOd84E+^_&Gz-xuBrfth zpZ>yfc-mxzx9^d-9uf-26UV+A^d;hw9nodu(mTIOPX2@$`ulV34KT+D{561}YJW}K zOHwbIE$+2sA51f?6VQM)GhD{2E`>dP8$@i~Y0F?x;gT(llJ%`L|6%B#)LPjf7Gi;!@Bj%4*Nno*3&#~0 zH~ez$^C!mO%4G$ZojMi?Z7${?^0hxX`t>caLVorWov@BC753&xz^@;tPW-)p`t|Y| zGzn z?Nn=1FQ~;A!4MuGK><~lMK!RPU8b;kWC=KeJ5yr~DwjTBjAJF!s(9<{Duh-7Kc1ifuew&D z0zK?+Y%*DWbiy-vG>EiK9jMtn63l>K5B8jV*|lX~#pfMsDhX*j^$PG0#ljN~_I=Vq zVLaND)adJccoDL}rw8eAJxGs3L(`Or0vQ}lQzl9zOb1OF*4{iea;3iB^@gWy>69Nl{I^JB~? zrIuB-^uiU5u?wIz+eav^@_QY^B3l`7by;GmcivRB#6r?7z4nmOsx;KG#z?}VW+M)% zm*13D2cZru>)l4INJUCgXpI|E2|-nUgaBLQy?k4IY5SUpOD^{o~z7q{ZF{f3$fS0Q9 z6HO4pVt!Ci-%g{PEOnY0cH3MU?L zH6+$bsapPXKn-&UF(0~S8*5dH1Jv0BatNbn9DFfr)^<`Ab|OXvCtZ#HsH(DfB4x1z ztmgcXT>YOfO{cWe;>d`TcS6)FzlrX3O3QDG*IZW@S5|6=0#&WP2y5a2ym(ts)rFqO z)dF0kbKUJb#prd~-G6nDs}m1xy|1c0vbtK@s46Ke*~no!r)K|hRZ*|5PE@M$S%sWI zLB0sriQ@h3?yAU@k)hqXs%)M}jEswK&AR#Ovx7^+e$BAQ#s_|-W|n6QbTemWvZ_De}LQ-Bg1dwt$Q^&jhK;jg`DRi{YtBz0x=m3k}xubYJ~a zuj=L5@{d4cdE%N`PW4LepvX!~?uZ>;Q|}b5x;T=!^iTA+o6x6;QBDh&TiHL(#63}! z1{Kb5WBG~y&7*ay3b92pw|Lb0Kb7=W7wN$Fp=(y+SCx}1vbMMrF4o{#Rl+OegJTh@ zc*92ZvMRD}8K~;anndRfm+qSV4%9_}q;71e{h3r%Nw{b%hAANNoflPQ$m-hR(46I! zDfAX-Ow8G-d6xHoW6MZYF|B}pLPvRV!zjKrqbfWls&9N_RdX_0mULB(4GuHuC!;kR zakP5fn#BExnj3KnXvxE4u*rD6IHZ!$2nvVn=`hOO#o1@9rKbyY`Z*!TGb}H;%LFGg zy)#z1WvkUIOHz;hzssM##lic3Ks7Xez(XN5>_tyu)hv_5PfQ`*rMd!tRzGN@4=AE? ze!XYaBDSI|VINAjTa%pca`(_tf4G7_Q1Xcs3DbhG2^wpVp{;;={&HZYHpK|ls92f8 zn+Me7PH9EF)|#ZAb#J3K7~eh--`C0fGuBOf03(6n_uKk^=RD zi|P7yS8>|#Z~taGE#fSj0XrYCe_wr?QxLg(P3#L;O#62_T84c6eCP*U6gwJFB|6dR z2lZiev~EG;GCUg6UMd1^=j+2_(gP)?@@X^J;VdeRY5^^Rv^usCOfH)iNDrdZsNkH} zhUbf3Px055-3eDLCXz~KiZiwBF`JWP)tAVs?(>e4bud?F3p6sQM#byyKJS^+jEa3CoL%w+|zdRvd39N-r z614P$b(hX<-zbk*aF@AhhWgRmf%fNNsRDWrd0<`Z8g_-&uLC?9;?vYZU4Hu*#1Z3n znM0+ka`@?aH+P2g17#218ZaF>ki{VLLTI5ZZb%e`jJ$!1*nJ9<%3;x|6gHcTBwbJ> z`Bem4Mji7gOCq!84s$e4zC=0-lhT$o))OWr!5JDukfHrt9(KVCZt+{jh42{RWEzu9 zXHsc1Ea6{J$eU6;C88*}V(+0-86!q4;Wm*y(iWnc#2M*~U?I9#vYEk9`=yC?#zVbY zyVS zwxoR7?HB9s1{%sz!k5$;;Y&?$Y|fgHJtRmikovE(d0* zMp}>~3$>fpsssrNR}OscLZ#2@`h3%;w!IFP%0pgB(Uq`m6K)oQPCK3wVerc#GNrNX zk*yG+Wu8~0zP_{Gx9=^}H?H27o)<8oqQ@H9`=!)@iZG$c^%7>;(;YISP#f3F-upr3 z>Fc9h{=q`jrESU-Ee_(m08^q)g>Y#2`w6v~Yakrb8dP|IpjoZn)`j1VfDPNoO?GoX5H{@f4>hlZj6 z8$=RtaO#a7z32C87kV`-XXWz_9mq@LC<1{T8jb1Cg8nZkNEng0PJbLWH=mfi z2y|F=DyHC_@@YYvLFf60(}P2JsB_S{-=C~m&L`ea3E5k9$EqS+_EN%ik^)~0h%Gq& zK@s8M!U&A`+vQX9s$*_@(ogveiJV|2d+YN$5rEgiBGTF#W(b5ek^cqaIr8oK`>Jgv zVQ%-yS)tZ@it@giC;^FZVUA>nQ=-G^TplDLuwbBEd5k-<%gWRA%7VY0TXr>a>iJb3 zJtkQ&5UymZSHtAZ z^D}D}Kl9-*4z&&K!1ybdg_X_}7Lfy_i6~L`-N(02hjd;u`_b}>qEsA(MnQxj zxRgkmkeVU^Uxu{`I{4yl#n+)h&vyDGJ(A1$m5czo2I9t(!lX0$2s8z8?CXa%WbOB~ z4k^c%w0S%Iq!MVs5Y|=*OA6Txz5R)UI`<7QHncfa^rgelg~}I-07_t36oo?-S`i{I z)g5#qhE=XKN^L!@?e;mS16&}XukJVvEwG%AXXfGR|fi3ZsRD-$0PZaR7O2yMOmrNYpGtS7YLM&?lh{NZk^Fj@G{ zW%AEET}~4yOHMJSHaT1QxkC1m?se*G#D>;F0oo_`Q4oJ!*eQ>9tw+oLXy9+>&%dU>6G=RaQwaw<_ua7G}`Ilc1pRr4W{lv9(B z3_kP>P$C8pS8`w;2xmnJYwi)}63({NcbUsg8~&@+_nNc2Q_U?E@AO%SvVtHq6!NkN%@&lbd|Jgbw~9~6DKQ+cEa8+O76Q)j`;Q)V z)YsF6_PVF*fdH#7N>~@f7e|rcv4SDn0j&k3O2r%vqRES)CI%T{Hl0F7RxIznvAj|V z5-O}IYQ=^G{CU3ROXSmqjA1WQW({fCa+t!sU})1bicSrt@oZ;UBVI63duir3uMx*K zOzV2+&i0X+ofWg;2WNQUUt?YGy62w4M7$v0ei0zhjd0Lufyz6w6sWj?c`vFP_%!TN{ z^B2owu9%XTvGVFM9s8@9!>1oS;Hd}OUAk0pUw}Oo1#W+~- zO@~s1TsDOXIkA**RxqFZ=k=pkROZfq+-mCML1D>88A2rs>APMc@i$Ht67Y+2Co;m;Wy)xqD&A$=d{>3@CWXU;eFMZnpz~;`l_CMV z2!k>oynUD6bOfdU?{zO`D&|-UtdY?3rSRD#1`SO`5!?Tn`mKV!Y51wIId=Ar%{MAR z71xrU6jsH=Mh2$mOv-Z#Z$J8yWSP$%t%QZ=XMu#+5ZdTO(vw22DtXt9%q!=2v~1ru zY<@+5W*5cLpRbd`qdD|IKK*0X#iu5(u+yJ9bK)Gw!r?!Z;GK);Auf%=2@Da_!zY|h zq~=cV=C@!$BTHXmf-=mJ$i77YhZO|{t^%r)fS1=-fX#2t)w@l)cHQb$abG2RC5T3@ zvBgXR7Ooxtkk`q$1pE>G&-JgyO$N>5@YnhYz#0L&+PcBb`*(C7`$20t=;9&8`A zQ3;%mQRc z3}G&S6oEgq55l9(;PHcnbiWgg&F4C-I-6*G;OWQ6u}V+{A|Fl(fVK^Vby2_5(`e_; z2XA5aZ(Zy+(dC&E7(g^@fagwxOcSx|_K)$zq?cLStQ`D$uD!KL_G_BbVl{;P{5hfX zPBrQOF>xpJ+2i8_PM*1X?Mv~tX-Y7OqRt766~=%LJPFJ)k>dNdReq$+$ybCXRbl>b zTgY{aR-!IO_gzp;z~6j=JOebRZuyN+yz|9<%e(}?cVBuxyQu^xy_S4QA0bwRRP$is zh>k6eoBQp2RNOe>Vzm;4p$0FC9*ZP41$HrG-_Bj$>ib)(9`he%D;)tbM{&t+|32-S z8AP}p+y1G{;YTYa7|L3f!$!cCB;dSW`1Az5zuZZUuC&}2eIZoYX(Tbfo#;5&>It#; z_%VkD>kazagWg10z8WeS!p8vx2D0zV92(_MoSYVBvbhAg5+&TTfveL zZRZYtw$&zg>7!+pc5Ii5yjKd#>+_>Wegqc~!Q-)*{3vqf%d*_O>la_VZ2b0j7WYL* zB^U@HM@7n}BMGP&Fy!ol|3}=HM^n|d{~wZ+X`dtsWz0|rNrMt8icFzU$vh94lLkeU zA_^rbN>myoQjrXq3K>gDrYKY@i8B0-eWtyS!}s~E-1~jkde-}_=bv-C_jP@)&-J;6 zJF-4)zu~4r?}dtAr~Pkt^mekbbn`R!adY-|u_1-$=DV!gVs|)v8IAd0eYY9K{r|sx zI$2yI*TiLAtj!4^h%AYZw~*L*xOo#AAPHmLuAUBF4urmGbf*&@*TAOv)aIPu@r8f< z*w-p49Ri@N(P3^VnU9)cLvwgrhp&HGuhVCGkcmmbw`2NS>S_AP$D0!=UP{>6yz|65 zr+F43w@(#owmi^&1R%jihYm`g5A_o8xO!(U?FD)#E#-Wx(~sh$3PGF#eGE?A=)iPUWCk^JpFJywwh76ul>xs^|w{0 z?}w2rj+o6NX*6Ut^F^19(gQcE1zf4iY_A>%6(|r{4ALRT>kSZFa<)24c27fhwoO`W zFSHZ@lY}ETipHUaDIopPo`?2f(5xD+@P@df{Mi7YnrMB*GoY{a7l5zu(Kq=q#Gw=DL zx=#*VXUQ}b`KJMYdJYK73N99ez8JXcb-k%UQea7LebSR2Tu)}z5C9HOBWaKls)>z- z%lk8~R6yb_4>z(K&G+e&23hNuC;s)K@-rfKU(V!g+-5Nr|I5!D^v6bb4?_IQx$O%K zR=G45eZJ>+BB1~P_MkF&I)Mk${KE3Iy8MaCP>#j5#e8gvAmR?n<*0o)RIBGXHs8|U zo?GcjZS1dw0~<0xxjjslkUT_&+%QxLY%o0ep=?{A&vtWDb8&BIHUJZDP8L{q&_TF$GYrOiE*e`T80 zi%s`$%G&Jnws3avCv=rtT6hqDlh5i1)Zh3pYf*MmNrBURNdVr5=DsvQyzQ8i=gfV< z@q-~z!W=8#Bm@6_bkxV=TDgABJ=XT+OyQGHCzoBy3Yvbir;{wwriFiFwhwrU-+S>V z`%6sB6{lnnp#c3EEGI~scw7~Ors+-nptRGrM(!fXvVH)*1(|@+LtL1edlY zzxOP4;fiSj;Qeqsq_5c^WHe}D+=ILitJBT;(#kD{O>qYR-UJm3kzDv`nb00x$~>XGbjNZ!8?X&Jmkl1t3|Z3DdNNA3QFi+Wxj) zSDs&Y0JE7MQ|>T`aRM|_P~$Y!Kp|h|ij&7OYNGzmx~y=pc3v)M2cc~Un4#vD78$rx z8fTSzdT~q#H-Pj3MOM&*#dzF+=$~g+vvm^Oj&J*X&PFvVdLUP5Lr<@M39_7#@<=oH*?$ucy`*A^2Y!GE^=Up!x=q&GcBq1 zob>Ga^RZ4gC(lGL;{|{iD37H<3_PyOmsR{&$;*ypUfYFRH}3D8KB71NHKvamc6M+jmL?#tN84jJC0LwOaIH&e7W*1CeP^J=GE^|7VmHMi@wltql9xnREec!7 zYAnG&*C^)y|6TO|vpn*jOC!XP0_$Ns>OUBz)92=BraW^<3%IrxK;@Dqy4u?~yQ2^z z#OFwt1*XrS0ryTqw0iZfkiXA7x6Cs08771O)c#rwmwQ$2x`FLTE3=lCMWhRsK zfPUSXaVDid*kpz{!~NV@OV0toE*LhZ7N(PK&sp?&^W{t@tCridDu0XuI0Xtgs6IpG zJA|=TrSkM=2ATrDbQgWNot=_|bwznOvTk;vpmz9?!OBX%dqP|q^Y1DG$PP$$N-lFc z6Pj?4G=!wyK|XC32I}u*SceV!FSWiKkp%E@U=u-yd}{g(7jc+7N79yX_?z)<-O?PP z!Q>4ze>(&+7&-f~dmOL^kh9S{#>C2oS#5~?v3E)G z25qk8J0Dri1mG#~LFk(XvJJ#)_X_{BX#%oOeyq{GCdm>G;3TB*Mubzc!aJdv7P7vs zFK~SoN7!)P`M^jM4pm@XtYl7#3@=D431Y80SDyDk^FT-Ep)~z)E&vf9MN7$7g5W~U zyM|6X)iy`EEidccEyxWbk0kpmRp_DoJ|w*`Z&8?5#tmksO%D`@x48iz9H<*WWCzp_ z0eL!yj_J%^ncv$~VARtb$NgKM(aIPhBrW2o4m~FH_hzJXR3!;C} z8GojJ7j-Ei%g>vR&gd3ak9oT}p&39}Lpdv{zZ2CMK$t)2WRi&VNW8n~o^Zc;3l}>8 z9*9EG$#k!(;zeV1-?LA3Sf(}I#aqTte^8^dd6Q@vH+Vw*#Gfm&_5K0FlY4C|KnQv}yV?o$^M7o9A zy=4-4x?u~}F1Pu6?DF~F)7P9dAz^m5@OC9E2lF6ySnI#xKCv%g-dx^H4gXmY->!d} ze$^QUBh<7H@u&A^hFi2O)q3-by<1v+gy#_eIELMxj&6m3<2eHMP1`zGx8Gf5WU%JW zzWD$yfEpCgcdyvde|qPNAA3${=WZyg_?8Sn)})hEpmaov>qF|pWu^BIR4uFQsUN*B zexDD(Vc@TU&Tu9-W6qbU*j_vt0XL)T>A_pAJ|*csFIt{gyifnrUQ^-bY% zFN|($yok#BQ-5F%-!GYC4}gI*{rmz^vc%)M#|9h(8SnO9+1Y<-|CN!S05}W1TR|z! zcwD>CO!gm!ISs1?e4}?azLo}1m?0YpH36o2>%s3Q_?S5Mc{?)gFXGb6DFKk%AUNdY z?IUyBf-i^&DtxzI_T&AkiakyM6n7MLqY!H9RUF#xa;D(bo5<`xk9gc%7THWcYeP48 z!@3#OOYykuQqEUZA+JLU-yJ&CZaQBF7@?={9Ltfqh}`=kn~NK5^_OJ}H+TfC@&>>l zsnLvB13~q=L$(R|A{;YkvoDyH9~JHF?lOI|a%dt0|26`({nvb!5Buw?ZOYZ7R6NWC zqNf5WY14WH(jHDaw#Jvu%avF9yGHDmK-nGuyass`I*y|Dm(d9p#4`MJ z=Z*aIi=A5DlC$4RRZG?Y_)4_LaYc7KP=h@q!yE6}+!^;$ghf^g;!_-_FI%HY(TN+1 z5IH(DM?c?r_@LpjHKl^5qW9g}KkdT<@Bp~AjhBUkGg%zz^m?Rhqp?&#jWMk;*TKgZ zKvISbC3Lhxsv$sJiTx^qxXQ-OXN!l#N2Oc<5N|peBDw~K$5k|Yw{~pM&W(G$@5%!? zWzA`C9wy2K$SG4o&-jlkew?RnS1oJ1==D%GQUx^4rPsAuxnAAZ+uAyoKjMc*Tkwwz zV6*}O3#2(RsuAFE9WKcU89uAdHV*$_uoB>S13;;AbsK-(fFRTPIN12E@RKLz<>DI> zjJ3S|*HJ(}iUhsUeY^975-QH9zNv8F zEV~W?P~wPjm}~%OO%UPy$yMPo!wooBGp#jw!hBLg01^lqJD^`n6%K#=QV(w|KYE@$ zLkJ25L6>0_ZnC6`awX7KZMSQO#>4`L@46^y_z!k~|2C8D&3u02utCl7tRs?xC)V=M zFj_o)8+A$K)Z5+K!pp{-+*)jVYqL0Up@eiNLxjqq32Xjf$UVB z4(!m`Af=ZiU(aA^yK&lwi(yov4)t3OZ8@>5Shd3cWsHAz)$SAk;vY&3CIU0X`0%*D z>Km17_3t>c`|BLtwPF1OfI2WNdC@lLAN|AEZ1s`rm^HgmVHEH4aNyRDDxOonJYiJ8 zvtY(8m1>@9MLwKkd5bgvs3sv3xu8dVAP@0D(&|Hpd#*+vKN_1+xoF|nAJhLq;N^kD z=amQ#D|xxOkOWv_4gX74VHnqvU-;W8{$`>{mCvSq6%3pv!i~oiH^Ac_+1+fLJC^jC z`Re)QcYoj029TSf2nzk?(Q^??uZJiG_|D$?3*Wvsy%GRTq6toLYct~OKRtX(?CM$5 zn6qO)>uh$jSAoU@*d3`}0PW{(f1skEBM&|Fdl2%c-Wz~cLb?I^fe|^;=Ds3fbx*yg zvy5kZPKt}zD{u)DnYAFO0_B@PTh{(u(=xoL+;x9q_}W0Bf79@p`83w+*wM&_X{+qRw?JJx z;y!%MQ{-)I_fL_g&o8g^@&gdKQHV$;WvC}(Pi78vS1t$}I(fq6mdN7`&j1_(PG86l zNYRa`kc7vbc*XCb^*ZVT=esU$Jzuw#@22g_No&=S4PDS7uOrsCuYSHbGIYZw5vr{R zkf5OaY|>0Arm{{fja~Qt)=;iX!3sA_!3$M#uuz4^MT_kXxzb&*^iy~I=?{gD4IqL5 zY_8g!A>wMAD46zrLR#2jFuc5@_18C>4IijDjmRL#?@PT+G*$4YvdX zhypYjG%-sXZ`(jzhx*ArkzF@3hgt(u_*d%hQU;)%ja%mw+8LyNYM1Ch)<|>M(_b|i zJ1!>zpeQI{nlSwp|59sAZexS;dQLqFd~(~H=@)XwTLQ>(hI^qj#6N@+0*|$7x zT|5e)x(1^HeUCs?*C6A;^R1POdkPEgSc@6h_Iw18rl24hITS#32eVeDqYR%z8yDD_*C2CqiW?Bb{1c_-74HpyXg4P= zR{zNiV#7H4gG}&)Qh$}i@@HC?Rhypl`0efv2EdJpw?H476p@AhH;wMEcbHVw=%2WM z;Pqo|TL4)+8WpH9lJZTU!}2WrpU&HvE~x%&tbOaqQ2?fiU<`*Sx==p08JA<1ESJ5xu$8fkUiM=_Fw+LTIO$b9^P-AzIaKlb;(+L5VR~$dkeyz zEK=cP(5&o$Zn4K#fx9XP4lG~;(ff;1)5yL#VL_P0LLp`D-jl_{NpS^6Y09nuFdJo) zw0Se3)s|;ypMAW^)pfVmF7g{RuAg>UomlWgOKQ-bYixYNZOWzc51wCUp20TEjnS9UQ4lRzS0B{lYE$FG6oQw}^=j*LqX}7uGrm8rg1pq94*@r?`$2Rrk9-ZtJg?zzvG(?fIA?C2*fQ+*euQNzfJqo z<+a{E^_H4N>d9)L{DLs2LwLy29KjbTl!efg)Vu7q=z!z8@Eg$IYV!gEj1?Dogv5Zy zUAJB0k)^A5VC(u-68oK^KLU_CVB4IyGmB`NlT0&Ce<4g71)8*#$p(NFDcv*Liq;1&R03xAv`O102NCAM!TBM-`E z=ky;R9<-PLFm2#z;p*Tb>+bDoZ$7?w)|~LD6p2-zT%H_M#3f*uIq%84cg$6L0Qdwt zfTD+EgeA8G=1H|OnY>s8Ey_5v4gfMtir5Hu@MwQ9ONTajM>JuJ2gorDXxl1Bt4%+vW7+c8iCwt9!fN^|BI6f8 zo8ysGPKTZ1zJ z#7P7YPTfwvYfBz$Urn^K-@_hhk?p&70kDUu&w{v@3)>E_)H(L*hntb|Er%%YDgd=2 za;&83X06MreEaCj4e?>ezVGbKc_!fdI%)De$Y0yS!t>|)&HfMN_q>-Yc>;jcqcL%^ zac5Wj7gh6*!kpg4TEDtvUN8YbM>s%|ViNihPKq%=^Pm=w`7?3zBDZ;dD;vsM2|CG| zP@hR)-J#vt(QCX^Jicf3SmrALL5ggQurdrk6hQs^*KfbLUfa&F^Mk@qqol%Hj{r~u zbdEE zB>~V^5_h408e|s<;Vp~Na$%!^x|TUJy7Zsg>0X`oK2ypQ0wm^`C;uw8{WjxTNriJh zOwT$`0+0hyC^P$*~DJMFwrP zj(3jR>Hu&G)Bz^beu^)|Ij?_v<%YI!_j>n)M=AgS8i9{q=I|C+Lf55(6{)}Dbl1rw z$sJNWTg`5+V(JZu0hLZplwA-c-Zoru=0Jr%NBED9?gl58SWt%`XK?gZxI$~CRi)Ig zFBN&M%TvnrEwuvFA;>mKx53bKagu{Nr z)#mrDXSbAPW%M@s*Mg2(uuP4NTGi4oy-yfws2GIf0_y10EOH_&A3t z&0Wzxsw>Fgw7x?9zpNgx^mcHzmUSS!OYH&MqL+=Qtc{<$vzxVzwX}tWhpdq^;UP-T z?c)v#FY_6fPHjA7yI_~s2 z3BZ0~)0xVX@wl@q*8bSP{k0JDszS*dv-P3@6yg!zjh=!EsR^eks?AB&yRYFF?#po} z3jnsGeaObb!^)ocY$(-oAV;gLSZ%gP;U5ip47rklaMSIwz_ed?9 z394^z$|A#v>!tXB@4K}ERZ_;ce*`u=Fg0{bfBd7XaY75k#EeI$-zVT>pxxEl!E;gIj@x3!z+B44N0N^%M5B;xu^8w^)@FB>E zN!#!#JlDp5ROgGC^O~T6Js%H6fcO~5xP`(?M998%VC3!HnN_kZt(NY^9Hx@f9m%uBikQ3C4&}he5`lf`MCRr zfa8fSJ5(P5*oH@{akzRTc9;_OI7__zTD_f7$B2E`xshWTB>-|_(qBHcnvTbP@g11Q zdq7O_%5%XQ>p%N^0VFpx-+;D*5Ms;W+UO&Y>-TrH+zPV~f{Orv5ZV#YR)EJn{a$VH zO(14}^SV>gD?EPydp%@It;Te9-+8Mf6P?>e5|2JAsgwbL15}EK2ulbcY|;N2C(yuU z_d>r=G&n#eyCiuK#S_t_1L<*PxboP3EmRqJ_D)}lnG=Arj$qMr3ZaNA>8VeY zif(+$FznLP#c_$qqk zFyd0OvISf55tVMA%na;XqB7?-P8($-mgv2_5IgA8pRl^$T_3*VOO4#Fo4oa*0008z z8Z;$8NNDpmqf(Q>B~sEVI?KdISODBR946>jRuI!sg!i9X<8&?aUIo9^H~r>(NKEI= zwB0*thY4ju7mxd1ccA+9;Eu?@50aHe4Bx8)a6%$3)Bn2>PfbClK5<>wtbf)kS%pb_ z5?o*cf+?VhD*8<}NTqXi+jA2|W}nDXft{&~=1w0|Al*A0lg2kj5LzgGY&<+k%_;Vm z95%i3==tp_y?iWpmHQ8@%X+9+rTho_eqXd`m0K@T`fHu%4$tYEv>OqT0eB_<_ z0=YcC)8V(`0Ms#1a6IWsn@{`Q8MZGfzbW}Xe9Uag9uTvlC>D*7=BZ&BlGBsLXT;nI ztBv_xx7P50H30j7qXVi)G0DRW+}k#cIpP8mTV^fYb7XkQNdTXQl+cVfdwZfABM^5Y zx>Ynn=a!jQ*QOPzi#w0L0FKwRT~kUGisH{aR$gzfHOiZD%40KtkPXKR`k@OkH3;z? z8q&|ryQj%y&3e8jyh0NId4WF(fltGSp(%$$2L?(M7Yl6>_*4Ns8tQ!853(_VZ~)3A zD}pS>>b=|^^!U(CVXrkkrD9j*0VEX&20huR93jv1Y_9z68c@f%=ciPPgOb~{t32c6 z$sDhO2^y6EXvIHiH1K1!=Jiz2JgL)b~u5rVWcbhJ-E*ZRGH0l*? z_Z5H$=toT~X*z7Hubuy@u~3dlO?`gc>C6K=0e8F0lhoHJQ{xA2+97Afo|LQ9IIDUC zfMt|p+W0wmAxwY(M(Z8q4xBmcxjN-=rP2-)&*^*0jap=Z$16x>7HF>7hg9ccwKHz6 zHS>$E@2&)(^r2EHG7eKM4bl)kEPIx7d&K$kCbsqw92Wrq5$Xt&wgO3T@!gy$lw7se zSf%FS3{64MuuO+W<8iNIJ;U;aEbhwap1EYW3lanUK`6jX3C)nX`|~bdRhAd`FSqbp z{59MTAjOBhfIdw^&*lA$3+K!=_ehwR^l*Omy^H13*E33W2tw77JZ%Jd#2Z$9?-AR5 zF_z2Svmsa)729^kpZ&n!*9KG50>2=Heg7*NtfDS#QeM#fmA5mb~S0`*kY zAc(Umr#~XN`_AvoS8=klJnjRC*_6})nN3qM8jq`Q*M}Ta#$L_({zs(I@Z!_yqw7e= zAfqG7H=vbT5vm%Vt6TQ5UiMwv@>vXkQNZDfK4C!UDtKJ!`ZXO++g5(8NLJpzg!QdE z0NsuFDJDA$^_xJF&pj(uY=5>g{?I5+l9BcK3chlV!BnV)^0zv{%c< zt2QuwfGj>-VB+bx6O-cQ{-*3#jRLs8m|Qp~zsEt?poxf@Z|a_~G6i1zpm0vs(tp#( zSdah(x3`fdp%Bi%EA8PN+iqXQ9$Fq4@clE>^aXB8KQ_%1L<*$IpT|NE1kxWi-{dkb zGBYc>eiuNXm;#;9>CAnzkj5EVQ5^=ITe@#*T+Rd#zA2Fc{t)P0>yS%)`ntGq?S+p9 z)lQ$aihTv(D-eGl{&DJ4pLpC&%Ytxs$B+-7bJ?!Ri=1wr_FCzo?Y#u! zv)E65lkcObbOa0>)o>7G+1c^IiX{Ws5TBEYiJv zw(>pzeneGLVb4QrT!=^z`%J0#_6&_LXG2#)GrxJY0QmSQD?~JuQG)?tR+}qb@nB`3 z`(r`ftgtU>5dZ`Zq79-o1(d=;xfMvxl;s>w~mpxk#uAkyRBooS_Vany) zMNPWmS5vi=trP)#A+&oUJ`v?g@VIlq?xR8W0!s@w3O+qCpsEYt7zo%zsSQ*^fezdD z1r=LIYqxI~S{9oc0^+G4IChii(*(}?W$}e;D?^o!Hoon5gRb;10j+nS<29iZcerYG zy-<8X0B%p+CI_Q$05oZozf$C2#78jr?c6Z9jDahtOa6$8d_+C~_=3+sKczyxjQk33XUy}T!@*H>`=jMV~>WIg6 zdd!QxCuc0rvmc+)zpZS?^iAW8#}8RoH{bE7O=!0yCNj(mUY9W{hWD|pc+GvRWM3@+ zGer3zor*QIG%9cAx!%8~hF|o~s$ICK4GWoxYc;rj5Ju(-3^ImojfIb>BCLq-&N^pRd9?DkMob~5nz~{I* zo}Jy70a!oz05F>&4hK+wUnFCsw#|0_NQ!*Wtd-RtFM*9s<99$;lCONjewyi|XsX$f zn05VDDMtWa1N#ZzI^H z3bbwwaRC4W;w89Pn-h99JiSoQ+>?56@wk|@i$|=62S;3%?{J8mbzt7~b#4&HRiz2r zFpzIH;c-#N7vHqw5fmI+)ckvY_x6J6tB8(ITTpwB9b9eQ%vbm+kSe01tm3%E-a*Q1 zhA+)B`tG@L+WX}w5~iiM3z2=DsK(}#J7>;hFbyt^g_K+v3mk0S+5Xgl-r zb2n4YC9A5+mTyvxi3e~YDCbAys)!5G`Fm_|spFiM!L7tr^lK<0eW)aY5DGs!n%zK05~d*+B8A!$Kz7t zUUaPE(@<)*2<~x^_vQwWsgY0_-Y`CS)A{z{=p(%Gtd2M2hx}?xnmz#_%aj-ie;k@t zYdo%vQN`fWb%XrR-$JZ|B)bj(ln|&i5fPxX-`6jx)81CK&!o(5BY({-05^aFE!rJ) zcw8hy%xnIKE{fY~>wV*IGsb|hNEA<<$WtKG5vVjkGv2xUu<=R~?8KI$+GEw}1j-S=`t8@lKX>YQdFO-Q=u% z0I?kY5R;YysKf@3yOzK$dB|I9xEk7#sG0Zi2LR-RzXb6x$c71uHQ;eoKR;;8GS=6w z6mv1`QtH^A&JNZ#9>ffYHS_5)TgN!Y5Xs;9IT_9;0oVb2 z1LQgg-PZKT3|)(N=jwt?u9P^<7LRfU%;_dArQ>nGG;%qM_odDZ+U?OoMQ8?9TZiv^SZo?n@Zh9^U@mTm&_kn!( zOMuPzy_?4@wSsR3f*E0}cmO2p1czquq)cvt_W}ut}QcYlDKH# zK1=LykB=9CkWONo^dpEo)hwZT(FZx?#@>9=U1b}!t?pbFfD57Iqp*LFEdmJ_L&hbR zAtRsaKH+Oq(5_CY-0mZtwH+% z?Fk5PlopDwJChY<-T1yCB6KvBVcHvk$D29e&yL3xI+(@T-;w%iCRy^Xv&3p90Aq)7 zkbdU^B^u#z8B3qOKK$vY;`^^2yvMIR83vGf!w31lk#JAWeo4`bAEcRvK0M;E-5Utt zO3*|B^@a`QN}zQwmwTu2JU#kHxZhu;qskwIB~nare5T04%FEo{!OF|q!v=0qhFCA} zRe8vINaxE}pP18!j+9LI3LR-@3s-Ada$-RQq660kl5u%j>1Vu?R=n@p!ZPi2z`~hO zzabXPsC0l+YU`r@j+;lTyV@jYjoA$W3OwUM2M&Jl0wqryS8GHBwro|@vETAh^izCy z!imlYcL6{!k{5bWCp@VT3@PZjEKGlt4Y^u!l^YiA5C?Dw8Uc(R4+yJSro6Q1P#!CH zJ44pDO{@UQH$=-vgrf4{~9ZzKOpyj5MCYCkgo`q4qNZ|c98Y>-r@{^LL2N3wB3bIKe_D-(q$|Z zUvWHCYyUgv=`Wno+oJ_TFWeY?@GP&z?P2i^_vByhUa@zqY1)hC_TDr_^CXL}qQ3?2 zW_(-py<=3a=q6CGhwq%Gc?pk;8}7Yx9M^MI+-v3VjaIct0C_2j_tI})g4XT1!}h@9 z;M(6m=Q!R@-2-IXEFv+b_#EwH^>|#+QtfMI__;~Jm)4o-sz>Ba-XJR1MY{Mjo9ERvlKe?vSc)_WXLvx!6AIt}H2%nakX?nIg8b#Iw|7^1w$ z4Z9>!sh~2z?RppNRlmD-)^Ziv2ME%mN0O|lL5ScAZ6khdey`<>K76e{ zCI6uvKw?I=3HT-`UP-+S%RliA5vMdNb=lTlD1G_v1b_qqz6|;a0&>FJ^wc`boK5R@ z$h9AEx_s}f2LK!1 z%^SD61mDD3>PEHu>@YC;k=-Ag%u`Ze^+;&U89)(zisTWgx~%55o~=^rYSMh5b6`!IL4@$(`kji&Vnx8J{H z@;K|thavXef^z|wC-T=P=|yjp^Zt7At>HNXsUb+CbgnXhQy_E=WPuV1n}wa`fq#s> z@`X?Lwmqm`^cp}OLl3|SFCC$3gVj!-o*Oy&mH0c_H2oO(>;wS4X^uhMh>b{Y8Jez3 zb`NP=T5+Wbw7DHM0cMi~YD0%r+>m9yZ+SS2Jzt|~)3bvq2>?C>idZ3^o1}y=JT8U5 zOTka0B)>LC=Vyk!_A>y|64ENs$}-Y0b1I*{42g7E6DiUhT=SXl9Mny+_9dK$?w$Olm+we42L$WV>2y>tox$nOGfNa|=W*pGNpV&%z?VPApd* zF8tl!h;;i;%srY3O97Y(>Ov;#K~m8OFyHW!J+3MGu%N^BK34!4A$$&^I7}9TXcI9= z%qe?Ap-L~~jn@iuRh#D}0k{s@PlI?-5Md*ql7=sx30xW2E48Q~$bn_e^!24t5<=?3 zJLb+79(JU~>Uw!IA7{^!Z8 z@wy81i_Oon!&x4uJm+x-!UjV{G zQ6B__SO^dOo6k49%EtTFyw7<>d)!ao1(30$9EB!h$K(3v@%m`&xe_b!USqE4u5(*K zO`+J?xDu)~uvqCb|E|4)d0u<5Pp(66*4LBMmvN9#iCmx|EsHj{B<#($b#`!fCwGB) zaP<2q{|;?g6<@u7eOpEofYcn06aRN=KC`#)rr%mE2guBO!v_5$R{^vH5|aBs5Pg4EOiq{FZ`PWC+z zAZfF+@?8*X_`2Qkc+UoYJK&WB^j=0t-E-3x=_&=ymm%lpX#d_UK0NLFRisJO0Z~b! z>0d_N#yn@9TdV3a+5OIJo0u*K-VxggVh=e7b{I{Pk;B1(&y6iYM2ZtPU!{;9zKTN1Y7mijSnVlJR6hzKoUk2;uoEFam?iUV zuhuPxQkzzWUz@Q&iOKDZ`ZXcxTH(2W*v+|#_ejlfvqpRlXQmjrzpYtP^ zVfh;hTRtsKj|mO3{k3whnH3fnhL90aE88d+hR6NfSQ5oNc>dP)S6{cwCu?N9#OlTn znE|2447KWyYG;t5YnIykr(-9IVlH`xU3@8v1u-PMCj3ol=EET^$uvpaRqy%av3bASL#=`W`2b-*}0?9}$?%jN}_?gr2 z(7rjvOSb%z7&kS$Cv9J`^^m3f8>yxHE0g5i$7f@P9ND+Ijeh8?!NUJgff2z_5&l<` zxlZ~#@3ZI26T4WREv{IDg@KbZpK%a1pRlGXaj~qOh7V)xYZKPfHhN2Wut*QdP>rM`z7_v}xqZKZ$8m+Ylu~B!52CG(2RuyY?Qh*xh)886)QwzT_*$ z!jKR^K3P%yp;;Mk8|&=m*7XWvs)x6%!z80XKqVbZx}7sP&(}=Ddq!GJpAUyj&C|HdNXk$@6q;i!;DIUXK&LuF+rE=+$@$Ee-K zi^opM{!>wYYD*_6*`98$b~LU3c--I5A}T4qOlt+^{*^sdDKP^Jt$}P##I`?#M25JY z$Xkm$ytG+@@vUhKg6y&u+W67)9B7wEaNL|#;{^WlVKslA>4x-~KeTv*MLq(bi*9!c^<>bRoZD;kcOLp;CBvBK9KXdR9|M4-G4qKt zq+M}lp$6wK2Qz*3g63QMKmDhQ{C@%?5+cHzC@F(=gvWK#@0HB^uIbwwKFls`nc#(m zIiVFqy4*!8(PZs|vhr{C@Z#(aNNNLM*q3rL<{hU2Y z;31PN-6NMt;Bl>Me=yo=@2_0uldoO<-ai-<2taX2a>o|sav+o2j|9&#I-e50nEt5p zxO_Pl*)7?U&@&tetYqwm7WgrCBV}wZ@-6LGCD5JiN$51z98Ay$#p6MrL#MqKFiqc zB&&Vr0Mk9aga6d?_FuvZy%BLP7v&5C^m@7*hl#IpLyP+A!qk25 zi*#)47P7Kz<@z6l5K65FY0zDQy1RGe?vGO3C4E$>ytn{UFoKmf(xNovp>DOgH(p9D z-TjJN^LXLsC9GJmH>8#{sbp)yP{wj5bs)9bh%ZT{Zy*~BxsC3FaL~-K+S?nP3v-RN z<}8g|sWuZ6T^qr0DaJ&naG2cE5&LMvi#tb5IDW7HquqwZ=R>ol$;xxp^Q5kZun4DL zBO5S;&-(9D&_BHkQ0y(fyF35^EQGm1Xu|W+?T`m9i zME<2Z<5kH#y`Wy7cq~~sRZF3KHazYrB>wVby=u#2i)R;?y5On1+R~w9te-C6y~@;))n^Sg6Vpe%?1H@EX*7Q3UqV3 zOcPGYKN(iFhE2z8$2_^`1FQ~`^lr*y2`l_aq{U+>BaOi~bmkm|Ls0j?!c7x(R>gC{wYg&?#ABD!@+-iXOuJI#hdYQ1VS?W z<)M)7V2G@@%-apki_@&Ih{z~7m=KX6y+AgH)t2(>g;y8+-QaV21{O68_(=3M4CL%O zVGsW;=4@wqh1_fX(DJ4X_Es!{4eGw&#|0_D23jFIFU{^%QQa4_dG9W9+&Y0p{(!J} z#E22~Of&UWjUhITwJsIcQd(YKJb}drB%%ZTFNo}S;(yxcy1`__U`OQY0w(AF^H|&$ zD%emSrK8*z9`|h8ZYFpsOHW+n?4TY zr}=cKjfB*22<;6Cbzc3z=ImMi%Z-YHs^!?Ffuxo&bQ(`FE{Jh&G9y!I=|NsD&8lVt z8D0!xp)@*$pkKr9){?-LeHH4KNo9y&VvH-r;=&N6#!1-&q$u*;l{x>i?wxmRk82;@ z#Y7!O8yWd*2=h|b3TG%2c{cQX*8K|}XNrmeYBA$kmMp0dm7?P|)e(l1Uw-SXxh^6cL?3&Z{$qPtC* z_Th2gyLXl_;qQz=4#y?`Wevlw z|Crp2MZf>C;$q5~$V|P4qOqVfoYj2~EFuk>CfHkeAl~YQyz(DxzRA7uEuMcCx8gEh zJuD~!`9MgSnDXf$tE@~GwxIKT>f7ZKDk~~3VZo$mD(STKAxO5?{M?#n5{Vnn8|1`P z*njz_9c)uqJSgp$BsT2oZEoS=;pPkPRl?)W-zlB{<*2+#(@y(}=QXPJSm?v>NhnF* zWN(~8oG0?iRM$02zd1Wt-qU{hAQtiz>BG_I=g4(!JhpifpHFZqyUb?REA+~Fi`l)= zKN>Q1SZkt`#uI4h%>C)rk$Y=pZLy#S2m~dEU^?PLiEDu6*0^iVMwgzLaUTEv3yY)_ zMW|?!(p~&(R%ahyd5Y;6+v~%g#Y-`Xg|PJ_T3KnwHz>$On5<$8$`F=Q`r4^gA|D}L z#fF7WLr&JNShHI7yVr%db}b<$;>UTlnD!6Ka@vU5_NH3_vU{IPwR+FX_8iC-8hlU8^9 z#_n8GbE|VYz5X^IYyOrScczS)uNcGv;?da*DV3Puet6syzD|7SY{5~#jdkTAk{h04 z;(su5k?)LBb3@?Oy$f57)s+_1G_Y~K+McER6$6V$EsZ3pe1uJfBz6;BH1aVbBD`2n zAi-?q$@@%LH+9I7r>7K_HMOTkXP?PCd9UlurYIYx&-ffIX)51 zfElT{j?duw0!g(a$|E7rre}}kf*Y70vc+rSPFgOwi$&%#kqc0x2jo4PWm6RO=sU;L z3$uO&r!-)ZxlltI9Bygo$-aknm&*=k#+c8;u{ssBFZ`#Kz*C2_@s=cFGlYeuGjRnJ z9yjFTT|R5WtM_#WxCcd(J@#P%fH3{|zd5efx47F!w@6eUxVo&lwKu^31$G^zld2d9 z$4Yw{rYlogATdv9<9nZl8s3-|Wyx>XA1@R*vV3s?Zr+91&$6qS@tDL_BI;0Sh#T!J zBD7|HYGUW(FVRdFq3%yCk2eD(X-GYeTs${NN^*oo&C4p>7XwE_a2jpPJUq5LU_r4_ zFf>`CCgC~MOU&jcY=?{VIO<0I*LI77HzIhF%^Il|^7};Y);|1HKbEaZXiMPh6fDZF zG@v-){rPs;2JvDIU%jDyWi_ffb5>#T$q@N1h4@TJa3KqxOpUfg{ew0)Egl#@!C%DW zwot5Wg3_eZUA6hhf#NIgHT~n4-t1fpaAX7aHp1%@;q+Q23XB*rAyz!gh8X}{e+eRJZ_|fxA|nU#qE6a z5y@LlRrfLJq(PsGI^9MkM|j-Vu*-)w`Z|<+&yU#ns)%_d7NQagCsB)Ws3(IY^yT^* z^e^3YNjs-8koMy*7EA!PD^!d_O(RoJhsQnpEKwzU<)dKxpQZcn2B$g$jCK^I*N=*z z=-GSDgwWZjH+3;G~fR2*dFWoE3UEne#7(QJr99&5`N62$FR?NybhSd5?Z1`Sk48_NQ0a6NB({>h~9ZaM@0mabdvn}-~?*I?wu2} zRl`OC)fJwz@Y>#)^KVOJr#2{3wom&M6&`nY2agh;>6wln8k)a1Hu`MC0)b#dqMuSC z-YUl9vUg+`ZYf>;*yEUgyBhDpUv=PfN}31b#;K*9hnqLy1xGIr3s+AEF9%fqL~Mn8 zV<5XEk5{hEOs;)9-;qu4{%IZYfBKFvC7_JoLiVL~i!!X#rTm^1tSWvsdoCu;M6hYo z|B8sZ93I!aqs>1rvDbY@aBku}zCwO1cqW;s5ROOM<3a%fXq8ipo!GZHgTOpv%>Z8W zCg4pU((Y~^UNrBY&I~;KnrE$B-^O}2``hB9Mp#5w@}4l=v0%fdd@I6QK7DVw;F5~;#Q{)ZjC9ooEDnT9QsB+shy&%TRH>H+ z^@%z$tYVP)5|N9=hlA6Bsrno7xOYz)6%Kjr$z%Rua)|B5MHMVkaB^&eKO8#jQVBQY zKW4MJe^EEXvLnOH?3?y1#o!AP9^JI?GWXo?X-?T`4}U?p=q9Ruo$IZE#YxNBUY^3e za)&Sx;oz%6@8Msc_8STo*9uwsPfr?59Ye_E60S{J+7WA!tnWHK z9UV5F=TJ^$nEdNCVx7BZZqc3Y%}nn;3^gUP;M_ z9t2pfC1ofS#P)P{An)A5;|hN`#(Z2B&ROB!*#7>xP68$^gXFt`;~O1mF#7Q^Ss!2h zQt4HEpZlIhb^s@mIMRCjNzuuOZ0MQDNT`o9!S&+Lw0+-}*Ikgd#LP`V8peyqT?#$A>-opg zkaliGb*)zQW-O#aqC?Wvz9~+L$2CStJaj+LWxU!vFn*(Icmu!*6*3v8v`wMf!6Byv zS?%yZmM1D0I>6r@gkU*6o zcdlOJ+C{3{CEh*GI*kRlgW-xk5nh2{>3jxFUaX&LD&JTiFi>C$4#UC&sWm53f=>Hd zFCG_u+-XPO*yv053$dbCjmKKCpjG2HChfCYme95c-y5wcF8JmK_luQWvle7MSNl|{ z_Xi6Wj0!qLi$~a%Ns9l~T!Wo+MudVI!~_|WvA`)rjGo-!7fW8fR&(6LQbFNyzRtI< zC0JM$e6XpM3_@jE%D13?Q~%PVvz<9FfT6+M(vDbFAjfH|4-3RUmnWW0yU@ux+Pp0S3)4q4RGN1Vq1o#m zSKs5bfBi6Pn_aQ37y~AB3t{{J$7td}#7ADGk`g<0k(SDUW}eaiG2$bNSJ2j`H&?4S zNyT0&)c)A6Zr)G{zIH_vK42zDRAb#d%&i?f$NNW#e2^HBh@=pY3!WME|I} z77M&oJB)=8O3Ml-ifx3qRiA2c4>EjgKU{fNqnk%~BNpdE1pvfgCp8M-aj|@mPH>J# zN#?;&)|2hR0~nF#-Ys%WcnbhiZmC@jfYeRAxu0VkHzr2 z$Uf)u_4K)HtX9ppKR&}ElcwQ+@bh>`dw$^h)yC~S&laI~qe3!!S+p<=d@o_9#i(nrrSZ3|^I+pD0}l6YsqWP!Am+0HE>( z2UlA+^A&!iLWyg{>b=j)%IE&9EI+b&^guQij1&ct=pJcG<_sN@eKBTMe2p*orgHFu z%{99*!vvJv??wnKNJ~$$e{4CkFz|ZCiY*J(!kwRE0Sc&;)r&gpgFM$=nQ*nC3(YJh z5-+~_Y*LQI;#@GfB9Dws66yN&q{=IHzu(r*eo}b#x)*7fus-62(NCq3(16F4d+rr) zm$u*dq$O7BG=5nR777G{lTy^>3GL>D=F;=J!*$vvX=C@?O4;lWnPOr8=ynAgQkIXj zvx0l6zf?5083YLKJ$K2Xv=sZiV#4aiHy7Nm{mKh&&ffT#`K4057bXFbZ2JTw^B5OM zo!xw?8Vw%z?dYc&SDw3F*cm09S1P>b7xvdQAx8I$7RKG?P^eNreYH!rAc7MMdm`Tw zvFtUGW8raU#ocyQug>ZjSkULij-U4mi;IF!G-^~1I> zukxr0=YC@P23q(d>ES3QkOiL!rG=on&Z%M1DE5(9ANPZl*WHOB&ob49uwXNAyha_4 zMu3Obp3|xCln(Va_X->RX!TR+f2`A>D=C$+5uc7cG8NQ`=^9#Mayb1B`21Pc#oC;} z8whVcP}1lB*8lnLu58r(WS`&s-_+QmkEw0ILWY1*f3j#vu{=EP{?*RsGB4eK7qQzP zEJ$oE!h&PKXCpGQNf*H$DQRE5KznXkTFc%8>YWy8;Cp6m_IX=4JNVmp5DVvOIST8& z>#xjq7EN9M*4L{L3lKwv>Ipit>;=vfYE9wM-ZfsIj;;-~!~*P5C!!7-Aq*%--&a zN8OmCA*c2(Y3|dSJHr;>CmRpP7|?U(|g~V4~NzEh}Uw*m_^GbBEot ztMzPH#1T~E9AaTG(y|)Y8!efc%QyRPWO~=WtWXuKN|>?}6bFQ9{WQm~X=HKhirQ$S z#!+YLg^9E_bpnkzUDu@*sVf&9kIoBs;E>{dQ;CJ)Pf?#+fzoQ4?VsIZQ;2%|v@zOh z_Fcpgh{FE2M&;;K+Q?$rME zPTS;__ucuOcH)7P;t&?r4u`<0tbHKs;@&l@{cD5;?A+#D$u+?uyCKJAI7uakL*y(A z9Izwik@?7FX^!x_VZ+5M2U+R0uH2AUj9VodS<|UZ%clKYFuItn`qRtd;VtCxWn$rVsJDtv}JubDgRdLvY!CV=77d%XnDL@6W6|CHB=V~Q-ICaf3 zk1@pxEIu9rK*tkQ%9?B{Zy^j(-!Q$-<|p}P!{<@FVjNq={~*@Tb`=@$i!P31$3IG1 zki(u8YvO>#RiPn^9y&k)diJZbH2vaA=Sz;4?*gU&$Gi&JbLHkM@kwfr{J{CIZx5|g$ZWzQ zYbKY);iR6XmzB`s{y6bRDu>`(UB3NcYnG%sV^WrwDiK5{TNQSCO8SOLe~fV(t48*h zdt+|#G%KJSdS9o#Fk3C-l6iTnXUnS_SXexap%d#QRA8Uo{&Tik*RCAgN(T8CxYj3_ z9g3WgQkw^;hniyzwhYd=j$0YHnm^@0Vv){dmx9mHLG&)POeRc z3%@RvK6$1dgF4oKu3-^*0z4Lfn7I)zYf}H>n6}g(#a$fFvEX>9i=(tvP>h^VkvDp0 zxozIo-gd*5vp3Ea&B3D23Bjo-N1B+G-d%lSTWbhvS!a>nAV~H??WSs)?AunSZKlUjnFTGpy|or-5KpC7$buc%0A0f#TqDfHBskp_FKO|t#6qZoy^cgz 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

Rd8;?G3~AxOMk_-`7MSHiHoq@EL+D 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 TXESB%tTRC=sVb98uRFP?ChPs@2?q8P7WL2})z= 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 D>HYT1 literal 0 HcmV?d00001 diff --git a/.gradle/2.2.1/taskArtifacts/outputFileStates.bin b/.gradle/2.2.1/taskArtifacts/outputFileStates.bin new file mode 100644 index 0000000000000000000000000000000000000000..57173cad1775de2c55ec2e5120f38d44d9e01c67 GIT binary patch literal 23432 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 Sc(DUy0`RsN79acK$o~MAl1J76 literal 0 HcmV?d00001 diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml deleted file mode 100644 index 02dca3c6..00000000 --- a/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 1e803a11..96cc43ef 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,12 +1,6 @@ - - - + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml index 3572571a..e7bedf33 100644 --- a/.idea/copyright/profiles_settings.xml +++ b/.idea/copyright/profiles_settings.xml @@ -1,5 +1,3 @@ - - - + \ No newline at end of file diff --git a/.idea/dictionaries/Josh.xml b/.idea/dictionaries/Josh.xml deleted file mode 100644 index f62fffec..00000000 --- a/.idea/dictionaries/Josh.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - bahnsen - bitrate - deserialize - deserialized - gapless - looper - playlists - transcoded - vizualizer - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index ead65380..00000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..e2983526 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 75f8076d..00000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index c60c33bb..00000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/libraries/pulltorefresh_pulltorefresh.xml b/.idea/libraries/pulltorefresh_pulltorefresh.xml new file mode 100644 index 00000000..765e02e7 --- /dev/null +++ b/.idea/libraries/pulltorefresh_pulltorefresh.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_v4_18_0_0.xml b/.idea/libraries/support_v4_18_0_0.xml new file mode 100644 index 00000000..645ed891 --- /dev/null +++ b/.idea/libraries/support_v4_18_0_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 0c812c3e..eafd593a 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,11 +2,11 @@ - - - - + + + + + - - + \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b8..00000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index c80f2198..6564d52d 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,7 +1,6 @@ - + - - + \ No newline at end of file diff --git a/.project b/.project deleted file mode 100644 index 01021a7c..00000000 --- a/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - UltraSonic - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/Subsonic-Android.iml b/Subsonic-Android.iml deleted file mode 100644 index 12768e7b..00000000 --- a/Subsonic-Android.iml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/UltrasSonic.iml b/UltrasSonic.iml new file mode 100644 index 00000000..3fcb0258 --- /dev/null +++ b/UltrasSonic.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ant.properties b/ant.properties deleted file mode 100644 index fb0849b1..00000000 --- a/ant.properties +++ /dev/null @@ -1,20 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked in Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. - -key.store=subsonic.keystore -key.alias=subsonic - diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..88d246d4 --- /dev/null +++ b/build.gradle @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.2.3' + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/build.xml b/build.xml deleted file mode 100644 index 7f160548..00000000 --- a/build.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/debug.keystore b/debug.keystore deleted file mode 100644 index 1cb2c3d102d882436071df52a0fdd994ba5aac7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1267 zcmezO_TO6u1_mY|W&~sY#JrTE{LGY;)TGk%?9@u2xL(}*vRgnky9}C`wi)oTacQ$L zvM_2f2{JOWGO#o;E$XfQvi943_g^{JC8v}*F_$0vD{-4Ag7b%i<>CZYiwlz{uGzRS z^0<}MJO5wi6Sv^HOiRK2SeQXs)yZd}q_ioy(vt;eV*Wb=8U1`Sn z^wi@+PxNbo!ZU@%7o1J7w)(LC;>2SUpC@l^d;Fu~%8aU;xrsqGj$LUxmVV^l**9gQ z>hi1CH)p(idcWY#7c;GRxrxjk?oxZ_Zu=SZ<=FIifsCq>&o-Zq=RW#=aQ(8wAG^vb z(<=(2eEk9#+*c*VGk4Wp^>DX)G102`gN{FQ{B0qI?gLXBLj;=(MNh1#mCtQ(`BZao z_I=)&E1w0isISyr)!?zi(?VXk#o&GDcB732e8((Y7x`?S7@OC5ZCOl$)U>dbcl<7W z-F(Zw{*nC|+o$s-lY?e|Q$GDxS4@B*OoPK`G0*bI2#+AUUZc(XJR2=JA`VF#6nk!R zyfq%;+fSBDIP9I3{XnMnq|Ghg%_hrQ4jX4~n-M1!TNiVLZG!jtv}~4>m9uR=g<9Kq zgfJ((*rW2`Uu=Yw+OK{0zyG@W^SEj2%k$NLy|z8z+IS~mSLePf&)3OaI-~FVmDyd{ zl2cGbwbvu&_SD6f*q;P2mrHKC5i1?D*W?|?r&oN>i#qSQU#i;tc15gO<--r3G!ELn z(Tw}&z2?}@D~De`eq3v{i9gmy`mCj?dZ6(!g<7t?i6?UAmDxlV33Fc-+BE6E2sml8 zM(CLuSOOFDOM@oHr$FqtfSHMriHXHGL+7;tFB_*;n@8JsUSO(bWiT)|=@j+~}R5zkW|hv^lq~koeU) zM)3<4e4&RQ)*a`(P}O|wcjotk>f{Ym_V@`^&QGcoHnlc-^ZCS^?Fq-lzn}4Waz685 zPyyGe56{+4)bhX{bxoioyRd*eW_BTr3z#g_E{HddIRGQ7r zm)rTfJ46-NeTe)PygGi<%JmLcHfIFy)$Z#$?h@u1qPK3h?}Ryv%FG|>U0A4IXD==s z;KF%)&qAlT&X0=)PUfaF&n{h7c5G6+8#CjHos)$5SL;8`*M1aTwzR`|3vV~$H-~ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/import-summary.txt b/import-summary.txt new file mode 100644 index 00000000..94ed4717 --- /dev/null +++ b/import-summary.txt @@ -0,0 +1,809 @@ +ECLIPSE ANDROID PROJECT IMPORT SUMMARY +====================================== + +Manifest Merging: +----------------- +Your project uses libraries that provide manifests, and your Eclipse +project did not explicitly turn on manifest merging. In Android Gradle +projects, manifests are always merged (meaning that contents from your +libraries' manifests will be merged into the app manifest. If you had +manually copied contents from library manifests into your app manifest +you may need to remove these for the app to build correctly. + +Ignored Files: +-------------- +The following files were *not* copied into the new Gradle project; you +should evaluate whether these are still needed in your project and if +so manually move them: + +From UltraSonic: +* .gitattributes +* .gitignore +* .gitmodules +* .idea/ +* .idea/.name +* .idea/codeStyleSettings.xml +* .idea/compiler.xml +* .idea/copyright/ +* .idea/copyright/profiles_settings.xml +* .idea/dictionaries/ +* .idea/dictionaries/Josh.xml +* .idea/encodings.xml +* .idea/inspectionProfiles/ +* .idea/inspectionProfiles/Project_Default.xml +* .idea/inspectionProfiles/profiles_settings.xml +* .idea/modules.xml +* .idea/scopes/ +* .idea/scopes/scope_settings.xml +* .idea/vcs.xml +* Subsonic-Android.iml +* ant.properties +* build.xml +* debug.keystore +* default.properties +* drag-sort-listview.iml +* drag-sort-listview/ +* drag-sort-listview/.git +* drag-sort-listview/.gitignore +* drag-sort-listview/CHANGELOG.md +* drag-sort-listview/README.md +* drag-sort-listview/demo/ +* drag-sort-listview/demo/.gitignore +* drag-sort-listview/demo/AndroidManifest.xml +* drag-sort-listview/demo/ant.properties +* drag-sort-listview/demo/app-description.txt +* drag-sort-listview/demo/build.xml +* drag-sort-listview/demo/libs/ +* drag-sort-listview/demo/libs/android-support-v4.jar +* drag-sort-listview/demo/pom.xml +* drag-sort-listview/demo/proguard-project.txt +* drag-sort-listview/demo/project.properties +* drag-sort-listview/demo/res/ +* drag-sort-listview/demo/res/drawable-hdpi/ +* drag-sort-listview/demo/res/drawable-hdpi/delete_x.png +* drag-sort-listview/demo/res/drawable-hdpi/drag.9.png +* drag-sort-listview/demo/res/drawable-hdpi/dslv_launcher.png +* drag-sort-listview/demo/res/drawable-ldpi/ +* drag-sort-listview/demo/res/drawable-ldpi/dslv_launcher.png +* drag-sort-listview/demo/res/drawable-mdpi/ +* drag-sort-listview/demo/res/drawable-mdpi/drag.9.png +* drag-sort-listview/demo/res/drawable-mdpi/dslv_launcher.png +* drag-sort-listview/demo/res/drawable-xhdpi/ +* drag-sort-listview/demo/res/drawable-xhdpi/dslv_launcher.png +* drag-sort-listview/demo/res/drawable/ +* drag-sort-listview/demo/res/drawable/bg_handle.xml +* drag-sort-listview/demo/res/drawable/bg_handle_section1.xml +* drag-sort-listview/demo/res/drawable/bg_handle_section1_selector.xml +* drag-sort-listview/demo/res/drawable/bg_handle_section2.xml +* drag-sort-listview/demo/res/drawable/bg_handle_section2_selector.xml +* drag-sort-listview/demo/res/drawable/drag.9.png +* drag-sort-listview/demo/res/drawable/section_div.xml +* drag-sort-listview/demo/res/layout/ +* drag-sort-listview/demo/res/layout/bg_handle_main.xml +* drag-sort-listview/demo/res/layout/checkable_main.xml +* drag-sort-listview/demo/res/layout/cursor_main.xml +* drag-sort-listview/demo/res/layout/dslv_fragment_main.xml +* drag-sort-listview/demo/res/layout/header_footer.xml +* drag-sort-listview/demo/res/layout/hetero_main.xml +* drag-sort-listview/demo/res/layout/jazz_artist_list_item.xml +* drag-sort-listview/demo/res/layout/launcher.xml +* drag-sort-listview/demo/res/layout/launcher_item.xml +* drag-sort-listview/demo/res/layout/list_item_bg_handle.xml +* drag-sort-listview/demo/res/layout/list_item_checkable.xml +* drag-sort-listview/demo/res/layout/list_item_click_remove.xml +* drag-sort-listview/demo/res/layout/list_item_handle_left.xml +* drag-sort-listview/demo/res/layout/list_item_handle_right.xml +* drag-sort-listview/demo/res/layout/list_item_no_handle.xml +* drag-sort-listview/demo/res/layout/list_item_radio.xml +* drag-sort-listview/demo/res/layout/section_div.xml +* drag-sort-listview/demo/res/layout/sections_main.xml +* drag-sort-listview/demo/res/layout/test_bed_main.xml +* drag-sort-listview/demo/res/layout/warp_main.xml +* drag-sort-listview/demo/res/menu/ +* drag-sort-listview/demo/res/menu/mode_menu.xml +* drag-sort-listview/demo/res/values/ +* drag-sort-listview/demo/res/values/colors.xml +* drag-sort-listview/demo/res/values/dimens.xml +* drag-sort-listview/demo/res/values/ids.xml +* drag-sort-listview/demo/res/values/strings.xml +* drag-sort-listview/demo/src/ +* drag-sort-listview/demo/src/com/ +* drag-sort-listview/demo/src/com/mobeta/ +* drag-sort-listview/demo/src/com/mobeta/android/ +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/ +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/ArbItemSizeDSLV.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/BGHandle.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/CheckableLinearLayout.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/CursorDSLV.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/DSLVFragment.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/DSLVFragmentBGHandle.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/DSLVFragmentClicks.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/DragInitModeDialog.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/EnablesDialog.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/Launcher.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/MultipleChoiceListView.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/RemoveModeDialog.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/Sections.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/SingleChoiceListView.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/TestBedDSLV.java +* drag-sort-listview/demo/src/com/mobeta/android/demodslv/WarpDSLV.java +* drag-sort-listview/library/ +* drag-sort-listview/library/.gitignore +* drag-sort-listview/library/AndroidManifest.xml +* drag-sort-listview/library/ant.properties +* drag-sort-listview/library/build.xml +* drag-sort-listview/library/libs/ +* drag-sort-listview/library/libs/android-support-v4.jar +* drag-sort-listview/library/pom.xml +* drag-sort-listview/library/proguard-project.txt +* drag-sort-listview/library/project.properties +* drag-sort-listview/library/res/ +* drag-sort-listview/library/res/values/ +* drag-sort-listview/library/res/values/dslv_attrs.xml +* drag-sort-listview/library/src/ +* drag-sort-listview/library/src/com/ +* drag-sort-listview/library/src/com/mobeta/ +* drag-sort-listview/library/src/com/mobeta/android/ +* drag-sort-listview/library/src/com/mobeta/android/dslv/ +* drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortController.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortCursorAdapter.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortItemView.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortItemViewCheckable.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/DragSortListView.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java +* drag-sort-listview/library/src/com/mobeta/android/dslv/SimpleFloatViewManager.java +* drag-sort-listview/pom.xml +* drag-sort-listview/tools/ +* drag-sort-listview/tools/demo-sign-align.sh +* drag-sort-listview/tools/doc-dslv.sh +* drag-sort-listview/tools/dslv.py +* drag-sort-listview/tools/pkg-dslv.sh +* menudrawer.iml +* menudrawer/ +* menudrawer/.git +* menudrawer/.gitignore +* menudrawer/CHANGELOG.md +* menudrawer/LICENSE +* menudrawer/README.md +* menudrawer/art/ +* menudrawer/art/menu_arrow.svg +* menudrawer/build.gradle +* menudrawer/checkstyle.xml +* menudrawer/gradle/ +* menudrawer/gradle/wrapper/ +* menudrawer/gradle/wrapper/gradle-wrapper.jar +* menudrawer/gradle/wrapper/gradle-wrapper.properties +* menudrawer/gradlew +* menudrawer/gradlew.bat +* menudrawer/menudrawer-samples/ +* menudrawer/menudrawer-samples/AndroidManifest.xml +* menudrawer/menudrawer-samples/build.gradle +* menudrawer/menudrawer-samples/res/ +* menudrawer/menudrawer-samples/res/drawable-hdpi-v14/ +* menudrawer/menudrawer-samples/res/drawable-hdpi-v14/menu_arrow_bottom.png +* menudrawer/menudrawer-samples/res/drawable-hdpi-v14/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-hdpi-v14/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-hdpi-v14/menu_arrow_top.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/ +* menudrawer/menudrawer-samples/res/drawable-hdpi/ic_action_refresh_dark.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/ic_action_select_all_dark.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/ic_drawer.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/ic_launcher.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/ic_menu_moreoverflow_normal_holo_light.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/md__category_background.9.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/md__list_focused_holo.9.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/md__list_longpressed_holo.9.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/md__list_pressed_holo_dark.9.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/md__list_selector_disabled_holo_dark.9.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/menu_arrow_bottom.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-hdpi/menu_arrow_top.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-hdpi/ +* menudrawer/menudrawer-samples/res/drawable-ldrtl-hdpi/ic_drawer.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-hdpi/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-hdpi/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-mdpi/ +* menudrawer/menudrawer-samples/res/drawable-ldrtl-mdpi/ic_drawer.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-mdpi/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-mdpi/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-xhdpi/ +* menudrawer/menudrawer-samples/res/drawable-ldrtl-xhdpi/ic_drawer.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-xhdpi/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-ldrtl-xhdpi/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-mdpi-v14/ +* menudrawer/menudrawer-samples/res/drawable-mdpi-v14/menu_arrow_bottom.png +* menudrawer/menudrawer-samples/res/drawable-mdpi-v14/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-mdpi-v14/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-mdpi-v14/menu_arrow_top.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/ +* menudrawer/menudrawer-samples/res/drawable-mdpi/ic_action_refresh_dark.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/ic_action_select_all_dark.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/ic_drawer.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/ic_launcher.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/ic_menu_moreoverflow_normal_holo_light.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/md__category_background.9.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/md__list_focused_holo.9.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/md__list_longpressed_holo.9.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/md__list_pressed_holo_dark.9.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/md__list_selector_disabled_holo_dark.9.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/menu_arrow_bottom.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-mdpi/menu_arrow_top.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi-v14/ +* menudrawer/menudrawer-samples/res/drawable-xhdpi-v14/menu_arrow_bottom.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi-v14/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi-v14/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi-v14/menu_arrow_top.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/ +* menudrawer/menudrawer-samples/res/drawable-xhdpi/ic_action_refresh_dark.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/ic_action_select_all_dark.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/ic_drawer.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/ic_launcher.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/ic_menu_moreoverflow_normal_holo_light.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/md__category_background.9.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/md__list_focused_holo.9.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/md__list_longpressed_holo.9.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/menu_arrow_bottom.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/menu_arrow_end.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/menu_arrow_start.png +* menudrawer/menudrawer-samples/res/drawable-xhdpi/menu_arrow_top.png +* menudrawer/menudrawer-samples/res/drawable/ +* menudrawer/menudrawer-samples/res/drawable/md__list_selector_background_transition_holo_dark.xml +* menudrawer/menudrawer-samples/res/drawable/md__list_selector_holo_dark.xml +* menudrawer/menudrawer-samples/res/layout/ +* menudrawer/menudrawer-samples/res/layout/activity_bottommenu.xml +* menudrawer/menudrawer-samples/res/layout/activity_contentsample.xml +* menudrawer/menudrawer-samples/res/layout/activity_layoutsample.xml +* menudrawer/menudrawer-samples/res/layout/activity_rightmenu.xml +* menudrawer/menudrawer-samples/res/layout/activity_staticsample.xml +* menudrawer/menudrawer-samples/res/layout/activity_topmenu.xml +* menudrawer/menudrawer-samples/res/layout/activity_viewpagersample.xml +* menudrawer/menudrawer-samples/res/layout/activity_windowsample.xml +* menudrawer/menudrawer-samples/res/layout/fragment_sample.xml +* menudrawer/menudrawer-samples/res/layout/list_row_sample.xml +* menudrawer/menudrawer-samples/res/layout/list_row_sample_header.xml +* menudrawer/menudrawer-samples/res/layout/main.xml +* menudrawer/menudrawer-samples/res/layout/menu_bottom.xml +* menudrawer/menudrawer-samples/res/layout/menu_row_category.xml +* menudrawer/menudrawer-samples/res/layout/menu_row_item.xml +* menudrawer/menudrawer-samples/res/layout/menu_scrollview.xml +* menudrawer/menudrawer-samples/res/layout/menu_top.xml +* menudrawer/menudrawer-samples/res/values-v14/ +* menudrawer/menudrawer-samples/res/values-v14/colors.xml +* menudrawer/menudrawer-samples/res/values-v14/themes.xml +* menudrawer/menudrawer-samples/res/values/ +* menudrawer/menudrawer-samples/res/values/colors.xml +* menudrawer/menudrawer-samples/res/values/strings.xml +* menudrawer/menudrawer-samples/res/values/styles.xml +* menudrawer/menudrawer-samples/res/values/themes.xml +* menudrawer/menudrawer-samples/src/ +* menudrawer/menudrawer-samples/src/net/ +* menudrawer/menudrawer-samples/src/net/simonvt/ +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/ +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/ +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/ActionBarSherlockSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/BaseListSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/BottomDrawerSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/BottomOverlaySample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/Category.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/FragmentSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/Item.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/LayoutSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/LeftDrawerSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/LeftOverlaySample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/ListActivitySample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/MenuAdapter.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/RightDrawerSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/RightOverlaySample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/SamplesActivity.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/StaticDrawerSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/TopDrawerSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/TopOverlaySample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/ViewPagerSample.java +* menudrawer/menudrawer-samples/src/net/simonvt/menudrawer/samples/WindowSample.java +* menudrawer/menudrawer/ +* menudrawer/menudrawer/AndroidManifest.xml +* menudrawer/menudrawer/build.gradle +* menudrawer/menudrawer/res/ +* menudrawer/menudrawer/res/values/ +* menudrawer/menudrawer/res/values/attrs.xml +* menudrawer/menudrawer/res/values/colors.xml +* menudrawer/menudrawer/res/values/ids.xml +* menudrawer/menudrawer/res/values/strings.xml +* menudrawer/menudrawer/res/values/styles.xml +* menudrawer/menudrawer/src/ +* menudrawer/menudrawer/src/net/ +* menudrawer/menudrawer/src/net/simonvt/ +* menudrawer/menudrawer/src/net/simonvt/menudrawer/ +* menudrawer/menudrawer/src/net/simonvt/menudrawer/BuildLayerFrameLayout.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/ColorDrawable.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/DraggableDrawer.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/FloatScroller.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/MenuDrawer.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/NoClickThroughFrameLayout.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/OverlayDrawer.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/PeekInterpolator.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/Position.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/Scroller.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/SinusoidalInterpolator.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/SlideDrawable.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/SlidingDrawer.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/SmoothInterpolator.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/StaticDrawer.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/ViewHelper.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/compat/ +* menudrawer/menudrawer/src/net/simonvt/menudrawer/compat/ActionBarHelper.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/compat/ActionBarHelperCompat.java +* menudrawer/menudrawer/src/net/simonvt/menudrawer/compat/ActionBarHelperNative.java +* menudrawer/settings.gradle +* proguard.cfg +* pulltorefresh.iml +* pulltorefresh/ +* pulltorefresh/.git +* pulltorefresh/.gitignore +* pulltorefresh/LICENSE +* pulltorefresh/README.md +* pulltorefresh/extras/ +* pulltorefresh/extras/PullToRefreshListFragment/ +* pulltorefresh/extras/PullToRefreshListFragment/AndroidManifest.xml +* pulltorefresh/extras/PullToRefreshListFragment/LICENSE +* pulltorefresh/extras/PullToRefreshListFragment/libs/ +* pulltorefresh/extras/PullToRefreshListFragment/libs/android-support-v4.jar +* pulltorefresh/extras/PullToRefreshListFragment/pom.xml +* pulltorefresh/extras/PullToRefreshListFragment/project.properties +* pulltorefresh/extras/PullToRefreshListFragment/res/ +* pulltorefresh/extras/PullToRefreshListFragment/res/layout/ +* pulltorefresh/extras/PullToRefreshListFragment/res/layout/need_this_for_maven.xml +* pulltorefresh/extras/PullToRefreshListFragment/src/ +* pulltorefresh/extras/PullToRefreshListFragment/src/com/ +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/ +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/ +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/ +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/ +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/PullToRefreshBaseListFragment.java +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/PullToRefreshExpandableListFragment.java +* pulltorefresh/extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/PullToRefreshListFragment.java +* pulltorefresh/extras/PullToRefreshViewPager/ +* pulltorefresh/extras/PullToRefreshViewPager/AndroidManifest.xml +* pulltorefresh/extras/PullToRefreshViewPager/ant.properties +* pulltorefresh/extras/PullToRefreshViewPager/libs/ +* pulltorefresh/extras/PullToRefreshViewPager/libs/android-support-v4.jar +* pulltorefresh/extras/PullToRefreshViewPager/pom.xml +* pulltorefresh/extras/PullToRefreshViewPager/proguard-project.txt +* pulltorefresh/extras/PullToRefreshViewPager/project.properties +* pulltorefresh/extras/PullToRefreshViewPager/res/ +* pulltorefresh/extras/PullToRefreshViewPager/res/layout/ +* pulltorefresh/extras/PullToRefreshViewPager/res/layout/need_this_for_maven.xml +* pulltorefresh/extras/PullToRefreshViewPager/res/values/ +* pulltorefresh/extras/PullToRefreshViewPager/res/values/ids.xml +* pulltorefresh/extras/PullToRefreshViewPager/src/ +* pulltorefresh/extras/PullToRefreshViewPager/src/com/ +* pulltorefresh/extras/PullToRefreshViewPager/src/com/handmark/ +* pulltorefresh/extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/ +* pulltorefresh/extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/extras/ +* pulltorefresh/extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/extras/viewpager/ +* pulltorefresh/extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/extras/viewpager/PullToRefreshViewPager.java +* pulltorefresh/extras/pom.xml +* pulltorefresh/header_graphic.png +* pulltorefresh/library/ +* pulltorefresh/library/AndroidManifest.xml +* pulltorefresh/library/LICENSE +* pulltorefresh/library/pom.xml +* pulltorefresh/library/project.properties +* pulltorefresh/library/res/ +* pulltorefresh/library/res/anim/ +* pulltorefresh/library/res/anim/slide_in_from_bottom.xml +* pulltorefresh/library/res/anim/slide_in_from_top.xml +* pulltorefresh/library/res/anim/slide_out_to_bottom.xml +* pulltorefresh/library/res/anim/slide_out_to_top.xml +* pulltorefresh/library/res/drawable-hdpi/ +* pulltorefresh/library/res/drawable-hdpi/default_ptr_flip.png +* pulltorefresh/library/res/drawable-hdpi/default_ptr_rotate.png +* pulltorefresh/library/res/drawable-hdpi/indicator_arrow.png +* pulltorefresh/library/res/drawable-mdpi/ +* pulltorefresh/library/res/drawable-mdpi/default_ptr_flip.png +* pulltorefresh/library/res/drawable-mdpi/default_ptr_rotate.png +* pulltorefresh/library/res/drawable-mdpi/indicator_arrow.png +* pulltorefresh/library/res/drawable-xhdpi/ +* pulltorefresh/library/res/drawable-xhdpi/default_ptr_flip.png +* pulltorefresh/library/res/drawable-xhdpi/default_ptr_rotate.png +* pulltorefresh/library/res/drawable-xhdpi/indicator_arrow.png +* pulltorefresh/library/res/drawable/ +* pulltorefresh/library/res/drawable/indicator_bg_bottom.xml +* pulltorefresh/library/res/drawable/indicator_bg_top.xml +* pulltorefresh/library/res/layout/ +* pulltorefresh/library/res/layout/pull_to_refresh_header_horizontal.xml +* pulltorefresh/library/res/layout/pull_to_refresh_header_vertical.xml +* pulltorefresh/library/res/values-ar/ +* pulltorefresh/library/res/values-ar/pull_refresh_strings.xml +* pulltorefresh/library/res/values-cs/ +* pulltorefresh/library/res/values-cs/pull_refresh_strings.xml +* pulltorefresh/library/res/values-de/ +* pulltorefresh/library/res/values-de/pull_refresh_strings.xml +* pulltorefresh/library/res/values-es/ +* pulltorefresh/library/res/values-es/pull_refresh_strings.xml +* pulltorefresh/library/res/values-fi/ +* pulltorefresh/library/res/values-fi/pull_refresh_strings.xml +* pulltorefresh/library/res/values-fr/ +* pulltorefresh/library/res/values-fr/pull_refresh_strings.xml +* pulltorefresh/library/res/values-he/ +* pulltorefresh/library/res/values-he/pull_refresh_strings.xml +* pulltorefresh/library/res/values-it/ +* pulltorefresh/library/res/values-it/pull_refresh_strings.xml +* pulltorefresh/library/res/values-iw/ +* pulltorefresh/library/res/values-iw/pull_refresh_strings.xml +* pulltorefresh/library/res/values-ja/ +* pulltorefresh/library/res/values-ja/pull_refresh_strings.xml +* pulltorefresh/library/res/values-ko/ +* pulltorefresh/library/res/values-ko/pull_refresh_strings.xml +* pulltorefresh/library/res/values-nl/ +* pulltorefresh/library/res/values-nl/pull_refresh_strings.xml +* pulltorefresh/library/res/values-pl/ +* pulltorefresh/library/res/values-pl/pull_refresh_strings.xml +* pulltorefresh/library/res/values-pt-rBR/ +* pulltorefresh/library/res/values-pt-rBR/pull_refresh_strings.xml +* pulltorefresh/library/res/values-pt/ +* pulltorefresh/library/res/values-pt/pull_refresh_strings.xml +* pulltorefresh/library/res/values-ro/ +* pulltorefresh/library/res/values-ro/pull_refresh_strings.xml +* pulltorefresh/library/res/values-ru/ +* pulltorefresh/library/res/values-ru/pull_refresh_strings.xml +* pulltorefresh/library/res/values-zh/ +* pulltorefresh/library/res/values-zh/pull_refresh_strings.xml +* pulltorefresh/library/res/values/ +* pulltorefresh/library/res/values/attrs.xml +* pulltorefresh/library/res/values/dimens.xml +* pulltorefresh/library/res/values/ids.xml +* pulltorefresh/library/res/values/pull_refresh_strings.xml +* pulltorefresh/library/src/ +* pulltorefresh/library/src/com/ +* pulltorefresh/library/src/com/handmark/ +* pulltorefresh/library/src/com/handmark/pulltorefresh/ +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/ +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/ILoadingLayout.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/IPullToRefresh.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/LoadingLayoutProxy.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/OverscrollHelper.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshBase.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshGridView.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshListView.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/PullToRefreshWebView.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/extras/ +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/ +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/IndicatorLayout.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/LoadingLayout.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/Utils.java +* pulltorefresh/library/src/com/handmark/pulltorefresh/library/internal/ViewCompat.java +* pulltorefresh/pom.xml +* pulltorefresh/sample/ +* pulltorefresh/sample/AndroidManifest.xml +* pulltorefresh/sample/LICENSE +* pulltorefresh/sample/assets/ +* pulltorefresh/sample/assets/ptr_webview2_sample.html +* pulltorefresh/sample/libs/ +* pulltorefresh/sample/libs/android-support-v4.jar +* pulltorefresh/sample/pom.xml +* pulltorefresh/sample/project.properties +* pulltorefresh/sample/res/ +* pulltorefresh/sample/res/drawable-hdpi/ +* pulltorefresh/sample/res/drawable-hdpi/android.png +* pulltorefresh/sample/res/drawable-hdpi/icon.png +* pulltorefresh/sample/res/drawable-ldpi/ +* pulltorefresh/sample/res/drawable-ldpi/icon.png +* pulltorefresh/sample/res/drawable-mdpi/ +* pulltorefresh/sample/res/drawable-mdpi/icon.png +* pulltorefresh/sample/res/drawable-nodpi/ +* pulltorefresh/sample/res/drawable-nodpi/wallpaper.jpg +* pulltorefresh/sample/res/drawable-xhdpi/ +* pulltorefresh/sample/res/drawable-xhdpi/android.png +* pulltorefresh/sample/res/drawable/ +* pulltorefresh/sample/res/drawable/icon.png +* pulltorefresh/sample/res/layout/ +* pulltorefresh/sample/res/layout/activity_ptr_expandable_list.xml +* pulltorefresh/sample/res/layout/activity_ptr_grid.xml +* pulltorefresh/sample/res/layout/activity_ptr_horizontalscrollview.xml +* pulltorefresh/sample/res/layout/activity_ptr_list.xml +* pulltorefresh/sample/res/layout/activity_ptr_list_fragment.xml +* pulltorefresh/sample/res/layout/activity_ptr_list_in_vp.xml +* pulltorefresh/sample/res/layout/activity_ptr_scrollview.xml +* pulltorefresh/sample/res/layout/activity_ptr_viewpager.xml +* pulltorefresh/sample/res/layout/activity_ptr_webview.xml +* pulltorefresh/sample/res/layout/activity_ptr_webview2.xml +* pulltorefresh/sample/res/layout/layout_listview_in_viewpager.xml +* pulltorefresh/sample/res/raw/ +* pulltorefresh/sample/res/raw/pull_event.mp3 +* pulltorefresh/sample/res/raw/refreshing_sound.mp3 +* pulltorefresh/sample/res/raw/reset_sound.mp3 +* pulltorefresh/sample/res/values/ +* pulltorefresh/sample/res/values/strings.xml +* pulltorefresh/sample/res/values/styles.xml +* pulltorefresh/sample/src/ +* pulltorefresh/sample/src/com/ +* pulltorefresh/sample/src/com/handmark/ +* pulltorefresh/sample/src/com/handmark/pulltorefresh/ +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/ +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/LauncherActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshExpandableListActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshGridActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshHorizontalScrollViewActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshListActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshListFragmentActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshListInViewPagerActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshScrollViewActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshViewPagerActivity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshWebView2Activity.java +* pulltorefresh/sample/src/com/handmark/pulltorefresh/samples/PullToRefreshWebViewActivity.java +* subsonic.keystore +From library: +* .gitignore +* ant.properties +* build.xml +* pom.xml +* proguard-project.txt +From menudrawer: +* build.gradle +From pulltorefresh: +* .git +* .gitignore +* LICENSE +* README.md +* extras/ +* extras/PullToRefreshListFragment/ +* extras/PullToRefreshListFragment/AndroidManifest.xml +* extras/PullToRefreshListFragment/LICENSE +* extras/PullToRefreshListFragment/libs/ +* extras/PullToRefreshListFragment/libs/android-support-v4.jar +* extras/PullToRefreshListFragment/pom.xml +* extras/PullToRefreshListFragment/project.properties +* extras/PullToRefreshListFragment/res/ +* extras/PullToRefreshListFragment/res/layout/ +* extras/PullToRefreshListFragment/res/layout/need_this_for_maven.xml +* extras/PullToRefreshListFragment/src/ +* extras/PullToRefreshListFragment/src/com/ +* extras/PullToRefreshListFragment/src/com/handmark/ +* extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/ +* extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/ +* extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/ +* extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/PullToRefreshBaseListFragment.java +* extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/PullToRefreshExpandableListFragment.java +* extras/PullToRefreshListFragment/src/com/handmark/pulltorefresh/extras/listfragment/PullToRefreshListFragment.java +* extras/PullToRefreshViewPager/ +* extras/PullToRefreshViewPager/AndroidManifest.xml +* extras/PullToRefreshViewPager/ant.properties +* extras/PullToRefreshViewPager/libs/ +* extras/PullToRefreshViewPager/libs/android-support-v4.jar +* extras/PullToRefreshViewPager/pom.xml +* extras/PullToRefreshViewPager/proguard-project.txt +* extras/PullToRefreshViewPager/project.properties +* extras/PullToRefreshViewPager/res/ +* extras/PullToRefreshViewPager/res/layout/ +* extras/PullToRefreshViewPager/res/layout/need_this_for_maven.xml +* extras/PullToRefreshViewPager/res/values/ +* extras/PullToRefreshViewPager/res/values/ids.xml +* extras/PullToRefreshViewPager/src/ +* extras/PullToRefreshViewPager/src/com/ +* extras/PullToRefreshViewPager/src/com/handmark/ +* extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/ +* extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/extras/ +* extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/extras/viewpager/ +* extras/PullToRefreshViewPager/src/com/handmark/pulltorefresh/extras/viewpager/PullToRefreshViewPager.java +* extras/pom.xml +* header_graphic.png +* library/ +* library/AndroidManifest.xml +* library/LICENSE +* library/pom.xml +* library/project.properties +* library/res/ +* library/res/anim/ +* library/res/anim/slide_in_from_bottom.xml +* library/res/anim/slide_in_from_top.xml +* library/res/anim/slide_out_to_bottom.xml +* library/res/anim/slide_out_to_top.xml +* library/res/drawable-hdpi/ +* library/res/drawable-hdpi/default_ptr_flip.png +* library/res/drawable-hdpi/default_ptr_rotate.png +* library/res/drawable-hdpi/indicator_arrow.png +* library/res/drawable-mdpi/ +* library/res/drawable-mdpi/default_ptr_flip.png +* library/res/drawable-mdpi/default_ptr_rotate.png +* library/res/drawable-mdpi/indicator_arrow.png +* library/res/drawable-xhdpi/ +* library/res/drawable-xhdpi/default_ptr_flip.png +* library/res/drawable-xhdpi/default_ptr_rotate.png +* library/res/drawable-xhdpi/indicator_arrow.png +* library/res/drawable/ +* library/res/drawable/indicator_bg_bottom.xml +* library/res/drawable/indicator_bg_top.xml +* library/res/layout/ +* library/res/layout/pull_to_refresh_header_horizontal.xml +* library/res/layout/pull_to_refresh_header_vertical.xml +* library/res/values-ar/ +* library/res/values-ar/pull_refresh_strings.xml +* library/res/values-cs/ +* library/res/values-cs/pull_refresh_strings.xml +* library/res/values-de/ +* library/res/values-de/pull_refresh_strings.xml +* library/res/values-es/ +* library/res/values-es/pull_refresh_strings.xml +* library/res/values-fi/ +* library/res/values-fi/pull_refresh_strings.xml +* library/res/values-fr/ +* library/res/values-fr/pull_refresh_strings.xml +* library/res/values-he/ +* library/res/values-he/pull_refresh_strings.xml +* library/res/values-it/ +* library/res/values-it/pull_refresh_strings.xml +* library/res/values-iw/ +* library/res/values-iw/pull_refresh_strings.xml +* library/res/values-ja/ +* library/res/values-ja/pull_refresh_strings.xml +* library/res/values-ko/ +* library/res/values-ko/pull_refresh_strings.xml +* library/res/values-nl/ +* library/res/values-nl/pull_refresh_strings.xml +* library/res/values-pl/ +* library/res/values-pl/pull_refresh_strings.xml +* library/res/values-pt-rBR/ +* library/res/values-pt-rBR/pull_refresh_strings.xml +* library/res/values-pt/ +* library/res/values-pt/pull_refresh_strings.xml +* library/res/values-ro/ +* library/res/values-ro/pull_refresh_strings.xml +* library/res/values-ru/ +* library/res/values-ru/pull_refresh_strings.xml +* library/res/values-zh/ +* library/res/values-zh/pull_refresh_strings.xml +* library/res/values/ +* library/res/values/attrs.xml +* library/res/values/dimens.xml +* library/res/values/ids.xml +* library/res/values/pull_refresh_strings.xml +* library/src/ +* library/src/com/ +* library/src/com/handmark/ +* library/src/com/handmark/pulltorefresh/ +* library/src/com/handmark/pulltorefresh/library/ +* library/src/com/handmark/pulltorefresh/library/ILoadingLayout.java +* library/src/com/handmark/pulltorefresh/library/IPullToRefresh.java +* library/src/com/handmark/pulltorefresh/library/LoadingLayoutProxy.java +* library/src/com/handmark/pulltorefresh/library/OverscrollHelper.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshAdapterViewBase.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshBase.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshExpandableListView.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshGridView.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshHorizontalScrollView.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshListView.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshScrollView.java +* library/src/com/handmark/pulltorefresh/library/PullToRefreshWebView.java +* library/src/com/handmark/pulltorefresh/library/extras/ +* library/src/com/handmark/pulltorefresh/library/extras/PullToRefreshWebView2.java +* library/src/com/handmark/pulltorefresh/library/extras/SoundPullEventListener.java +* library/src/com/handmark/pulltorefresh/library/internal/ +* library/src/com/handmark/pulltorefresh/library/internal/EmptyViewMethodAccessor.java +* library/src/com/handmark/pulltorefresh/library/internal/FlipLoadingLayout.java +* library/src/com/handmark/pulltorefresh/library/internal/IndicatorLayout.java +* library/src/com/handmark/pulltorefresh/library/internal/LoadingLayout.java +* library/src/com/handmark/pulltorefresh/library/internal/RotateLoadingLayout.java +* library/src/com/handmark/pulltorefresh/library/internal/Utils.java +* library/src/com/handmark/pulltorefresh/library/internal/ViewCompat.java +* pom.xml +* sample/ +* sample/AndroidManifest.xml +* sample/LICENSE +* sample/assets/ +* sample/assets/ptr_webview2_sample.html +* sample/libs/ +* sample/libs/android-support-v4.jar +* sample/pom.xml +* sample/project.properties +* sample/res/ +* sample/res/drawable-hdpi/ +* sample/res/drawable-hdpi/android.png +* sample/res/drawable-hdpi/icon.png +* sample/res/drawable-ldpi/ +* sample/res/drawable-ldpi/icon.png +* sample/res/drawable-mdpi/ +* sample/res/drawable-mdpi/icon.png +* sample/res/drawable-nodpi/ +* sample/res/drawable-nodpi/wallpaper.jpg +* sample/res/drawable-xhdpi/ +* sample/res/drawable-xhdpi/android.png +* sample/res/drawable/ +* sample/res/drawable/icon.png +* sample/res/layout/ +* sample/res/layout/activity_ptr_expandable_list.xml +* sample/res/layout/activity_ptr_grid.xml +* sample/res/layout/activity_ptr_horizontalscrollview.xml +* sample/res/layout/activity_ptr_list.xml +* sample/res/layout/activity_ptr_list_fragment.xml +* sample/res/layout/activity_ptr_list_in_vp.xml +* sample/res/layout/activity_ptr_scrollview.xml +* sample/res/layout/activity_ptr_viewpager.xml +* sample/res/layout/activity_ptr_webview.xml +* sample/res/layout/activity_ptr_webview2.xml +* sample/res/layout/layout_listview_in_viewpager.xml +* sample/res/raw/ +* sample/res/raw/pull_event.mp3 +* sample/res/raw/refreshing_sound.mp3 +* sample/res/raw/reset_sound.mp3 +* sample/res/values/ +* sample/res/values/strings.xml +* sample/res/values/styles.xml +* sample/src/ +* sample/src/com/ +* sample/src/com/handmark/ +* sample/src/com/handmark/pulltorefresh/ +* sample/src/com/handmark/pulltorefresh/samples/ +* sample/src/com/handmark/pulltorefresh/samples/LauncherActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshExpandableListActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshGridActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshHorizontalScrollViewActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshListActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshListFragmentActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshListInViewPagerActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshScrollViewActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshViewPagerActivity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshWebView2Activity.java +* sample/src/com/handmark/pulltorefresh/samples/PullToRefreshWebViewActivity.java + +Replaced Jars with Dependencies: +-------------------------------- +The importer recognized the following .jar files as third party +libraries and replaced them with Gradle dependencies instead. This has +the advantage that more explicit version information is known, and the +libraries can be updated automatically. However, it is possible that +the .jar file in your project was of an older version than the +dependency we picked, which could render the project not compileable. +You can disable the jar replacement in the import wizard and try again: + +android-support-v4.jar => com.android.support:support-v4:18.0.0 + +Moved Files: +------------ +Android Gradle projects use a different directory structure than ADT +Eclipse projects. Here's how the projects were restructured: + +In library: +* AndroidManifest.xml => library/src/main/AndroidManifest.xml +* res/ => library/src/main/res/ +* src/ => library/src/main/java/ +In menudrawer: +* AndroidManifest.xml => menudrawer/src/main/AndroidManifest.xml +* res/ => menudrawer/src/main/res/ +* src/ => menudrawer/src/main/java/ +In UltraSonic: +* AndroidManifest.xml => ultraSonic/src/main/AndroidManifest.xml +* assets/ => ultraSonic/src/main/assets/ +* lint.xml => ultraSonic/lint.xml +* res/ => ultraSonic/src/main/res/ +* src/ => ultraSonic/src/main/java/ + +Next Steps: +----------- +You can now build the project. The Gradle project needs network +connectivity to download dependencies. + +Bugs: +----- +If for some reason your project does not build, and you determine that +it is due to a bug or limitation of the Eclipse to Gradle importer, +please file a bug at http://b.android.com with category +Component-Tools. + +(This import summary is for your information only, and can be deleted +after import once you are satisfied with the results.) diff --git a/library/build.gradle b/library/build.gradle new file mode 100644 index 00000000..b2a13c3c --- /dev/null +++ b/library/build.gradle @@ -0,0 +1,22 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 22 + buildToolsVersion "22.0.1" + + defaultConfig { + minSdkVersion 7 + targetSdkVersion 22 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} + +dependencies { + compile 'com.android.support:support-v4:18.0.0' +} diff --git a/library/library.iml b/library/library.iml new file mode 100644 index 00000000..f31c808d --- /dev/null +++ b/library/library.iml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f0ef29f3 --- /dev/null +++ b/library/src/main/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/library/src/main/java/com/mobeta/android/dslv/DragSortController.java b/library/src/main/java/com/mobeta/android/dslv/DragSortController.java new file mode 100644 index 00000000..41d477e9 --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/DragSortController.java @@ -0,0 +1,468 @@ +package com.mobeta.android.dslv; + +import android.graphics.Point; +import android.view.GestureDetector; +import android.view.HapticFeedbackConstants; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.widget.AdapterView; + +/** + * Class that starts and stops item drags on a {@link DragSortListView} + * based on touch gestures. This class also inherits from + * {@link SimpleFloatViewManager}, which provides basic float View + * creation. + * + * An instance of this class is meant to be passed to the methods + * {@link DragSortListView#setTouchListener()} and + * {@link DragSortListView#setFloatViewManager()} of your + * {@link DragSortListView} instance. + */ +public class DragSortController extends SimpleFloatViewManager implements View.OnTouchListener, GestureDetector.OnGestureListener { + + /** + * Drag init mode enum. + */ + public static final int ON_DOWN = 0; + public static final int ON_DRAG = 1; + public static final int ON_LONG_PRESS = 2; + + private int mDragInitMode = ON_DOWN; + + private boolean mSortEnabled = true; + + /** + * Remove mode enum. + */ + public static final int CLICK_REMOVE = 0; + public static final int FLING_REMOVE = 1; + + /** + * The current remove mode. + */ + private int mRemoveMode; + + private boolean mRemoveEnabled = false; + private boolean mIsRemoving = false; + + private GestureDetector mDetector; + + private GestureDetector mFlingRemoveDetector; + + private int mTouchSlop; + + public static final int MISS = -1; + + private int mHitPos = MISS; + private int mFlingHitPos = MISS; + + private int mClickRemoveHitPos = MISS; + + private int[] mTempLoc = new int[2]; + + private int mItemX; + private int mItemY; + + private int mCurrX; + private int mCurrY; + + private boolean mDragging = false; + + private float mFlingSpeed = 500f; + + private int mDragHandleId; + + private int mClickRemoveId; + + private int mFlingHandleId; + private boolean mCanDrag; + + private DragSortListView mDslv; + private int mPositionX; + + /** + * Calls {@link #DragSortController(DragSortListView, int)} with a + * 0 drag handle id, FLING_RIGHT_REMOVE remove mode, + * and ON_DOWN drag init. By default, sorting is enabled, and + * removal is disabled. + * + * @param dslv The DSLV instance + */ + public DragSortController(DragSortListView dslv) { + this(dslv, 0, ON_DOWN, FLING_REMOVE); + } + + public DragSortController(DragSortListView dslv, int dragHandleId, int dragInitMode, int removeMode) { + this(dslv, dragHandleId, dragInitMode, removeMode, 0); + } + + public DragSortController(DragSortListView dslv, int dragHandleId, int dragInitMode, int removeMode, int clickRemoveId) { + this(dslv, dragHandleId, dragInitMode, removeMode, clickRemoveId, 0); + } + + /** + * By default, sorting is enabled, and removal is disabled. + * + * @param dslv The DSLV instance + * @param dragHandleId The resource id of the View that represents + * the drag handle in a list item. + */ + public DragSortController(DragSortListView dslv, int dragHandleId, int dragInitMode, + int removeMode, int clickRemoveId, int flingHandleId) { + super(dslv); + mDslv = dslv; + mDetector = new GestureDetector(dslv.getContext(), this); + mFlingRemoveDetector = new GestureDetector(dslv.getContext(), mFlingRemoveListener); + mFlingRemoveDetector.setIsLongpressEnabled(false); + mTouchSlop = ViewConfiguration.get(dslv.getContext()).getScaledTouchSlop(); + mDragHandleId = dragHandleId; + mClickRemoveId = clickRemoveId; + mFlingHandleId = flingHandleId; + setRemoveMode(removeMode); + setDragInitMode(dragInitMode); + } + + + public int getDragInitMode() { + return mDragInitMode; + } + + /** + * Set how a drag is initiated. Needs to be one of + * {@link ON_DOWN}, {@link ON_DRAG}, or {@link ON_LONG_PRESS}. + * + * @param mode The drag init mode. + */ + public void setDragInitMode(int mode) { + mDragInitMode = mode; + } + + /** + * Enable/Disable list item sorting. Disabling is useful if only item + * removal is desired. Prevents drags in the vertical direction. + * + * @param enabled Set true to enable list + * item sorting. + */ + public void setSortEnabled(boolean enabled) { + mSortEnabled = enabled; + } + + public boolean isSortEnabled() { + return mSortEnabled; + } + + /** + * One of {@link CLICK_REMOVE}, {@link FLING_RIGHT_REMOVE}, + * {@link FLING_LEFT_REMOVE}, + * {@link SLIDE_RIGHT_REMOVE}, or {@link SLIDE_LEFT_REMOVE}. + */ + public void setRemoveMode(int mode) { + mRemoveMode = mode; + } + + public int getRemoveMode() { + return mRemoveMode; + } + + /** + * Enable/Disable item removal without affecting remove mode. + */ + public void setRemoveEnabled(boolean enabled) { + mRemoveEnabled = enabled; + } + + public boolean isRemoveEnabled() { + return mRemoveEnabled; + } + + /** + * Set the resource id for the View that represents the drag + * handle in a list item. + * + * @param id An android resource id. + */ + public void setDragHandleId(int id) { + mDragHandleId = id; + } + + /** + * Set the resource id for the View that represents the fling + * handle in a list item. + * + * @param id An android resource id. + */ + public void setFlingHandleId(int id) { + mFlingHandleId = id; + } + + /** + * Set the resource id for the View that represents click + * removal button. + * + * @param id An android resource id. + */ + public void setClickRemoveId(int id) { + mClickRemoveId = id; + } + + /** + * Sets flags to restrict certain motions of the floating View + * based on DragSortController settings (such as remove mode). + * Starts the drag on the DragSortListView. + * + * @param position The list item position (includes headers). + * @param deltaX Touch x-coord minus left edge of floating View. + * @param deltaY Touch y-coord minus top edge of floating View. + * + * @return True if drag started, false otherwise. + */ + public boolean startDrag(int position, int deltaX, int deltaY) { + + int dragFlags = 0; + if (mSortEnabled && !mIsRemoving) { + dragFlags |= DragSortListView.DRAG_POS_Y | DragSortListView.DRAG_NEG_Y; + } + if (mRemoveEnabled && mIsRemoving) { + dragFlags |= DragSortListView.DRAG_POS_X; + dragFlags |= DragSortListView.DRAG_NEG_X; + } + + mDragging = mDslv.startDrag(position - mDslv.getHeaderViewsCount(), dragFlags, deltaX, + deltaY); + return mDragging; + } + + @Override + public boolean onTouch(View v, MotionEvent ev) { + if (!mDslv.isDragEnabled() || mDslv.listViewIntercepted()) { + return false; + } + + mDetector.onTouchEvent(ev); + if (mRemoveEnabled && mDragging && mRemoveMode == FLING_REMOVE) { + mFlingRemoveDetector.onTouchEvent(ev); + } + + int action = ev.getAction() & MotionEvent.ACTION_MASK; + switch (action) { + case MotionEvent.ACTION_DOWN: + mCurrX = (int) ev.getX(); + mCurrY = (int) ev.getY(); + break; + case MotionEvent.ACTION_UP: + if (mRemoveEnabled && mIsRemoving) { + int x = mPositionX >= 0 ? mPositionX : -mPositionX; + int removePoint = mDslv.getWidth() / 2; + if (x > removePoint) { + mDslv.stopDragWithVelocity(true, 0); + } + } + case MotionEvent.ACTION_CANCEL: + mIsRemoving = false; + mDragging = false; + break; + } + + return false; + } + + /** + * Overrides to provide fading when slide removal is enabled. + */ + @Override + public void onDragFloatView(View floatView, Point position, Point touch) { + + if (mRemoveEnabled && mIsRemoving) { + mPositionX = position.x; + } + } + + /** + * Get the position to start dragging based on the ACTION_DOWN + * MotionEvent. This function simply calls + * {@link #dragHandleHitPosition(MotionEvent)}. Override + * to change drag handle behavior; + * this function is called internally when an ACTION_DOWN + * event is detected. + * + * @param ev The ACTION_DOWN MotionEvent. + * + * @return The list position to drag if a drag-init gesture is + * detected; MISS if unsuccessful. + */ + public int startDragPosition(MotionEvent ev) { + return dragHandleHitPosition(ev); + } + + public int startFlingPosition(MotionEvent ev) { + return mRemoveMode == FLING_REMOVE ? flingHandleHitPosition(ev) : MISS; + } + + /** + * Checks for the touch of an item's drag handle (specified by + * {@link #setDragHandleId(int)}), and returns that item's position + * if a drag handle touch was detected. + * + * @param ev The ACTION_DOWN MotionEvent. + + * @return The list position of the item whose drag handle was + * touched; MISS if unsuccessful. + */ + public int dragHandleHitPosition(MotionEvent ev) { + return viewIdHitPosition(ev, mDragHandleId); + } + + public int flingHandleHitPosition(MotionEvent ev) { + return viewIdHitPosition(ev, mFlingHandleId); + } + + public int viewIdHitPosition(MotionEvent ev, int id) { + final int x = (int) ev.getX(); + final int y = (int) ev.getY(); + + int touchPos = mDslv.pointToPosition(x, y); // includes headers/footers + + final int numHeaders = mDslv.getHeaderViewsCount(); + final int numFooters = mDslv.getFooterViewsCount(); + final int count = mDslv.getCount(); + + // Log.d("mobeta", "touch down on position " + itemnum); + // We're only interested if the touch was on an + // item that's not a header or footer. + if (touchPos != AdapterView.INVALID_POSITION && touchPos >= numHeaders + && touchPos < (count - numFooters)) { + final View item = mDslv.getChildAt(touchPos - mDslv.getFirstVisiblePosition()); + final int rawX = (int) ev.getRawX(); + final int rawY = (int) ev.getRawY(); + + View dragBox = id == 0 ? item : (View) item.findViewById(id); + if (dragBox != null) { + dragBox.getLocationOnScreen(mTempLoc); + + if (rawX > mTempLoc[0] && rawY > mTempLoc[1] && + rawX < mTempLoc[0] + dragBox.getWidth() && + rawY < mTempLoc[1] + dragBox.getHeight()) { + + mItemX = item.getLeft(); + mItemY = item.getTop(); + + return touchPos; + } + } + } + + return MISS; + } + + @Override + public boolean onDown(MotionEvent ev) { + if (mRemoveEnabled && mRemoveMode == CLICK_REMOVE) { + mClickRemoveHitPos = viewIdHitPosition(ev, mClickRemoveId); + } + + mHitPos = startDragPosition(ev); + if (mHitPos != MISS && mDragInitMode == ON_DOWN) { + startDrag(mHitPos, (int) ev.getX() - mItemX, (int) ev.getY() - mItemY); + } + + mIsRemoving = false; + mCanDrag = true; + mPositionX = 0; + mFlingHitPos = startFlingPosition(ev); + + return true; + } + + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { + + final int x1 = (int) e1.getX(); + final int y1 = (int) e1.getY(); + final int x2 = (int) e2.getX(); + final int y2 = (int) e2.getY(); + final int deltaX = x2 - mItemX; + final int deltaY = y2 - mItemY; + + if (mCanDrag && !mDragging && (mHitPos != MISS || mFlingHitPos != MISS)) { + if (mHitPos != MISS) { + if (mDragInitMode == ON_DRAG && Math.abs(y2 - y1) > mTouchSlop && mSortEnabled) { + startDrag(mHitPos, deltaX, deltaY); + } + else if (mDragInitMode != ON_DOWN && Math.abs(x2 - x1) > mTouchSlop && mRemoveEnabled) + { + mIsRemoving = true; + startDrag(mFlingHitPos, deltaX, deltaY); + } + } else if (mFlingHitPos != MISS) { + if (Math.abs(x2 - x1) > mTouchSlop && mRemoveEnabled) { + mIsRemoving = true; + startDrag(mFlingHitPos, deltaX, deltaY); + } else if (Math.abs(y2 - y1) > mTouchSlop) { + mCanDrag = false; // if started to scroll the list then + // don't allow sorting nor fling-removing + } + } + } + // return whatever + return false; + } + + @Override + public void onLongPress(MotionEvent e) { + // Log.d("mobeta", "lift listener long pressed"); + if (mHitPos != MISS && mDragInitMode == ON_LONG_PRESS) { + mDslv.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + startDrag(mHitPos, mCurrX - mItemX, mCurrY - mItemY); + } + } + + // complete the OnGestureListener interface + @Override + public final boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { + return false; + } + + // complete the OnGestureListener interface + @Override + public boolean onSingleTapUp(MotionEvent ev) { + if (mRemoveEnabled && mRemoveMode == CLICK_REMOVE) { + if (mClickRemoveHitPos != MISS) { + mDslv.removeItem(mClickRemoveHitPos - mDslv.getHeaderViewsCount()); + } + } + return true; + } + + // complete the OnGestureListener interface + @Override + public void onShowPress(MotionEvent ev) { + // do nothing + } + + private GestureDetector.OnGestureListener mFlingRemoveListener = + new GestureDetector.SimpleOnGestureListener() { + @Override + public final boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) { + // Log.d("mobeta", "on fling remove called"); + if (mRemoveEnabled && mIsRemoving) { + int w = mDslv.getWidth(); + int minPos = w / 5; + if (velocityX > mFlingSpeed) { + if (mPositionX > -minPos) { + mDslv.stopDragWithVelocity(true, velocityX); + } + } else if (velocityX < -mFlingSpeed) { + if (mPositionX < minPos) { + mDslv.stopDragWithVelocity(true, velocityX); + } + } + mIsRemoving = false; + } + return false; + } + }; + +} diff --git a/library/src/main/java/com/mobeta/android/dslv/DragSortCursorAdapter.java b/library/src/main/java/com/mobeta/android/dslv/DragSortCursorAdapter.java new file mode 100644 index 00000000..267c6f86 --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/DragSortCursorAdapter.java @@ -0,0 +1,241 @@ +package com.mobeta.android.dslv; + +import java.util.ArrayList; + +import android.content.Context; +import android.database.Cursor; +import android.util.SparseIntArray; +import android.view.View; +import android.view.ViewGroup; +import android.support.v4.widget.CursorAdapter; + + +/** + * A subclass of {@link android.widget.CursorAdapter} that provides + * reordering of the elements in the Cursor based on completed + * drag-sort operations. The reordering is a simple mapping of + * list positions into Cursor positions (the Cursor is unchanged). + * To persist changes made by drag-sorts, one can retrieve the + * mapping with the {@link #getCursorPositions()} method, which + * returns the reordered list of Cursor positions. + * + * An instance of this class is passed + * to {@link DragSortListView#setAdapter(ListAdapter)} and, since + * this class implements the {@link DragSortListView.DragSortListener} + * interface, it is automatically set as the DragSortListener for + * the DragSortListView instance. + */ +public abstract class DragSortCursorAdapter extends CursorAdapter implements DragSortListView.DragSortListener { + + public static final int REMOVED = -1; + + /** + * Key is ListView position, value is Cursor position + */ + private SparseIntArray mListMapping = new SparseIntArray(); + + private ArrayList mRemovedCursorPositions = new ArrayList(); + + public DragSortCursorAdapter(Context context, Cursor c) { + super(context, c); + } + + public DragSortCursorAdapter(Context context, Cursor c, boolean autoRequery) { + super(context, c, autoRequery); + } + + public DragSortCursorAdapter(Context context, Cursor c, int flags) { + super(context, c, flags); + } + + /** + * Swaps Cursor and clears list-Cursor mapping. + * + * @see android.widget.CursorAdapter#swapCursor(android.database.Cursor) + */ + @Override + public Cursor swapCursor(Cursor newCursor) { + Cursor old = super.swapCursor(newCursor); + resetMappings(); + return old; + } + + /** + * Changes Cursor and clears list-Cursor mapping. + * + * @see android.widget.CursorAdapter#changeCursor(android.database.Cursor) + */ + @Override + public void changeCursor(Cursor cursor) { + super.changeCursor(cursor); + resetMappings(); + } + + /** + * Resets list-cursor mapping. + */ + public void reset() { + resetMappings(); + notifyDataSetChanged(); + } + + private void resetMappings() { + mListMapping.clear(); + mRemovedCursorPositions.clear(); + } + + @Override + public Object getItem(int position) { + return super.getItem(mListMapping.get(position, position)); + } + + @Override + public long getItemId(int position) { + return super.getItemId(mListMapping.get(position, position)); + } + + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + return super.getDropDownView(mListMapping.get(position, position), convertView, parent); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return super.getView(mListMapping.get(position, position), convertView, parent); + } + + /** + * On drop, this updates the mapping between Cursor positions + * and ListView positions. The Cursor is unchanged. Retrieve + * the current mapping with {@link getCursorPositions()}. + * + * @see DragSortListView.DropListener#drop(int, int) + */ + @Override + public void drop(int from, int to) { + if (from != to) { + int cursorFrom = mListMapping.get(from, from); + + if (from > to) { + for (int i = from; i > to; --i) { + mListMapping.put(i, mListMapping.get(i - 1, i - 1)); + } + } else { + for (int i = from; i < to; ++i) { + mListMapping.put(i, mListMapping.get(i + 1, i + 1)); + } + } + mListMapping.put(to, cursorFrom); + + cleanMapping(); + notifyDataSetChanged(); + } + } + + /** + * On remove, this updates the mapping between Cursor positions + * and ListView positions. The Cursor is unchanged. Retrieve + * the current mapping with {@link getCursorPositions()}. + * + * @see DragSortListView.RemoveListener#remove(int) + */ + @Override + public void remove(int which) { + int cursorPos = mListMapping.get(which, which); + if (!mRemovedCursorPositions.contains(cursorPos)) { + mRemovedCursorPositions.add(cursorPos); + } + + int newCount = getCount(); + for (int i = which; i < newCount; ++i) { + mListMapping.put(i, mListMapping.get(i + 1, i + 1)); + } + + mListMapping.delete(newCount); + + cleanMapping(); + notifyDataSetChanged(); + } + + /** + * Does nothing. Just completes DragSortListener interface. + */ + @Override + public void drag(int from, int to) { + // do nothing + } + + /** + * Remove unnecessary mappings from sparse array. + */ + private void cleanMapping() { + ArrayList toRemove = new ArrayList(); + + int size = mListMapping.size(); + for (int i = 0; i < size; ++i) { + if (mListMapping.keyAt(i) == mListMapping.valueAt(i)) { + toRemove.add(mListMapping.keyAt(i)); + } + } + + size = toRemove.size(); + for (int i = 0; i < size; ++i) { + mListMapping.delete(toRemove.get(i)); + } + } + + @Override + public int getCount() { + return super.getCount() - mRemovedCursorPositions.size(); + } + + /** + * Get the Cursor position mapped to by the provided list position + * (given all previously handled drag-sort + * operations). + * + * @param position List position + * + * @return The mapped-to Cursor position + */ + public int getCursorPosition(int position) { + return mListMapping.get(position, position); + } + + /** + * Get the current order of Cursor positions presented by the + * list. + */ + public ArrayList getCursorPositions() { + ArrayList result = new ArrayList(); + + for (int i = 0; i < getCount(); ++i) { + result.add(mListMapping.get(i, i)); + } + + return result; + } + + /** + * Get the list position mapped to by the provided Cursor position. + * If the provided Cursor position has been removed by a drag-sort, + * this returns {@link #REMOVED}. + * + * @param cursorPosition A Cursor position + * @return The mapped-to list position or REMOVED + */ + public int getListPosition(int cursorPosition) { + if (mRemovedCursorPositions.contains(cursorPosition)) { + return REMOVED; + } + + int index = mListMapping.indexOfValue(cursorPosition); + if (index < 0) { + return cursorPosition; + } else { + return mListMapping.keyAt(index); + } + } + + +} diff --git a/library/src/main/java/com/mobeta/android/dslv/DragSortItemView.java b/library/src/main/java/com/mobeta/android/dslv/DragSortItemView.java new file mode 100644 index 00000000..cef7b82b --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/DragSortItemView.java @@ -0,0 +1,100 @@ +package com.mobeta.android.dslv; + +import android.content.Context; +import android.view.Gravity; +import android.view.View; +import android.view.View.MeasureSpec; +import android.view.ViewGroup; +import android.widget.AbsListView; +import android.util.Log; + +/** + * Lightweight ViewGroup that wraps list items obtained from user's + * ListAdapter. ItemView expects a single child that has a definite + * height (i.e. the child's layout height is not MATCH_PARENT). + * The width of + * ItemView will always match the width of its child (that is, + * the width MeasureSpec given to ItemView is passed directly + * to the child, and the ItemView measured width is set to the + * child's measured width). The height of ItemView can be anything; + * the + * + * + * The purpose of this class is to optimize slide + * shuffle animations. + */ +public class DragSortItemView extends ViewGroup { + + private int mGravity = Gravity.TOP; + + public DragSortItemView(Context context) { + super(context); + + // always init with standard ListView layout params + setLayoutParams(new AbsListView.LayoutParams( + ViewGroup.LayoutParams.FILL_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT)); + + //setClipChildren(true); + } + + public void setGravity(int gravity) { + mGravity = gravity; + } + + public int getGravity() { + return mGravity; + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + final View child = getChildAt(0); + + if (child == null) { + return; + } + + if (mGravity == Gravity.TOP) { + child.layout(0, 0, getMeasuredWidth(), child.getMeasuredHeight()); + } else { + child.layout(0, getMeasuredHeight() - child.getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight()); + } + } + + /** + * + */ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + + int height = MeasureSpec.getSize(heightMeasureSpec); + int width = MeasureSpec.getSize(widthMeasureSpec); + + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + final View child = getChildAt(0); + if (child == null) { + setMeasuredDimension(0, width); + return; + } + + if (child.isLayoutRequested()) { + // Always let child be as tall as it wants. + measureChild(child, widthMeasureSpec, + MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + } + + if (heightMode == MeasureSpec.UNSPECIFIED) { + ViewGroup.LayoutParams lp = getLayoutParams(); + + if (lp.height > 0) { + height = lp.height; + } else { + height = child.getMeasuredHeight(); + } + } + + setMeasuredDimension(width, height); + } + +} diff --git a/library/src/main/java/com/mobeta/android/dslv/DragSortItemViewCheckable.java b/library/src/main/java/com/mobeta/android/dslv/DragSortItemViewCheckable.java new file mode 100644 index 00000000..27d612e0 --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/DragSortItemViewCheckable.java @@ -0,0 +1,55 @@ +package com.mobeta.android.dslv; + +import android.content.Context; +import android.view.Gravity; +import android.view.View; +import android.view.View.MeasureSpec; +import android.view.ViewGroup; +import android.widget.AbsListView; +import android.widget.Checkable; +import android.util.Log; + +/** + * Lightweight ViewGroup that wraps list items obtained from user's + * ListAdapter. ItemView expects a single child that has a definite + * height (i.e. the child's layout height is not MATCH_PARENT). + * The width of + * ItemView will always match the width of its child (that is, + * the width MeasureSpec given to ItemView is passed directly + * to the child, and the ItemView measured width is set to the + * child's measured width). The height of ItemView can be anything; + * the + * + * + * The purpose of this class is to optimize slide + * shuffle animations. + */ +public class DragSortItemViewCheckable extends DragSortItemView implements Checkable { + + public DragSortItemViewCheckable(Context context) { + super(context); + } + + @Override + public boolean isChecked() { + View child = getChildAt(0); + if (child instanceof Checkable) + return ((Checkable) child).isChecked(); + else + return false; + } + + @Override + public void setChecked(boolean checked) { + View child = getChildAt(0); + if (child instanceof Checkable) + ((Checkable) child).setChecked(checked); + } + + @Override + public void toggle() { + View child = getChildAt(0); + if (child instanceof Checkable) + ((Checkable) child).toggle(); + } +} diff --git a/library/src/main/java/com/mobeta/android/dslv/DragSortListView.java b/library/src/main/java/com/mobeta/android/dslv/DragSortListView.java new file mode 100644 index 00000000..4f8ec744 --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/DragSortListView.java @@ -0,0 +1,3073 @@ +/* + * DragSortListView. + * + * A subclass of the Android ListView component that enables drag + * and drop re-ordering of list items. + * + * Copyright 2012 Carl Bauer + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.mobeta.android.dslv; + +import android.content.Context; +import android.content.res.TypedArray; +import android.database.DataSetObserver; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Point; +import android.graphics.drawable.Drawable; +import android.os.Environment; +import android.os.SystemClock; +import android.util.AttributeSet; +import android.util.Log; +import android.util.SparseBooleanArray; +import android.util.SparseIntArray; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AbsListView; +import android.widget.BaseAdapter; +import android.widget.Checkable; +import android.widget.ListAdapter; +import android.widget.ListView; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + +/** + * ListView subclass that mediates drag and drop resorting of items. + * + * + * @author heycosmo + * + */ +public class DragSortListView extends ListView { + + + /** + * The View that floats above the ListView and represents + * the dragged item. + */ + private View mFloatView; + + /** + * The float View location. First based on touch location + * and given deltaX and deltaY. Then restricted by callback + * to FloatViewManager.onDragFloatView(). Finally restricted + * by bounds of DSLV. + */ + private Point mFloatLoc = new Point(); + + private Point mTouchLoc = new Point(); + + /** + * The middle (in the y-direction) of the floating View. + */ + private int mFloatViewMid; + + /** + * Flag to make sure float View isn't measured twice + */ + private boolean mFloatViewOnMeasured = false; + + /** + * Watch the Adapter for data changes. Cancel a drag if + * coincident with a change. + */ + private DataSetObserver mObserver; + + /** + * Transparency for the floating View (XML attribute). + */ + private float mFloatAlpha = 1.0f; + private float mCurrFloatAlpha = 1.0f; + + /** + * While drag-sorting, the current position of the floating + * View. If dropped, the dragged item will land in this position. + */ + private int mFloatPos; + + /** + * The first expanded ListView position that helps represent + * the drop slot tracking the floating View. + */ + private int mFirstExpPos; + + /** + * The second expanded ListView position that helps represent + * the drop slot tracking the floating View. This can equal + * mFirstExpPos if there is no slide shuffle occurring; otherwise + * it is equal to mFirstExpPos + 1. + */ + private int mSecondExpPos; + + /** + * Flag set if slide shuffling is enabled. + */ + private boolean mAnimate = false; + + /** + * The user dragged from this position. + */ + private int mSrcPos; + + /** + * Offset (in x) within the dragged item at which the user + * picked it up (or first touched down with the digitalis). + */ + private int mDragDeltaX; + + /** + * Offset (in y) within the dragged item at which the user + * picked it up (or first touched down with the digitalis). + */ + private int mDragDeltaY; + + + /** + * The difference (in x) between screen coordinates and coordinates + * in this view. + */ + private int mOffsetX; + + /** + * The difference (in y) between screen coordinates and coordinates + * in this view. + */ + private int mOffsetY; + + /** + * A listener that receives callbacks whenever the floating View + * hovers over a new position. + */ + private DragListener mDragListener; + + /** + * A listener that receives a callback when the floating View + * is dropped. + */ + private DropListener mDropListener; + + /** + * A listener that receives a callback when the floating View + * (or more precisely the originally dragged item) is removed + * by one of the provided gestures. + */ + private RemoveListener mRemoveListener; + + /** + * Enable/Disable item dragging + * + * @attr name dslv:drag_enabled + */ + private boolean mDragEnabled = true; + + /** + * Drag state enum. + */ + private final static int IDLE = 0; + private final static int REMOVING = 1; + private final static int DROPPING = 2; + private final static int STOPPED = 3; + private final static int DRAGGING = 4; + + private int mDragState = IDLE; + + /** + * Height in pixels to which the originally dragged item + * is collapsed during a drag-sort. Currently, this value + * must be greater than zero. + */ + private int mItemHeightCollapsed = 1; + + /** + * Height of the floating View. Stored for the purpose of + * providing the tracking drop slot. + */ + private int mFloatViewHeight; + + /** + * Convenience member. See above. + */ + private int mFloatViewHeightHalf; + + /** + * Save the given width spec for use in measuring children + */ + private int mWidthMeasureSpec = 0; + + /** + * Sample Views ultimately used for calculating the height + * of ListView items that are off-screen. + */ + private View[] mSampleViewTypes = new View[1]; + + /** + * Drag-scroll encapsulator! + */ + private DragScroller mDragScroller; + + /** + * Determines the start of the upward drag-scroll region + * at the top of the ListView. Specified by a fraction + * of the ListView height, thus screen resolution agnostic. + */ + private float mDragUpScrollStartFrac = 1.0f / 3.0f; + + /** + * Determines the start of the downward drag-scroll region + * at the bottom of the ListView. Specified by a fraction + * of the ListView height, thus screen resolution agnostic. + */ + private float mDragDownScrollStartFrac = 1.0f / 3.0f; + + /** + * The following are calculated from the above fracs. + */ + private int mUpScrollStartY; + private int mDownScrollStartY; + private float mDownScrollStartYF; + private float mUpScrollStartYF; + + /** + * Calculated from above above and current ListView height. + */ + private float mDragUpScrollHeight; + + /** + * Calculated from above above and current ListView height. + */ + private float mDragDownScrollHeight; + + /** + * Maximum drag-scroll speed in pixels per ms. Only used with + * default linear drag-scroll profile. + */ + private float mMaxScrollSpeed = 0.5f; + + /** + * Defines the scroll speed during a drag-scroll. User can + * provide their own; this default is a simple linear profile + * where scroll speed increases linearly as the floating View + * nears the top/bottom of the ListView. + */ + private DragScrollProfile mScrollProfile = new DragScrollProfile() { + @Override + public float getSpeed(float w, long t) { + return mMaxScrollSpeed * w; + } + }; + + /** + * Current touch x. + */ + private int mX; + + /** + * Current touch y. + */ + private int mY; + + /** + * Last touch x. + */ + private int mLastX; + + /** + * Last touch y. + */ + private int mLastY; + + /** + * The touch y-coord at which drag started + */ + private int mDragStartY; + + /** + * Drag flag bit. Floating View can move in the positive + * x direction. + */ + public final static int DRAG_POS_X = 0x1; + + /** + * Drag flag bit. Floating View can move in the negative + * x direction. + */ + public final static int DRAG_NEG_X = 0x2; + + /** + * Drag flag bit. Floating View can move in the positive + * y direction. This is subtle. What this actually means is + * that, if enabled, the floating View can be dragged below its starting + * position. Remove in favor of upper-bounding item position? + */ + public final static int DRAG_POS_Y = 0x4; + + /** + * Drag flag bit. Floating View can move in the negative + * y direction. This is subtle. What this actually means is + * that the floating View can be dragged above its starting + * position. Remove in favor of lower-bounding item position? + */ + public final static int DRAG_NEG_Y = 0x8; + + /** + * Flags that determine limits on the motion of the + * floating View. See flags above. + */ + private int mDragFlags = 0; + + /** + * Last call to an on*TouchEvent was a call to + * onInterceptTouchEvent. + */ + private boolean mLastCallWasIntercept = false; + + /** + * A touch event is in progress. + */ + private boolean mInTouchEvent = false; + + /** + * Let the user customize the floating View. + */ + private FloatViewManager mFloatViewManager = null; + + /** + * Given to ListView to cancel its action when a drag-sort + * begins. + */ + private MotionEvent mCancelEvent; + + /** + * Enum telling where to cancel the ListView action when a + * drag-sort begins + */ + private static final int NO_CANCEL = 0; + private static final int ON_TOUCH_EVENT = 1; + private static final int ON_INTERCEPT_TOUCH_EVENT = 2; + + /** + * Where to cancel the ListView action when a + * drag-sort begins + */ + private int mCancelMethod = NO_CANCEL; + + /** + * Determines when a slide shuffle animation starts. That is, + * defines how close to the edge of the drop slot the floating + * View must be to initiate the slide. + */ + private float mSlideRegionFrac = 0.25f; + + /** + * Number between 0 and 1 indicating the relative location of + * a sliding item (only used if drag-sort animations + * are turned on). Nearly 1 means the item is + * at the top of the slide region (nearly full blank item + * is directly below). + */ + private float mSlideFrac = 0.0f; + + /** + * Wraps the user-provided ListAdapter. This is used to wrap each + * item View given by the user inside another View (currenly + * a RelativeLayout) which + * expands and collapses to simulate the item shuffling. + */ + private AdapterWrapper mAdapterWrapper; + + /** + * Turn on custom debugger. + */ + private boolean mTrackDragSort = false; + + /** + * Debugging class. + */ + private DragSortTracker mDragSortTracker; + + /** + * Needed for adjusting item heights from within layoutChildren + */ + private boolean mBlockLayoutRequests = false; + + /** + * Set to true when a down event happens during drag sort; + * for example, when drag finish animations are + * playing. + */ + private boolean mIgnoreTouchEvent = false; + + /** + * Caches DragSortItemView child heights. Sometimes DSLV has to + * know the height of an offscreen item. Since ListView virtualizes + * these, DSLV must get the item from the ListAdapter to obtain + * its height. That process can be expensive, but often the same + * offscreen item will be requested many times in a row. Once an + * offscreen item height is calculated, we cache it in this guy. + * Actually, we cache the height of the child of the + * DragSortItemView since the item height changes often during a + * drag-sort. + */ + private static final int sCacheSize = 3; + private HeightCache mChildHeightCache = new HeightCache(sCacheSize); + + private RemoveAnimator mRemoveAnimator; + + private LiftAnimator mLiftAnimator; + + private DropAnimator mDropAnimator; + + private boolean mUseRemoveVelocity; + private float mRemoveVelocityX = 0; + + public DragSortListView(Context context, AttributeSet attrs) { + super(context, attrs); + + int defaultDuration = 150; + int removeAnimDuration = defaultDuration; // ms + int dropAnimDuration = defaultDuration; // ms + + if (attrs != null) { + TypedArray a = getContext().obtainStyledAttributes(attrs, + R.styleable.DragSortListView, 0, 0); + + mItemHeightCollapsed = Math.max(1, a.getDimensionPixelSize( + R.styleable.DragSortListView_collapsed_height, 1)); + + mTrackDragSort = a.getBoolean( + R.styleable.DragSortListView_track_drag_sort, false); + + if (mTrackDragSort) { + mDragSortTracker = new DragSortTracker(); + } + + // alpha between 0 and 255, 0=transparent, 255=opaque + mFloatAlpha = a.getFloat(R.styleable.DragSortListView_float_alpha, mFloatAlpha); + mCurrFloatAlpha = mFloatAlpha; + + mDragEnabled = a.getBoolean(R.styleable.DragSortListView_drag_enabled, mDragEnabled); + + mSlideRegionFrac = Math.max(0.0f, + Math.min(1.0f, 1.0f - a.getFloat( + R.styleable.DragSortListView_slide_shuffle_speed, + 0.75f))); + + mAnimate = mSlideRegionFrac > 0.0f; + + float frac = a.getFloat( + R.styleable.DragSortListView_drag_scroll_start, + mDragUpScrollStartFrac); + + setDragScrollStart(frac); + + mMaxScrollSpeed = a.getFloat( + R.styleable.DragSortListView_max_drag_scroll_speed, + mMaxScrollSpeed); + + removeAnimDuration = a.getInt( + R.styleable.DragSortListView_remove_animation_duration, + removeAnimDuration); + + dropAnimDuration = a.getInt( + R.styleable.DragSortListView_drop_animation_duration, + dropAnimDuration); + + boolean useDefault = a.getBoolean( + R.styleable.DragSortListView_use_default_controller, + true); + + if (useDefault) { + boolean removeEnabled = a.getBoolean( + R.styleable.DragSortListView_remove_enabled, + false); + int removeMode = a.getInt( + R.styleable.DragSortListView_remove_mode, + DragSortController.FLING_REMOVE); + boolean sortEnabled = a.getBoolean( + R.styleable.DragSortListView_sort_enabled, + true); + int dragInitMode = a.getInt( + R.styleable.DragSortListView_drag_start_mode, + DragSortController.ON_DOWN); + int dragHandleId = a.getResourceId( + R.styleable.DragSortListView_drag_handle_id, + 0); + int flingHandleId = a.getResourceId( + R.styleable.DragSortListView_fling_handle_id, + 0); + int clickRemoveId = a.getResourceId( + R.styleable.DragSortListView_click_remove_id, + 0); + int bgColor = a.getColor( + R.styleable.DragSortListView_float_background_color, + Color.BLACK); + + DragSortController controller = new DragSortController( + this, dragHandleId, dragInitMode, removeMode, + clickRemoveId, flingHandleId); + controller.setRemoveEnabled(removeEnabled); + controller.setSortEnabled(sortEnabled); + controller.setBackgroundColor(bgColor); + + mFloatViewManager = controller; + setOnTouchListener(controller); + } + + a.recycle(); + } + + mDragScroller = new DragScroller(); + + float smoothness = 0.5f; + if (removeAnimDuration > 0) { + mRemoveAnimator = new RemoveAnimator(smoothness, removeAnimDuration); + } + // mLiftAnimator = new LiftAnimator(smoothness, 100); + if (dropAnimDuration > 0) { + mDropAnimator = new DropAnimator(smoothness, dropAnimDuration); + } + + mCancelEvent = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0f, 0f, 0f, 0f, 0, 0f, + 0f, 0, 0); + + // construct the dataset observer + mObserver = new DataSetObserver() { + private void cancel() { + if (mDragState == DRAGGING) { + cancelDrag(); + } + } + + @Override + public void onChanged() { + cancel(); + } + + @Override + public void onInvalidated() { + cancel(); + } + }; + } + + /** + * Usually called from a FloatViewManager. The float alpha + * will be reset to the xml-defined value every time a drag + * is stopped. + */ + public void setFloatAlpha(float alpha) { + mCurrFloatAlpha = alpha; + } + + public float getFloatAlpha() { + return mCurrFloatAlpha; + } + + /** + * Set maximum drag scroll speed in positions/second. Only applies + * if using default ScrollSpeedProfile. + * + * @param max Maximum scroll speed. + */ + public void setMaxScrollSpeed(float max) { + mMaxScrollSpeed = max; + } + + /** + * For each DragSortListView Listener interface implemented by + * adapter, this method calls the appropriate + * set*Listener method with adapter as the argument. + * + * @param adapter The ListAdapter providing data to back + * DragSortListView. + * + * @see android.widget.ListView#setAdapter(android.widget.ListAdapter) + */ + @Override + public void setAdapter(ListAdapter adapter) { + if (adapter != null) { + mAdapterWrapper = new AdapterWrapper(adapter); + adapter.registerDataSetObserver(mObserver); + + if (adapter instanceof DropListener) { + setDropListener((DropListener) adapter); + } + if (adapter instanceof DragListener) { + setDragListener((DragListener) adapter); + } + if (adapter instanceof RemoveListener) { + setRemoveListener((RemoveListener) adapter); + } + } else { + mAdapterWrapper = null; + } + + super.setAdapter(mAdapterWrapper); + } + + /** + * As opposed to {@link ListView#getAdapter()}, which returns + * a heavily wrapped ListAdapter (DragSortListView wraps the + * input ListAdapter {\emph and} ListView wraps the wrapped one). + * + * @return The ListAdapter set as the argument of {@link setAdapter()} + */ + public ListAdapter getInputAdapter() { + if (mAdapterWrapper == null) { + return null; + } else { + return mAdapterWrapper.getAdapter(); + } + } + + private class AdapterWrapper extends BaseAdapter { + private ListAdapter mAdapter; + + public AdapterWrapper(ListAdapter adapter) { + super(); + mAdapter = adapter; + + mAdapter.registerDataSetObserver(new DataSetObserver() { + public void onChanged() { + notifyDataSetChanged(); + } + + public void onInvalidated() { + notifyDataSetInvalidated(); + } + }); + } + + public ListAdapter getAdapter() { + return mAdapter; + } + + @Override + public long getItemId(int position) { + return mAdapter.getItemId(position); + } + + @Override + public Object getItem(int position) { + return mAdapter.getItem(position); + } + + @Override + public int getCount() { + return mAdapter.getCount(); + } + + @Override + public boolean areAllItemsEnabled() { + return mAdapter.areAllItemsEnabled(); + } + + @Override + public boolean isEnabled(int position) { + return mAdapter.isEnabled(position); + } + + @Override + public int getItemViewType(int position) { + return mAdapter.getItemViewType(position); + } + + @Override + public int getViewTypeCount() { + return mAdapter.getViewTypeCount(); + } + + @Override + public boolean hasStableIds() { + return mAdapter.hasStableIds(); + } + + @Override + public boolean isEmpty() { + return mAdapter.isEmpty(); + } + + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + + DragSortItemView v; + View child; + // Log.d("mobeta", + // "getView: position="+position+" convertView="+convertView); + if (convertView != null) { + v = (DragSortItemView) convertView; + View oldChild = v.getChildAt(0); + + child = mAdapter.getView(position, oldChild, DragSortListView.this); + if (child != oldChild) { + // shouldn't get here if user is reusing convertViews + // properly + if (oldChild != null) { + v.removeViewAt(0); + } + v.addView(child); + } + } else { + child = mAdapter.getView(position, null, DragSortListView.this); + if (child instanceof Checkable) { + v = new DragSortItemViewCheckable(getContext()); + } else { + v = new DragSortItemView(getContext()); + } + v.setLayoutParams(new AbsListView.LayoutParams( + ViewGroup.LayoutParams.FILL_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT)); + v.addView(child); + } + + // Set the correct item height given drag state; passed + // View needs to be measured if measurement is required. + adjustItem(position + getHeaderViewsCount(), v, true); + + return v; + } + } + + private void drawDivider(int expPosition, Canvas canvas) { + + final Drawable divider = getDivider(); + final int dividerHeight = getDividerHeight(); + // Log.d("mobeta", "div="+divider+" divH="+dividerHeight); + + if (divider != null && dividerHeight != 0) { + final ViewGroup expItem = (ViewGroup) getChildAt(expPosition + - getFirstVisiblePosition()); + if (expItem != null) { + final int l = getPaddingLeft(); + final int r = getWidth() - getPaddingRight(); + final int t; + final int b; + + final int childHeight = expItem.getChildAt(0).getHeight(); + + if (expPosition > mSrcPos) { + t = expItem.getTop() + childHeight; + b = t + dividerHeight; + } else { + b = expItem.getBottom() - childHeight; + t = b - dividerHeight; + } + // Log.d("mobeta", "l="+l+" t="+t+" r="+r+" b="+b); + + // Have to clip to support ColorDrawable on <= Gingerbread + canvas.save(); + canvas.clipRect(l, t, r, b); + divider.setBounds(l, t, r, b); + divider.draw(canvas); + canvas.restore(); + } + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + + if (mDragState != IDLE) { + // draw the divider over the expanded item + if (mFirstExpPos != mSrcPos) { + drawDivider(mFirstExpPos, canvas); + } + if (mSecondExpPos != mFirstExpPos && mSecondExpPos != mSrcPos) { + drawDivider(mSecondExpPos, canvas); + } + } + + if (mFloatView != null) { + // draw the float view over everything + final int w = mFloatView.getWidth(); + final int h = mFloatView.getHeight(); + + int x = mFloatLoc.x; + + int width = getWidth(); + if (x < 0) + x = -x; + float alphaMod; + if (x < width) { + alphaMod = ((float) (width - x)) / ((float) width); + alphaMod *= alphaMod; + } else { + alphaMod = 0; + } + + final int alpha = (int) (255f * mCurrFloatAlpha * alphaMod); + + canvas.save(); + // Log.d("mobeta", "clip rect bounds: " + canvas.getClipBounds()); + canvas.translate(mFloatLoc.x, mFloatLoc.y); + canvas.clipRect(0, 0, w, h); + + // Log.d("mobeta", "clip rect bounds: " + canvas.getClipBounds()); + canvas.saveLayerAlpha(0, 0, w, h, alpha, Canvas.ALL_SAVE_FLAG); + mFloatView.draw(canvas); + canvas.restore(); + canvas.restore(); + } + } + + private int getItemHeight(int position) { + View v = getChildAt(position - getFirstVisiblePosition()); + + if (v != null) { + // item is onscreen, just get the height of the View + return v.getHeight(); + } else { + // item is offscreen. get child height and calculate + // item height based on current shuffle state + return calcItemHeight(position, getChildHeight(position)); + } + } + + private void printPosData() { + Log.d("mobeta", "mSrcPos=" + mSrcPos + " mFirstExpPos=" + mFirstExpPos + " mSecondExpPos=" + + mSecondExpPos); + } + + private class HeightCache { + + private SparseIntArray mMap; + private ArrayList mOrder; + private int mMaxSize; + + public HeightCache(int size) { + mMap = new SparseIntArray(size); + mOrder = new ArrayList(size); + mMaxSize = size; + } + + /** + * Add item height at position if doesn't already exist. + */ + public void add(int position, int height) { + int currHeight = mMap.get(position, -1); + if (currHeight != height) { + if (currHeight == -1) { + if (mMap.size() == mMaxSize) { + // remove oldest entry + mMap.delete(mOrder.remove(0)); + } + } else { + // move position to newest slot + mOrder.remove((Integer) position); + } + mMap.put(position, height); + mOrder.add(position); + } + } + + public int get(int position) { + return mMap.get(position, -1); + } + + public void clear() { + mMap.clear(); + mOrder.clear(); + } + + } + + /** + * Get the shuffle edge for item at position when top of + * item is at y-coord top. Assumes that current item heights + * are consistent with current float view location and + * thus expanded positions and slide fraction. i.e. Should not be + * called between update of expanded positions/slide fraction + * and layoutChildren. + * + * @param position + * @param top + * @param height Height of item at position. If -1, this function + * calculates this height. + * + * @return Shuffle line between position-1 and position (for + * the given view of the list; that is, for when top of item at + * position has y-coord of given `top`). If + * floating View (treated as horizontal line) is dropped + * immediately above this line, it lands in position-1. If + * dropped immediately below this line, it lands in position. + */ + private int getShuffleEdge(int position, int top) { + + final int numHeaders = getHeaderViewsCount(); + final int numFooters = getFooterViewsCount(); + + // shuffle edges are defined between items that can be + // dragged; there are N-1 of them if there are N draggable + // items. + + if (position <= numHeaders || (position >= getCount() - numFooters)) { + return top; + } + + int divHeight = getDividerHeight(); + + int edge; + + int maxBlankHeight = mFloatViewHeight - mItemHeightCollapsed; + int childHeight = getChildHeight(position); + int itemHeight = getItemHeight(position); + + // first calculate top of item given that floating View is + // centered over src position + int otop = top; + if (mSecondExpPos <= mSrcPos) { + // items are expanded on and/or above the source position + + if (position == mSecondExpPos && mFirstExpPos != mSecondExpPos) { + if (position == mSrcPos) { + otop = top + itemHeight - mFloatViewHeight; + } else { + int blankHeight = itemHeight - childHeight; + otop = top + blankHeight - maxBlankHeight; + } + } else if (position > mSecondExpPos && position <= mSrcPos) { + otop = top - maxBlankHeight; + } + + } else { + // items are expanded on and/or below the source position + + if (position > mSrcPos && position <= mFirstExpPos) { + otop = top + maxBlankHeight; + } else if (position == mSecondExpPos && mFirstExpPos != mSecondExpPos) { + int blankHeight = itemHeight - childHeight; + otop = top + blankHeight; + } + } + + // otop is set + if (position <= mSrcPos) { + edge = otop + (mFloatViewHeight - divHeight - getChildHeight(position - 1)) / 2; + } else { + edge = otop + (childHeight - divHeight - mFloatViewHeight) / 2; + } + + return edge; + } + + private boolean updatePositions() { + + final int first = getFirstVisiblePosition(); + int startPos = mFirstExpPos; + View startView = getChildAt(startPos - first); + + if (startView == null) { + startPos = first + getChildCount() / 2; + startView = getChildAt(startPos - first); + } + int startTop = startView.getTop(); + + int itemHeight = startView.getHeight(); + + int edge = getShuffleEdge(startPos, startTop); + int lastEdge = edge; + + int divHeight = getDividerHeight(); + + // Log.d("mobeta", "float mid="+mFloatViewMid); + + int itemPos = startPos; + int itemTop = startTop; + if (mFloatViewMid < edge) { + // scanning up for float position + // Log.d("mobeta", " edge="+edge); + while (itemPos >= 0) { + itemPos--; + itemHeight = getItemHeight(itemPos); + + if (itemPos == 0) { + edge = itemTop - divHeight - itemHeight; + break; + } + + itemTop -= itemHeight + divHeight; + edge = getShuffleEdge(itemPos, itemTop); + // Log.d("mobeta", " edge="+edge); + + if (mFloatViewMid >= edge) { + break; + } + + lastEdge = edge; + } + } else { + // scanning down for float position + // Log.d("mobeta", " edge="+edge); + final int count = getCount(); + while (itemPos < count) { + if (itemPos == count - 1) { + edge = itemTop + divHeight + itemHeight; + break; + } + + itemTop += divHeight + itemHeight; + itemHeight = getItemHeight(itemPos + 1); + edge = getShuffleEdge(itemPos + 1, itemTop); + // Log.d("mobeta", " edge="+edge); + + // test for hit + if (mFloatViewMid < edge) { + break; + } + + lastEdge = edge; + itemPos++; + } + } + + final int numHeaders = getHeaderViewsCount(); + final int numFooters = getFooterViewsCount(); + + boolean updated = false; + + int oldFirstExpPos = mFirstExpPos; + int oldSecondExpPos = mSecondExpPos; + float oldSlideFrac = mSlideFrac; + + if (mAnimate) { + int edgeToEdge = Math.abs(edge - lastEdge); + + int edgeTop, edgeBottom; + if (mFloatViewMid < edge) { + edgeBottom = edge; + edgeTop = lastEdge; + } else { + edgeTop = edge; + edgeBottom = lastEdge; + } + // Log.d("mobeta", "edgeTop="+edgeTop+" edgeBot="+edgeBottom); + + int slideRgnHeight = (int) (0.5f * mSlideRegionFrac * edgeToEdge); + float slideRgnHeightF = (float) slideRgnHeight; + int slideEdgeTop = edgeTop + slideRgnHeight; + int slideEdgeBottom = edgeBottom - slideRgnHeight; + + // Three regions + if (mFloatViewMid < slideEdgeTop) { + mFirstExpPos = itemPos - 1; + mSecondExpPos = itemPos; + mSlideFrac = 0.5f * ((float) (slideEdgeTop - mFloatViewMid)) / slideRgnHeightF; + // Log.d("mobeta", + // "firstExp="+mFirstExpPos+" secExp="+mSecondExpPos+" slideFrac="+mSlideFrac); + } else if (mFloatViewMid < slideEdgeBottom) { + mFirstExpPos = itemPos; + mSecondExpPos = itemPos; + } else { + mFirstExpPos = itemPos; + mSecondExpPos = itemPos + 1; + mSlideFrac = 0.5f * (1.0f + ((float) (edgeBottom - mFloatViewMid)) + / slideRgnHeightF); + // Log.d("mobeta", + // "firstExp="+mFirstExpPos+" secExp="+mSecondExpPos+" slideFrac="+mSlideFrac); + } + + } else { + mFirstExpPos = itemPos; + mSecondExpPos = itemPos; + } + + // correct for headers and footers + if (mFirstExpPos < numHeaders) { + itemPos = numHeaders; + mFirstExpPos = itemPos; + mSecondExpPos = itemPos; + } else if (mSecondExpPos >= getCount() - numFooters) { + itemPos = getCount() - numFooters - 1; + mFirstExpPos = itemPos; + mSecondExpPos = itemPos; + } + + if (mFirstExpPos != oldFirstExpPos || mSecondExpPos != oldSecondExpPos + || mSlideFrac != oldSlideFrac) { + updated = true; + } + + if (itemPos != mFloatPos) { + if (mDragListener != null) { + mDragListener.drag(mFloatPos - numHeaders, itemPos - numHeaders); + } + + mFloatPos = itemPos; + updated = true; + } + + return updated; + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + if (mTrackDragSort) { + mDragSortTracker.appendState(); + } + } + + private class SmoothAnimator implements Runnable { + protected long mStartTime; + + private float mDurationF; + + private float mAlpha; + private float mA, mB, mC, mD; + + private boolean mCanceled; + + public SmoothAnimator(float smoothness, int duration) { + mAlpha = smoothness; + mDurationF = (float) duration; + mA = mD = 1f / (2f * mAlpha * (1f - mAlpha)); + mB = mAlpha / (2f * (mAlpha - 1f)); + mC = 1f / (1f - mAlpha); + } + + public float transform(float frac) { + if (frac < mAlpha) { + return mA * frac * frac; + } else if (frac < 1f - mAlpha) { + return mB + mC * frac; + } else { + return 1f - mD * (frac - 1f) * (frac - 1f); + } + } + + public void start() { + mStartTime = SystemClock.uptimeMillis(); + mCanceled = false; + onStart(); + post(this); + } + + public void cancel() { + mCanceled = true; + } + + public void onStart() { + // stub + } + + public void onUpdate(float frac, float smoothFrac) { + // stub + } + + public void onStop() { + // stub + } + + @Override + public void run() { + if (mCanceled) { + return; + } + + float fraction = ((float) (SystemClock.uptimeMillis() - mStartTime)) / mDurationF; + + if (fraction >= 1f) { + onUpdate(1f, 1f); + onStop(); + } else { + onUpdate(fraction, transform(fraction)); + post(this); + } + } + } + + /** + * Centers floating View under touch point. + */ + private class LiftAnimator extends SmoothAnimator { + + private float mInitDragDeltaY; + private float mFinalDragDeltaY; + + public LiftAnimator(float smoothness, int duration) { + super(smoothness, duration); + } + + @Override + public void onStart() { + mInitDragDeltaY = mDragDeltaY; + mFinalDragDeltaY = mFloatViewHeightHalf; + } + + @Override + public void onUpdate(float frac, float smoothFrac) { + if (mDragState != DRAGGING) { + cancel(); + } else { + mDragDeltaY = (int) (smoothFrac * mFinalDragDeltaY + (1f - smoothFrac) + * mInitDragDeltaY); + mFloatLoc.y = mY - mDragDeltaY; + doDragFloatView(true); + } + } + } + + /** + * Centers floating View over drop slot before destroying. + */ + private class DropAnimator extends SmoothAnimator { + + private int mDropPos; + private int srcPos; + private float mInitDeltaY; + private float mInitDeltaX; + + public DropAnimator(float smoothness, int duration) { + super(smoothness, duration); + } + + @Override + public void onStart() { + mDropPos = mFloatPos; + srcPos = mSrcPos; + mDragState = DROPPING; + mInitDeltaY = mFloatLoc.y - getTargetY(); + mInitDeltaX = mFloatLoc.x - getPaddingLeft(); + } + + private int getTargetY() { + final int first = getFirstVisiblePosition(); + final int otherAdjust = (mItemHeightCollapsed + getDividerHeight()) / 2; + View v = getChildAt(mDropPos - first); + int targetY = -1; + if (v != null) { + if (mDropPos == srcPos) { + targetY = v.getTop(); + } else if (mDropPos < srcPos) { + // expanded down + targetY = v.getTop() - otherAdjust; + } else { + // expanded up + targetY = v.getBottom() + otherAdjust - mFloatViewHeight; + } + } else { + // drop position is not on screen?? no animation + cancel(); + } + + return targetY; + } + + @Override + public void onUpdate(float frac, float smoothFrac) { + final int targetY = getTargetY(); + final int targetX = getPaddingLeft(); + final float deltaY = mFloatLoc.y - targetY; + final float deltaX = mFloatLoc.x - targetX; + final float f = 1f - smoothFrac; + if (f < Math.abs(deltaY / mInitDeltaY) || f < Math.abs(deltaX / mInitDeltaX)) { + mFloatLoc.y = targetY + (int) (mInitDeltaY * f); + mFloatLoc.x = getPaddingLeft() + (int) (mInitDeltaX * f); + doDragFloatView(true); + } + } + + @Override + public void onStop() { + dropFloatView(); + } + + } + + /** + * Collapses expanded items. + */ + private class RemoveAnimator extends SmoothAnimator { + + private float mFloatLocX; + private float mFirstStartBlank; + private float mSecondStartBlank; + + private int mFirstChildHeight = -1; + private int mSecondChildHeight = -1; + + private int mFirstPos; + private int mSecondPos; + private int srcPos; + + public RemoveAnimator(float smoothness, int duration) { + super(smoothness, duration); + } + + @Override + public void onStart() { + mFirstChildHeight = -1; + mSecondChildHeight = -1; + mFirstPos = mFirstExpPos; + mSecondPos = mSecondExpPos; + srcPos = mSrcPos; + mDragState = REMOVING; + + mFloatLocX = mFloatLoc.x; + if (mUseRemoveVelocity) { + float minVelocity = 2f * getWidth(); + if (mRemoveVelocityX == 0) { + mRemoveVelocityX = (mFloatLocX < 0 ? -1 : 1) * minVelocity; + } else { + minVelocity *= 2; + if (mRemoveVelocityX < 0 && mRemoveVelocityX > -minVelocity) + mRemoveVelocityX = -minVelocity; + else if (mRemoveVelocityX > 0 && mRemoveVelocityX < minVelocity) + mRemoveVelocityX = minVelocity; + } + } else { + destroyFloatView(); + } + } + + @Override + public void onUpdate(float frac, float smoothFrac) { + float f = 1f - smoothFrac; + + final int firstVis = getFirstVisiblePosition(); + View item = getChildAt(mFirstPos - firstVis); + ViewGroup.LayoutParams lp; + int blank; + + if (mUseRemoveVelocity) { + float dt = (float) (SystemClock.uptimeMillis() - mStartTime) / 1000; + if (dt == 0) + return; + float dx = mRemoveVelocityX * dt; + int w = getWidth(); + mRemoveVelocityX += (mRemoveVelocityX > 0 ? 1 : -1) * dt * w; + mFloatLocX += dx; + mFloatLoc.x = (int) mFloatLocX; + if (mFloatLocX < w && mFloatLocX > -w) { + mStartTime = SystemClock.uptimeMillis(); + doDragFloatView(true); + return; + } + } + + if (item != null) { + if (mFirstChildHeight == -1) { + mFirstChildHeight = getChildHeight(mFirstPos, item, false); + mFirstStartBlank = (float) (item.getHeight() - mFirstChildHeight); + } + blank = Math.max((int) (f * mFirstStartBlank), 1); + lp = item.getLayoutParams(); + lp.height = mFirstChildHeight + blank; + item.setLayoutParams(lp); + } + if (mSecondPos != mFirstPos) { + item = getChildAt(mSecondPos - firstVis); + if (item != null) { + if (mSecondChildHeight == -1) { + mSecondChildHeight = getChildHeight(mSecondPos, item, false); + mSecondStartBlank = (float) (item.getHeight() - mSecondChildHeight); + } + blank = Math.max((int) (f * mSecondStartBlank), 1); + lp = item.getLayoutParams(); + lp.height = mSecondChildHeight + blank; + item.setLayoutParams(lp); + } + } + } + + @Override + public void onStop() { + doRemoveItem(); + } + } + + public void removeItem(int which) { + + mUseRemoveVelocity = false; + removeItem(which, 0); + } + + /** + * Removes an item from the list and animates the removal. + * + * @param which Position to remove (NOTE: headers/footers ignored! + * this is a position in your input ListAdapter). + * @param velocityX + */ + public void removeItem(int which, float velocityX) { + if (mDragState == IDLE || mDragState == DRAGGING) { + + if (mDragState == IDLE) { + // called from outside drag-sort + mSrcPos = getHeaderViewsCount() + which; + mFirstExpPos = mSrcPos; + mSecondExpPos = mSrcPos; + mFloatPos = mSrcPos; + View v = getChildAt(mSrcPos - getFirstVisiblePosition()); + if (v != null) { + v.setVisibility(View.INVISIBLE); + } + } + + mDragState = REMOVING; + mRemoveVelocityX = velocityX; + + if (mInTouchEvent) { + switch (mCancelMethod) { + case ON_TOUCH_EVENT: + super.onTouchEvent(mCancelEvent); + break; + case ON_INTERCEPT_TOUCH_EVENT: + super.onInterceptTouchEvent(mCancelEvent); + break; + } + } + + if (mRemoveAnimator != null) { + mRemoveAnimator.start(); + } else { + doRemoveItem(which); + } + } + } + + /** + * Move an item, bypassing the drag-sort process. Simply calls + * through to {@link DropListener#drop(int, int)}. + * + * @param from Position to move (NOTE: headers/footers ignored! + * this is a position in your input ListAdapter). + * @param to Target position (NOTE: headers/footers ignored! + * this is a position in your input ListAdapter). + */ + public void moveItem(int from, int to) { + if (mDropListener != null) { + final int count = getInputAdapter().getCount(); + if (from >= 0 && from < count && to >= 0 && to < count) { + mDropListener.drop(from, to); + } + } + } + + /** + * Cancel a drag. Calls {@link #stopDrag(boolean, boolean)} with + * true as the first argument. + */ + public void cancelDrag() { + if (mDragState == DRAGGING) { + mDragScroller.stopScrolling(true); + destroyFloatView(); + clearPositions(); + adjustAllItems(); + + if (mInTouchEvent) { + mDragState = STOPPED; + } else { + mDragState = IDLE; + } + } + } + + private void clearPositions() { + mSrcPos = -1; + mFirstExpPos = -1; + mSecondExpPos = -1; + mFloatPos = -1; + } + + private void dropFloatView() { + // must set to avoid cancelDrag being called from the + // DataSetObserver + mDragState = DROPPING; + + if (mDropListener != null && mFloatPos >= 0 && mFloatPos < getCount()) { + final int numHeaders = getHeaderViewsCount(); + mDropListener.drop(mSrcPos - numHeaders, mFloatPos - numHeaders); + } + + destroyFloatView(); + + adjustOnReorder(); + clearPositions(); + adjustAllItems(); + + // now the drag is done + if (mInTouchEvent) { + mDragState = STOPPED; + } else { + mDragState = IDLE; + } + } + + private void doRemoveItem() { + doRemoveItem(mSrcPos - getHeaderViewsCount()); + } + + /** + * Removes dragged item from the list. Calls RemoveListener. + */ + private void doRemoveItem(int which) { + // must set to avoid cancelDrag being called from the + // DataSetObserver + mDragState = REMOVING; + + // end it + if (mRemoveListener != null) { + mRemoveListener.remove(which); + } + + destroyFloatView(); + + adjustOnReorder(); + clearPositions(); + + // now the drag is done + if (mInTouchEvent) { + mDragState = STOPPED; + } else { + mDragState = IDLE; + } + } + + private void adjustOnReorder() { + final int firstPos = getFirstVisiblePosition(); + // Log.d("mobeta", "first="+firstPos+" src="+mSrcPos); + if (mSrcPos < firstPos) { + // collapsed src item is off screen; + // adjust the scroll after item heights have been fixed + View v = getChildAt(0); + int top = 0; + if (v != null) { + top = v.getTop(); + } + // Log.d("mobeta", "top="+top+" fvh="+mFloatViewHeight); + setSelectionFromTop(firstPos - 1, top - getPaddingTop()); + } + } + + /** + * Stop a drag in progress. Pass true if you would + * like to remove the dragged item from the list. + * + * @param remove Remove the dragged item from the list. Calls + * a registered RemoveListener, if one exists. Otherwise, calls + * the DropListener, if one exists. + * + * @return True if the stop was successful. False if there is + * no floating View. + */ + public boolean stopDrag(boolean remove) { + mUseRemoveVelocity = false; + return stopDrag(remove, 0); + } + + public boolean stopDragWithVelocity(boolean remove, float velocityX) { + + mUseRemoveVelocity = true; + return stopDrag(remove, velocityX); + } + + public boolean stopDrag(boolean remove, float velocityX) { + if (mFloatView != null) { + mDragScroller.stopScrolling(true); + + if (remove) { + removeItem(mSrcPos - getHeaderViewsCount(), velocityX); + } else { + if (mDropAnimator != null) { + mDropAnimator.start(); + } else { + dropFloatView(); + } + } + + if (mTrackDragSort) { + mDragSortTracker.stopTracking(); + } + + return true; + } else { + // stop failed + return false; + } + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (mIgnoreTouchEvent) { + mIgnoreTouchEvent = false; + return false; + } + + if (!mDragEnabled) { + return super.onTouchEvent(ev); + } + + boolean more = false; + + boolean lastCallWasIntercept = mLastCallWasIntercept; + mLastCallWasIntercept = false; + + if (!lastCallWasIntercept) { + saveTouchCoords(ev); + } + + // if (mFloatView != null) { + if (mDragState == DRAGGING) { + onDragTouchEvent(ev); + more = true; // give us more! + } else { + // what if float view is null b/c we dropped in middle + // of drag touch event? + + // if (mDragState != STOPPED) { + if (mDragState == IDLE) { + if (super.onTouchEvent(ev)) { + more = true; + } + } + + int action = ev.getAction() & MotionEvent.ACTION_MASK; + + switch (action) { + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + doActionUpOrCancel(); + break; + default: + if (more) { + mCancelMethod = ON_TOUCH_EVENT; + } + } + } + + return more; + } + + private void doActionUpOrCancel() { + mCancelMethod = NO_CANCEL; + mInTouchEvent = false; + if (mDragState == STOPPED) { + mDragState = IDLE; + } + mCurrFloatAlpha = mFloatAlpha; + mListViewIntercepted = false; + mChildHeightCache.clear(); + } + + private void saveTouchCoords(MotionEvent ev) { + int action = ev.getAction() & MotionEvent.ACTION_MASK; + if (action != MotionEvent.ACTION_DOWN) { + mLastX = mX; + mLastY = mY; + } + mX = (int) ev.getX(); + mY = (int) ev.getY(); + if (action == MotionEvent.ACTION_DOWN) { + mLastX = mX; + mLastY = mY; + } + mOffsetX = (int) ev.getRawX() - mX; + mOffsetY = (int) ev.getRawY() - mY; + } + + public boolean listViewIntercepted() { + return mListViewIntercepted; + } + + private boolean mListViewIntercepted = false; + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + if (!mDragEnabled) { + return super.onInterceptTouchEvent(ev); + } + + saveTouchCoords(ev); + mLastCallWasIntercept = true; + + int action = ev.getAction() & MotionEvent.ACTION_MASK; + + if (action == MotionEvent.ACTION_DOWN) { + if (mDragState != IDLE) { + // intercept and ignore + mIgnoreTouchEvent = true; + return true; + } + mInTouchEvent = true; + } + + boolean intercept = false; + + // the following deals with calls to super.onInterceptTouchEvent + if (mFloatView != null) { + // super's touch event canceled in startDrag + intercept = true; + } else { + if (super.onInterceptTouchEvent(ev)) { + mListViewIntercepted = true; + intercept = true; + } + + switch (action) { + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + doActionUpOrCancel(); + break; + default: + if (intercept) { + mCancelMethod = ON_TOUCH_EVENT; + } else { + mCancelMethod = ON_INTERCEPT_TOUCH_EVENT; + } + } + } + + if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { + mInTouchEvent = false; + } + + return intercept; + } + + /** + * Set the width of each drag scroll region by specifying + * a fraction of the ListView height. + * + * @param heightFraction Fraction of ListView height. Capped at + * 0.5f. + * + */ + public void setDragScrollStart(float heightFraction) { + setDragScrollStarts(heightFraction, heightFraction); + } + + /** + * Set the width of each drag scroll region by specifying + * a fraction of the ListView height. + * + * @param upperFrac Fraction of ListView height for up-scroll bound. + * Capped at 0.5f. + * @param lowerFrac Fraction of ListView height for down-scroll bound. + * Capped at 0.5f. + * + */ + public void setDragScrollStarts(float upperFrac, float lowerFrac) { + if (lowerFrac > 0.5f) { + mDragDownScrollStartFrac = 0.5f; + } else { + mDragDownScrollStartFrac = lowerFrac; + } + + if (upperFrac > 0.5f) { + mDragUpScrollStartFrac = 0.5f; + } else { + mDragUpScrollStartFrac = upperFrac; + } + + if (getHeight() != 0) { + updateScrollStarts(); + } + } + + private void continueDrag(int x, int y) { + + // proposed position + mFloatLoc.x = x - mDragDeltaX; + mFloatLoc.y = y - mDragDeltaY; + + doDragFloatView(true); + + int minY = Math.min(y, mFloatViewMid + mFloatViewHeightHalf); + int maxY = Math.max(y, mFloatViewMid - mFloatViewHeightHalf); + + // get the current scroll direction + int currentScrollDir = mDragScroller.getScrollDir(); + + if (minY > mLastY && minY > mDownScrollStartY && currentScrollDir != DragScroller.DOWN) { + // dragged down, it is below the down scroll start and it is not + // scrolling up + + if (currentScrollDir != DragScroller.STOP) { + // moved directly from up scroll to down scroll + mDragScroller.stopScrolling(true); + } + + // start scrolling down + mDragScroller.startScrolling(DragScroller.DOWN); + } else if (maxY < mLastY && maxY < mUpScrollStartY && currentScrollDir != DragScroller.UP) { + // dragged up, it is above the up scroll start and it is not + // scrolling up + + if (currentScrollDir != DragScroller.STOP) { + // moved directly from down scroll to up scroll + mDragScroller.stopScrolling(true); + } + + // start scrolling up + mDragScroller.startScrolling(DragScroller.UP); + } + else if (maxY >= mUpScrollStartY && minY <= mDownScrollStartY + && mDragScroller.isScrolling()) { + // not in the upper nor in the lower drag-scroll regions but it is + // still scrolling + + mDragScroller.stopScrolling(true); + } + } + + private void updateScrollStarts() { + final int padTop = getPaddingTop(); + final int listHeight = getHeight() - padTop - getPaddingBottom(); + float heightF = (float) listHeight; + + mUpScrollStartYF = padTop + mDragUpScrollStartFrac * heightF; + mDownScrollStartYF = padTop + (1.0f - mDragDownScrollStartFrac) * heightF; + + mUpScrollStartY = (int) mUpScrollStartYF; + mDownScrollStartY = (int) mDownScrollStartYF; + + mDragUpScrollHeight = mUpScrollStartYF - padTop; + mDragDownScrollHeight = padTop + listHeight - mDownScrollStartYF; + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + updateScrollStarts(); + } + + private void adjustAllItems() { + final int first = getFirstVisiblePosition(); + final int last = getLastVisiblePosition(); + + int begin = Math.max(0, getHeaderViewsCount() - first); + int end = Math.min(last - first, getCount() - 1 - getFooterViewsCount() - first); + + for (int i = begin; i <= end; ++i) { + View v = getChildAt(i); + if (v != null) { + adjustItem(first + i, v, false); + } + } + } + + private void adjustItem(int position) { + View v = getChildAt(position - getFirstVisiblePosition()); + + if (v != null) { + adjustItem(position, v, false); + } + } + + /** + * Sets layout param height, gravity, and visibility on + * wrapped item. + */ + private void adjustItem(int position, View v, boolean invalidChildHeight) { + + // Adjust item height + ViewGroup.LayoutParams lp = v.getLayoutParams(); + int height; + if (position != mSrcPos && position != mFirstExpPos && position != mSecondExpPos) { + height = ViewGroup.LayoutParams.WRAP_CONTENT; + } else { + height = calcItemHeight(position, v, invalidChildHeight); + } + + if (height != lp.height) { + lp.height = height; + v.setLayoutParams(lp); + } + + // Adjust item gravity + if (position == mFirstExpPos || position == mSecondExpPos) { + if (position < mSrcPos) { + ((DragSortItemView) v).setGravity(Gravity.BOTTOM); + } else if (position > mSrcPos) { + ((DragSortItemView) v).setGravity(Gravity.TOP); + } + } + + // Finally adjust item visibility + + int oldVis = v.getVisibility(); + int vis = View.VISIBLE; + + if (position == mSrcPos && mFloatView != null) { + vis = View.INVISIBLE; + } + + if (vis != oldVis) { + v.setVisibility(vis); + } + } + + private int getChildHeight(int position) { + if (position == mSrcPos) { + return 0; + } + + View v = getChildAt(position - getFirstVisiblePosition()); + + if (v != null) { + // item is onscreen, therefore child height is valid, + // hence the "true" + return getChildHeight(position, v, false); + } else { + // item is offscreen + // first check cache for child height at this position + int childHeight = mChildHeightCache.get(position); + if (childHeight != -1) { + // Log.d("mobeta", "found child height in cache!"); + return childHeight; + } + + final ListAdapter adapter = getAdapter(); + int type = adapter.getItemViewType(position); + + // There might be a better place for checking for the following + final int typeCount = adapter.getViewTypeCount(); + if (typeCount != mSampleViewTypes.length) { + mSampleViewTypes = new View[typeCount]; + } + + if (type >= 0) { + if (mSampleViewTypes[type] == null) { + v = adapter.getView(position, null, this); + mSampleViewTypes[type] = v; + } else { + v = adapter.getView(position, mSampleViewTypes[type], this); + } + } else { + // type is HEADER_OR_FOOTER or IGNORE + v = adapter.getView(position, null, this); + } + + // current child height is invalid, hence "true" below + childHeight = getChildHeight(position, v, true); + + // cache it because this could have been expensive + mChildHeightCache.add(position, childHeight); + + return childHeight; + } + } + + private int getChildHeight(int position, View item, boolean invalidChildHeight) { + if (position == mSrcPos) { + return 0; + } + + View child; + if (position < getHeaderViewsCount() || position >= getCount() - getFooterViewsCount()) { + child = item; + } else { + child = ((ViewGroup) item).getChildAt(0); + } + + ViewGroup.LayoutParams lp = child.getLayoutParams(); + + if (lp != null) { + if (lp.height > 0) { + return lp.height; + } + } + + int childHeight = child.getHeight(); + + if (childHeight == 0 || invalidChildHeight) { + measureItem(child); + childHeight = child.getMeasuredHeight(); + } + + return childHeight; + } + + private int calcItemHeight(int position, View item, boolean invalidChildHeight) { + return calcItemHeight(position, getChildHeight(position, item, invalidChildHeight)); + } + + private int calcItemHeight(int position, int childHeight) { + + int divHeight = getDividerHeight(); + + boolean isSliding = mAnimate && mFirstExpPos != mSecondExpPos; + int maxNonSrcBlankHeight = mFloatViewHeight - mItemHeightCollapsed; + int slideHeight = (int) (mSlideFrac * maxNonSrcBlankHeight); + + int height; + + if (position == mSrcPos) { + if (mSrcPos == mFirstExpPos) { + if (isSliding) { + height = slideHeight + mItemHeightCollapsed; + } else { + height = mFloatViewHeight; + } + } else if (mSrcPos == mSecondExpPos) { + // if gets here, we know an item is sliding + height = mFloatViewHeight - slideHeight; + } else { + height = mItemHeightCollapsed; + } + } else if (position == mFirstExpPos) { + if (isSliding) { + height = childHeight + slideHeight; + } else { + height = childHeight + maxNonSrcBlankHeight; + } + } else if (position == mSecondExpPos) { + // we know an item is sliding (b/c 2ndPos != 1stPos) + height = childHeight + maxNonSrcBlankHeight - slideHeight; + } else { + height = childHeight; + } + + return height; + } + + @Override + public void requestLayout() { + if (!mBlockLayoutRequests) { + super.requestLayout(); + } + } + + private int adjustScroll(int movePos, View moveItem, int oldFirstExpPos, int oldSecondExpPos) { + int adjust = 0; + + final int childHeight = getChildHeight(movePos); + + int moveHeightBefore = moveItem.getHeight(); + int moveHeightAfter = calcItemHeight(movePos, childHeight); + + int moveBlankBefore = moveHeightBefore; + int moveBlankAfter = moveHeightAfter; + if (movePos != mSrcPos) { + moveBlankBefore -= childHeight; + moveBlankAfter -= childHeight; + } + + int maxBlank = mFloatViewHeight; + if (mSrcPos != mFirstExpPos && mSrcPos != mSecondExpPos) { + maxBlank -= mItemHeightCollapsed; + } + + if (movePos <= oldFirstExpPos) { + if (movePos > mFirstExpPos) { + adjust += maxBlank - moveBlankAfter; + } + } else if (movePos == oldSecondExpPos) { + if (movePos <= mFirstExpPos) { + adjust += moveBlankBefore - maxBlank; + } else if (movePos == mSecondExpPos) { + adjust += moveHeightBefore - moveHeightAfter; + } else { + adjust += moveBlankBefore; + } + } else { + if (movePos <= mFirstExpPos) { + adjust -= maxBlank; + } else if (movePos == mSecondExpPos) { + adjust -= moveBlankAfter; + } + } + + return adjust; + } + + private void measureItem(View item) { + ViewGroup.LayoutParams lp = item.getLayoutParams(); + if (lp == null) { + lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + item.setLayoutParams(lp); + } + int wspec = ViewGroup.getChildMeasureSpec(mWidthMeasureSpec, getListPaddingLeft() + + getListPaddingRight(), lp.width); + int hspec; + if (lp.height > 0) { + hspec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY); + } else { + hspec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + } + item.measure(wspec, hspec); + } + + private void measureFloatView() { + if (mFloatView != null) { + measureItem(mFloatView); + mFloatViewHeight = mFloatView.getMeasuredHeight(); + mFloatViewHeightHalf = mFloatViewHeight / 2; + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + // Log.d("mobeta", "onMeasure called"); + if (mFloatView != null) { + if (mFloatView.isLayoutRequested()) { + measureFloatView(); + } + mFloatViewOnMeasured = true; // set to false after layout + } + mWidthMeasureSpec = widthMeasureSpec; + } + + @Override + protected void layoutChildren() { + super.layoutChildren(); + + if (mFloatView != null) { + if (mFloatView.isLayoutRequested() && !mFloatViewOnMeasured) { + // Have to measure here when usual android measure + // pass is skipped. This happens during a drag-sort + // when layoutChildren is called directly. + measureFloatView(); + } + mFloatView.layout(0, 0, mFloatView.getMeasuredWidth(), mFloatView.getMeasuredHeight()); + mFloatViewOnMeasured = false; + } + } + + protected boolean onDragTouchEvent(MotionEvent ev) { + // we are in a drag + int action = ev.getAction() & MotionEvent.ACTION_MASK; + + switch (ev.getAction() & MotionEvent.ACTION_MASK) { + case MotionEvent.ACTION_CANCEL: + if (mDragState == DRAGGING) { + cancelDrag(); + } + doActionUpOrCancel(); + break; + case MotionEvent.ACTION_UP: + // Log.d("mobeta", "calling stopDrag from onDragTouchEvent"); + if (mDragState == DRAGGING) { + stopDrag(false); + } + doActionUpOrCancel(); + break; + case MotionEvent.ACTION_MOVE: + continueDrag((int) ev.getX(), (int) ev.getY()); + break; + } + + return true; + } + + private boolean mFloatViewInvalidated = false; + + private void invalidateFloatView() { + mFloatViewInvalidated = true; + } + + /** + * Start a drag of item at position using the + * registered FloatViewManager. Calls through + * to {@link #startDrag(int,View,int,int,int)} after obtaining + * the floating View from the FloatViewManager. + * + * @param position Item to drag. + * @param dragFlags Flags that restrict some movements of the + * floating View. For example, set dragFlags |= + * ~{@link #DRAG_NEG_X} to allow dragging the floating + * View in all directions except off the screen to the left. + * @param deltaX Offset in x of the touch coordinate from the + * left edge of the floating View (i.e. touch-x minus float View + * left). + * @param deltaY Offset in y of the touch coordinate from the + * top edge of the floating View (i.e. touch-y minus float View + * top). + * + * @return True if the drag was started, false otherwise. This + * startDrag will fail if we are not currently in + * a touch event, there is no registered FloatViewManager, + * or the FloatViewManager returns a null View. + */ + public boolean startDrag(int position, int dragFlags, int deltaX, int deltaY) { + if (!mInTouchEvent || mFloatViewManager == null) { + return false; + } + + View v = mFloatViewManager.onCreateFloatView(position); + + if (v == null) { + return false; + } else { + return startDrag(position, v, dragFlags, deltaX, deltaY); + } + + } + + /** + * Start a drag of item at position without using + * a FloatViewManager. + * + * @param position Item to drag. + * @param floatView Floating View. + * @param dragFlags Flags that restrict some movements of the + * floating View. For example, set dragFlags |= + * ~{@link #DRAG_NEG_X} to allow dragging the floating + * View in all directions except off the screen to the left. + * @param deltaX Offset in x of the touch coordinate from the + * left edge of the floating View (i.e. touch-x minus float View + * left). + * @param deltaY Offset in y of the touch coordinate from the + * top edge of the floating View (i.e. touch-y minus float View + * top). + * + * @return True if the drag was started, false otherwise. This + * startDrag will fail if we are not currently in + * a touch event, floatView is null, or there is + * a drag in progress. + */ + public boolean startDrag(int position, View floatView, int dragFlags, int deltaX, int deltaY) { + if (mDragState != IDLE || !mInTouchEvent || mFloatView != null || floatView == null + || !mDragEnabled) { + return false; + } + + if (getParent() != null) { + getParent().requestDisallowInterceptTouchEvent(true); + } + + int pos = position + getHeaderViewsCount(); + mFirstExpPos = pos; + mSecondExpPos = pos; + mSrcPos = pos; + mFloatPos = pos; + + // mDragState = dragType; + mDragState = DRAGGING; + mDragFlags = 0; + mDragFlags |= dragFlags; + + mFloatView = floatView; + measureFloatView(); // sets mFloatViewHeight + + mDragDeltaX = deltaX; + mDragDeltaY = deltaY; + mDragStartY = mY; + + // updateFloatView(mX - mDragDeltaX, mY - mDragDeltaY); + mFloatLoc.x = mX - mDragDeltaX; + mFloatLoc.y = mY - mDragDeltaY; + + // set src item invisible + final View srcItem = getChildAt(mSrcPos - getFirstVisiblePosition()); + + if (srcItem != null) { + srcItem.setVisibility(View.INVISIBLE); + } + + if (mTrackDragSort) { + mDragSortTracker.startTracking(); + } + + // once float view is created, events are no longer passed + // to ListView + switch (mCancelMethod) { + case ON_TOUCH_EVENT: + super.onTouchEvent(mCancelEvent); + break; + case ON_INTERCEPT_TOUCH_EVENT: + super.onInterceptTouchEvent(mCancelEvent); + break; + } + + requestLayout(); + + if (mLiftAnimator != null) { + mLiftAnimator.start(); + } + + return true; + } + + private void doDragFloatView(boolean forceInvalidate) { + int movePos = getFirstVisiblePosition() + getChildCount() / 2; + View moveItem = getChildAt(getChildCount() / 2); + + if (moveItem == null) { + return; + } + + doDragFloatView(movePos, moveItem, forceInvalidate); + } + + private void doDragFloatView(int movePos, View moveItem, boolean forceInvalidate) { + mBlockLayoutRequests = true; + + updateFloatView(); + + int oldFirstExpPos = mFirstExpPos; + int oldSecondExpPos = mSecondExpPos; + + boolean updated = updatePositions(); + + if (updated) { + adjustAllItems(); + int scroll = adjustScroll(movePos, moveItem, oldFirstExpPos, oldSecondExpPos); + // Log.d("mobeta", " adjust scroll="+scroll); + + setSelectionFromTop(movePos, moveItem.getTop() + scroll - getPaddingTop()); + layoutChildren(); + } + + if (updated || forceInvalidate) { + invalidate(); + } + + mBlockLayoutRequests = false; + } + + /** + * Sets float View location based on suggested values and + * constraints set in mDragFlags. + */ + private void updateFloatView() { + + if (mFloatViewManager != null) { + mTouchLoc.set(mX, mY); + mFloatViewManager.onDragFloatView(mFloatView, mFloatLoc, mTouchLoc); + } + + final int floatX = mFloatLoc.x; + final int floatY = mFloatLoc.y; + + // restrict x motion + int padLeft = getPaddingLeft(); + if ((mDragFlags & DRAG_POS_X) == 0 && floatX > padLeft) { + mFloatLoc.x = padLeft; + } else if ((mDragFlags & DRAG_NEG_X) == 0 && floatX < padLeft) { + mFloatLoc.x = padLeft; + } + + // keep floating view from going past bottom of last header view + final int numHeaders = getHeaderViewsCount(); + final int numFooters = getFooterViewsCount(); + final int firstPos = getFirstVisiblePosition(); + final int lastPos = getLastVisiblePosition(); + + // Log.d("mobeta", + // "nHead="+numHeaders+" nFoot="+numFooters+" first="+firstPos+" last="+lastPos); + int topLimit = getPaddingTop(); + if (firstPos < numHeaders) { + topLimit = getChildAt(numHeaders - firstPos - 1).getBottom(); + } + if ((mDragFlags & DRAG_NEG_Y) == 0) { + if (firstPos <= mSrcPos) { + topLimit = Math.max(getChildAt(mSrcPos - firstPos).getTop(), topLimit); + } + } + // bottom limit is top of first footer View or + // bottom of last item in list + int bottomLimit = getHeight() - getPaddingBottom(); + if (lastPos >= getCount() - numFooters - 1) { + bottomLimit = getChildAt(getCount() - numFooters - 1 - firstPos).getBottom(); + } + if ((mDragFlags & DRAG_POS_Y) == 0) { + if (lastPos >= mSrcPos) { + bottomLimit = Math.min(getChildAt(mSrcPos - firstPos).getBottom(), bottomLimit); + } + } + + // Log.d("mobeta", "dragView top=" + (y - mDragDeltaY)); + // Log.d("mobeta", "limit=" + limit); + // Log.d("mobeta", "mDragDeltaY=" + mDragDeltaY); + + if (floatY < topLimit) { + mFloatLoc.y = topLimit; + } else if (floatY + mFloatViewHeight > bottomLimit) { + mFloatLoc.y = bottomLimit - mFloatViewHeight; + } + + // get y-midpoint of floating view (constrained to ListView bounds) + mFloatViewMid = mFloatLoc.y + mFloatViewHeightHalf; + } + + private void destroyFloatView() { + if (mFloatView != null) { + mFloatView.setVisibility(GONE); + if (mFloatViewManager != null) { + mFloatViewManager.onDestroyFloatView(mFloatView); + } + mFloatView = null; + invalidate(); + } + } + + /** + * Interface for customization of the floating View appearance + * and dragging behavior. Implement + * your own and pass it to {@link #setFloatViewManager}. If + * your own is not passed, the default {@link SimpleFloatViewManager} + * implementation is used. + */ + public interface FloatViewManager { + /** + * Return the floating View for item at position. + * DragSortListView will measure and layout this View for you, + * so feel free to just inflate it. You can help DSLV by + * setting some {@link ViewGroup.LayoutParams} on this View; + * otherwise it will set some for you (with a width of FILL_PARENT + * and a height of WRAP_CONTENT). + * + * @param position Position of item to drag (NOTE: + * position excludes header Views; thus, if you + * want to call {@link ListView#getChildAt(int)}, you will need + * to add {@link ListView#getHeaderViewsCount()} to the index). + * + * @return The View you wish to display as the floating View. + */ + public View onCreateFloatView(int position); + + /** + * Called whenever the floating View is dragged. Float View + * properties can be changed here. Also, the upcoming location + * of the float View can be altered by setting + * location.x and location.y. + * + * @param floatView The floating View. + * @param location The location (top-left; relative to DSLV + * top-left) at which the float + * View would like to appear, given the current touch location + * and the offset provided in {@link DragSortListView#startDrag}. + * @param touch The current touch location (relative to DSLV + * top-left). + * @param pendingScroll + */ + public void onDragFloatView(View floatView, Point location, Point touch); + + /** + * Called when the float View is dropped; lets you perform + * any necessary cleanup. The internal DSLV floating View + * reference is set to null immediately after this is called. + * + * @param floatView The floating View passed to + * {@link #onCreateFloatView(int)}. + */ + public void onDestroyFloatView(View floatView); + } + + public void setFloatViewManager(FloatViewManager manager) { + mFloatViewManager = manager; + } + + public void setDragListener(DragListener l) { + mDragListener = l; + } + + /** + * Allows for easy toggling between a DragSortListView + * and a regular old ListView. If enabled, items are + * draggable, where the drag init mode determines how + * items are lifted (see {@link setDragInitMode(int)}). + * If disabled, items cannot be dragged. + * + * @param enabled Set true to enable list + * item dragging + */ + public void setDragEnabled(boolean enabled) { + mDragEnabled = enabled; + } + + public boolean isDragEnabled() { + return mDragEnabled; + } + + /** + * This better reorder your ListAdapter! DragSortListView does not do this + * for you; doesn't make sense to. Make sure + * {@link BaseAdapter#notifyDataSetChanged()} or something like it is called + * in your implementation. Furthermore, if you have a choiceMode other than + * none and the ListAdapter does not return true for + * {@link ListAdapter#hasStableIds()}, you will need to call + * {@link #moveCheckState(int, int)} to move the check boxes along with the + * list items. + * + * @param l + */ + public void setDropListener(DropListener l) { + mDropListener = l; + } + + /** + * Probably a no-brainer, but make sure that your remove listener + * calls {@link BaseAdapter#notifyDataSetChanged()} or something like it. + * When an item removal occurs, DragSortListView + * relies on a redraw of all the items to recover invisible views + * and such. Strictly speaking, if you remove something, your dataset + * has changed... + * + * @param l + */ + public void setRemoveListener(RemoveListener l) { + mRemoveListener = l; + } + + public interface DragListener { + public void drag(int from, int to); + } + + /** + * Your implementation of this has to reorder your ListAdapter! + * Make sure to call + * {@link BaseAdapter#notifyDataSetChanged()} or something like it + * in your implementation. + * + * @author heycosmo + * + */ + public interface DropListener { + public void drop(int from, int to); + } + + /** + * Make sure to call + * {@link BaseAdapter#notifyDataSetChanged()} or something like it + * in your implementation. + * + * @author heycosmo + * + */ + public interface RemoveListener { + public void remove(int which); + } + + public interface DragSortListener extends DropListener, DragListener, RemoveListener { + } + + public void setDragSortListener(DragSortListener l) { + setDropListener(l); + setDragListener(l); + setRemoveListener(l); + } + + /** + * Completely custom scroll speed profile. Default increases linearly + * with position and is constant in time. Create your own by implementing + * {@link DragSortListView.DragScrollProfile}. + * + * @param ssp + */ + public void setDragScrollProfile(DragScrollProfile ssp) { + if (ssp != null) { + mScrollProfile = ssp; + } + } + + /** + * Use this to move the check state of an item from one position to another + * in a drop operation. If you have a choiceMode which is not none, this + * method must be called when the order of items changes in an underlying + * adapter which does not have stable IDs (see + * {@link ListAdapter#hasStableIds()}). This is because without IDs, the + * ListView has no way of knowing which items have moved where, and cannot + * update the check state accordingly. + *

+ * A word of warning about a "feature" in Android that you may run into when + * dealing with movable list items: for an adapter that does have + * stable IDs, ListView will attempt to locate each item based on its ID and + * move the check state from the item's old position to the new position — + * which is all fine and good (and removes the need for calling this + * function), except for the half-baked approach. Apparently to save time in + * the naive algorithm used, ListView will only search for an ID in the + * close neighborhood of the old position. If the user moves an item too far + * (specifically, more than 20 rows away), ListView will give up and just + * force the item to be unchecked. So if there is a reasonable chance that + * the user will move items more than 20 rows away from the original + * position, you may wish to use an adapter with unstable IDs and call this + * method manually instead. + * + * @param from + * @param to + */ + public void moveCheckState(int from, int to) { + // This method runs in O(n log n) time (n being the number of list + // items). The bottleneck is the call to AbsListView.setItemChecked, + // which is O(log n) because of the binary search involved in calling + // SparseBooleanArray.put(). + // + // To improve on the average time, we minimize the number of calls to + // setItemChecked by only calling it for items that actually have a + // changed state. This is achieved by building a list containing the + // start and end of the "runs" of checked items, and then moving the + // runs. Note that moving an item from A to B is essentially a rotation + // of the range of items in [A, B]. Let's say we have + // . . U V X Y Z . . + // and move U after Z. This is equivalent to a rotation one step to the + // left within the range you are moving across: + // . . V X Y Z U . . + // + // So, to perform the move we enumerate all the runs within the move + // range, then rotate each run one step to the left or right (depending + // on move direction). For example, in the list: + // X X . X X X . X + // we have two runs. One begins at the last item of the list and wraps + // around to the beginning, ending at position 1. The second begins at + // position 3 and ends at position 5. To rotate a run, regardless of + // length, we only need to set a check mark at one end of the run, and + // clear a check mark at the other end: + // X . X X X . X X + SparseBooleanArray cip = getCheckedItemPositions(); + int rangeStart = from; + int rangeEnd = to; + if (to < from) { + rangeStart = to; + rangeEnd = from; + } + rangeEnd += 1; + + int[] runStart = new int[cip.size()]; + int[] runEnd = new int[cip.size()]; + int runCount = buildRunList(cip, rangeStart, rangeEnd, runStart, runEnd); + if (runCount == 1 && (runStart[0] == runEnd[0])) { + // Special case where all items are checked, we can never set any + // item to false like we do below. + return; + } + + if (from < to) { + for (int i = 0; i != runCount; i++) { + setItemChecked(rotate(runStart[i], -1, rangeStart, rangeEnd), true); + setItemChecked(rotate(runEnd[i], -1, rangeStart, rangeEnd), false); + } + + } else { + for (int i = 0; i != runCount; i++) { + setItemChecked(runStart[i], false); + setItemChecked(runEnd[i], true); + } + } + } + + /** + * Use this when an item has been deleted, to move the check state of all + * following items up one step. If you have a choiceMode which is not none, + * this method must be called when the order of items changes in an + * underlying adapter which does not have stable IDs (see + * {@link ListAdapter#hasStableIds()}). This is because without IDs, the + * ListView has no way of knowing which items have moved where, and cannot + * update the check state accordingly. + * + * See also further comments on {@link #moveCheckState(int, int)}. + * + * @param position + */ + public void removeCheckState(int position) { + SparseBooleanArray cip = getCheckedItemPositions(); + + if (cip.size() == 0) + return; + int[] runStart = new int[cip.size()]; + int[] runEnd = new int[cip.size()]; + int rangeStart = position; + int rangeEnd = cip.keyAt(cip.size() - 1) + 1; + int runCount = buildRunList(cip, rangeStart, rangeEnd, runStart, runEnd); + for (int i = 0; i != runCount; i++) { + if (!(runStart[i] == position || (runEnd[i] < runStart[i] && runEnd[i] > position))) { + // Only set a new check mark in front of this run if it does + // not contain the deleted position. If it does, we only need + // to make it one check mark shorter at the end. + setItemChecked(rotate(runStart[i], -1, rangeStart, rangeEnd), true); + } + setItemChecked(rotate(runEnd[i], -1, rangeStart, rangeEnd), false); + } + } + + private static int buildRunList(SparseBooleanArray cip, int rangeStart, + int rangeEnd, int[] runStart, int[] runEnd) { + int runCount = 0; + + int i = findFirstSetIndex(cip, rangeStart, rangeEnd); + if (i == -1) + return 0; + + int position = cip.keyAt(i); + int currentRunStart = position; + int currentRunEnd = currentRunStart + 1; + for (i++; i < cip.size() && (position = cip.keyAt(i)) < rangeEnd; i++) { + if (!cip.valueAt(i)) // not checked => not interesting + continue; + if (position == currentRunEnd) { + currentRunEnd++; + } else { + runStart[runCount] = currentRunStart; + runEnd[runCount] = currentRunEnd; + runCount++; + currentRunStart = position; + currentRunEnd = position + 1; + } + } + + if (currentRunEnd == rangeEnd) { + // rangeStart and rangeEnd are equivalent positions so to be + // consistent we translate them to the same integer value. That way + // we can check whether a run covers the entire range by just + // checking if the start equals the end position. + currentRunEnd = rangeStart; + } + runStart[runCount] = currentRunStart; + runEnd[runCount] = currentRunEnd; + runCount++; + + if (runCount > 1) { + if (runStart[0] == rangeStart && runEnd[runCount - 1] == rangeStart) { + // The last run ends at the end of the range, and the first run + // starts at the beginning of the range. So they are actually + // part of the same run, except they wrap around the end of the + // range. To avoid adjacent runs, we need to merge them. + runStart[0] = runStart[runCount - 1]; + runCount--; + } + } + return runCount; + } + + private static int rotate(int value, int offset, int lowerBound, int upperBound) { + int windowSize = upperBound - lowerBound; + + value += offset; + if (value < lowerBound) { + value += windowSize; + } else if (value >= upperBound) { + value -= windowSize; + } + return value; + } + + private static int findFirstSetIndex(SparseBooleanArray sba, int rangeStart, int rangeEnd) { + int size = sba.size(); + int i = insertionIndexForKey(sba, rangeStart); + while (i < size && sba.keyAt(i) < rangeEnd && !sba.valueAt(i)) + i++; + if (i == size || sba.keyAt(i) >= rangeEnd) + return -1; + return i; + } + + private static int insertionIndexForKey(SparseBooleanArray sba, int key) { + int low = 0; + int high = sba.size(); + while (high - low > 0) { + int middle = (low + high) >> 1; + if (sba.keyAt(middle) < key) + low = middle + 1; + else + high = middle; + } + return low; + } + + /** + * Interface for controlling + * scroll speed as a function of touch position and time. Use + * {@link DragSortListView#setDragScrollProfile(DragScrollProfile)} to + * set custom profile. + * + * @author heycosmo + * + */ + public interface DragScrollProfile { + /** + * Return a scroll speed in pixels/millisecond. Always return a + * positive number. + * + * @param w Normalized position in scroll region (i.e. w \in [0,1]). + * Small w typically means slow scrolling. + * @param t Time (in milliseconds) since start of scroll (handy if you + * want scroll acceleration). + * @return Scroll speed at position w and time t in pixels/ms. + */ + float getSpeed(float w, long t); + } + + private class DragScroller implements Runnable { + + private boolean mAbort; + + private long mPrevTime; + private long mCurrTime; + + private int dy; + private float dt; + private long tStart; + private int scrollDir; + + public final static int STOP = -1; + public final static int UP = 0; + public final static int DOWN = 1; + + private float mScrollSpeed; // pixels per ms + + private boolean mScrolling = false; + + private int mLastHeader; + private int mFirstFooter; + + public boolean isScrolling() { + return mScrolling; + } + + public int getScrollDir() { + return mScrolling ? scrollDir : STOP; + } + + public DragScroller() { + } + + public void startScrolling(int dir) { + if (!mScrolling) { + // Debug.startMethodTracing("dslv-scroll"); + mAbort = false; + mScrolling = true; + tStart = SystemClock.uptimeMillis(); + mPrevTime = tStart; + scrollDir = dir; + post(this); + } + } + + public void stopScrolling(boolean now) { + if (now) { + DragSortListView.this.removeCallbacks(this); + mScrolling = false; + } else { + mAbort = true; + } + + // Debug.stopMethodTracing(); + } + + @Override + public void run() { + if (mAbort) { + mScrolling = false; + return; + } + + // Log.d("mobeta", "scroll"); + + final int first = getFirstVisiblePosition(); + final int last = getLastVisiblePosition(); + final int count = getCount(); + final int padTop = getPaddingTop(); + final int listHeight = getHeight() - padTop - getPaddingBottom(); + + int minY = Math.min(mY, mFloatViewMid + mFloatViewHeightHalf); + int maxY = Math.max(mY, mFloatViewMid - mFloatViewHeightHalf); + + if (scrollDir == UP) { + View v = getChildAt(0); + // Log.d("mobeta", "vtop="+v.getTop()+" padtop="+padTop); + if (v == null) { + mScrolling = false; + return; + } else { + if (first == 0 && v.getTop() == padTop) { + mScrolling = false; + return; + } + } + mScrollSpeed = mScrollProfile.getSpeed((mUpScrollStartYF - maxY) + / mDragUpScrollHeight, mPrevTime); + } else { + View v = getChildAt(last - first); + if (v == null) { + mScrolling = false; + return; + } else { + if (last == count - 1 && v.getBottom() <= listHeight + padTop) { + mScrolling = false; + return; + } + } + mScrollSpeed = -mScrollProfile.getSpeed((minY - mDownScrollStartYF) + / mDragDownScrollHeight, mPrevTime); + } + + mCurrTime = SystemClock.uptimeMillis(); + dt = (float) (mCurrTime - mPrevTime); + + // dy is change in View position of a list item; i.e. positive dy + // means user is scrolling up (list item moves down the screen, + // remember + // y=0 is at top of View). + dy = (int) Math.round(mScrollSpeed * dt); + + int movePos; + if (dy >= 0) { + dy = Math.min(listHeight, dy); + movePos = first; + } else { + dy = Math.max(-listHeight, dy); + movePos = last; + } + + final View moveItem = getChildAt(movePos - first); + int top = moveItem.getTop() + dy; + + if (movePos == 0 && top > padTop) { + top = padTop; + } + + // always do scroll + mBlockLayoutRequests = true; + + setSelectionFromTop(movePos, top - padTop); + DragSortListView.this.layoutChildren(); + invalidate(); + + mBlockLayoutRequests = false; + + // scroll means relative float View movement + doDragFloatView(movePos, moveItem, false); + + mPrevTime = mCurrTime; + // Log.d("mobeta", " updated prevTime="+mPrevTime); + + post(this); + } + } + + private class DragSortTracker { + StringBuilder mBuilder = new StringBuilder(); + + File mFile; + + private int mNumInBuffer = 0; + private int mNumFlushes = 0; + + private boolean mTracking = false; + + public DragSortTracker() { + File root = Environment.getExternalStorageDirectory(); + mFile = new File(root, "dslv_state.txt"); + + if (!mFile.exists()) { + try { + mFile.createNewFile(); + Log.d("mobeta", "file created"); + } catch (IOException e) { + Log.w("mobeta", "Could not create dslv_state.txt"); + Log.d("mobeta", e.getMessage()); + } + } + + } + + public void startTracking() { + mBuilder.append("\n"); + mNumFlushes = 0; + mTracking = true; + } + + public void appendState() { + if (!mTracking) { + return; + } + + mBuilder.append("\n"); + final int children = getChildCount(); + final int first = getFirstVisiblePosition(); + mBuilder.append(" "); + for (int i = 0; i < children; ++i) { + mBuilder.append(first + i).append(","); + } + mBuilder.append("\n"); + + mBuilder.append(" "); + for (int i = 0; i < children; ++i) { + mBuilder.append(getChildAt(i).getTop()).append(","); + } + mBuilder.append("\n"); + mBuilder.append(" "); + for (int i = 0; i < children; ++i) { + mBuilder.append(getChildAt(i).getBottom()).append(","); + } + mBuilder.append("\n"); + + mBuilder.append(" ").append(mFirstExpPos).append("\n"); + mBuilder.append(" ") + .append(getItemHeight(mFirstExpPos) - getChildHeight(mFirstExpPos)) + .append("\n"); + mBuilder.append(" ").append(mSecondExpPos).append("\n"); + mBuilder.append(" ") + .append(getItemHeight(mSecondExpPos) - getChildHeight(mSecondExpPos)) + .append("\n"); + mBuilder.append(" ").append(mSrcPos).append("\n"); + mBuilder.append(" ").append(mFloatViewHeight + getDividerHeight()) + .append("\n"); + mBuilder.append(" ").append(getHeight()).append("\n"); + mBuilder.append(" ").append(mLastY).append("\n"); + mBuilder.append(" ").append(mFloatViewMid).append("\n"); + mBuilder.append(" "); + for (int i = 0; i < children; ++i) { + mBuilder.append(getShuffleEdge(first + i, getChildAt(i).getTop())).append(","); + } + mBuilder.append("\n"); + + mBuilder.append("\n"); + mNumInBuffer++; + + if (mNumInBuffer > 1000) { + flush(); + mNumInBuffer = 0; + } + } + + public void flush() { + if (!mTracking) { + return; + } + + // save to file on sdcard + try { + boolean append = true; + if (mNumFlushes == 0) { + append = false; + } + FileWriter writer = new FileWriter(mFile, append); + + writer.write(mBuilder.toString()); + mBuilder.delete(0, mBuilder.length()); + + writer.flush(); + writer.close(); + + mNumFlushes++; + } catch (IOException e) { + // do nothing + } + } + + public void stopTracking() { + if (mTracking) { + mBuilder.append("\n"); + flush(); + mTracking = false; + } + } + + } + +} diff --git a/library/src/main/java/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java b/library/src/main/java/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java new file mode 100644 index 00000000..f2d08107 --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/ResourceDragSortCursorAdapter.java @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.mobeta.android.dslv; + +import android.content.Context; +import android.database.Cursor; +import android.view.View; +import android.view.ViewGroup; +import android.view.LayoutInflater; + +// taken from v4 rev. 10 ResourceCursorAdapter.java + +/** + * Static library support version of the framework's {@link android.widget.ResourceCursorAdapter}. + * Used to write apps that run on platforms prior to Android 3.0. When running + * on Android 3.0 or above, this implementation is still used; it does not try + * to switch to the framework's implementation. See the framework SDK + * documentation for a class overview. + */ +public abstract class ResourceDragSortCursorAdapter extends DragSortCursorAdapter { + private int mLayout; + + private int mDropDownLayout; + + private LayoutInflater mInflater; + + /** + * Constructor the enables auto-requery. + * + * @deprecated This option is discouraged, as it results in Cursor queries + * being performed on the application's UI thread and thus can cause poor + * responsiveness or even Application Not Responding errors. As an alternative, + * use {@link android.app.LoaderManager} with a {@link android.content.CursorLoader}. + * + * @param context The context where the ListView associated with this adapter is running + * @param layout resource identifier of a layout file that defines the views + * for this list item. Unless you override them later, this will + * define both the item views and the drop down views. + */ + @Deprecated + public ResourceDragSortCursorAdapter(Context context, int layout, Cursor c) { + super(context, c); + mLayout = mDropDownLayout = layout; + mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + } + + /** + * Constructor with default behavior as per + * {@link CursorAdapter#CursorAdapter(Context, Cursor, boolean)}; it is recommended + * you not use this, but instead {@link #ResourceCursorAdapter(Context, int, Cursor, int)}. + * When using this constructor, {@link #FLAG_REGISTER_CONTENT_OBSERVER} + * will always be set. + * + * @param context The context where the ListView associated with this adapter is running + * @param layout resource identifier of a layout file that defines the views + * for this list item. Unless you override them later, this will + * define both the item views and the drop down views. + * @param c The cursor from which to get the data. + * @param autoRequery If true the adapter will call requery() on the + * cursor whenever it changes so the most recent + * data is always displayed. Using true here is discouraged. + */ + public ResourceDragSortCursorAdapter(Context context, int layout, Cursor c, boolean autoRequery) { + super(context, c, autoRequery); + mLayout = mDropDownLayout = layout; + mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + } + + /** + * Standard constructor. + * + * @param context The context where the ListView associated with this adapter is running + * @param layout Resource identifier of a layout file that defines the views + * for this list item. Unless you override them later, this will + * define both the item views and the drop down views. + * @param c The cursor from which to get the data. + * @param flags Flags used to determine the behavior of the adapter, + * as per {@link CursorAdapter#CursorAdapter(Context, Cursor, int)}. + */ + public ResourceDragSortCursorAdapter(Context context, int layout, Cursor c, int flags) { + super(context, c, flags); + mLayout = mDropDownLayout = layout; + mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + } + + /** + * Inflates view(s) from the specified XML file. + * + * @see android.widget.CursorAdapter#newView(android.content.Context, + * android.database.Cursor, ViewGroup) + */ + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return mInflater.inflate(mLayout, parent, false); + } + + @Override + public View newDropDownView(Context context, Cursor cursor, ViewGroup parent) { + return mInflater.inflate(mDropDownLayout, parent, false); + } + + /** + *

Sets the layout resource of the item views.

+ * + * @param layout the layout resources used to create item views + */ + public void setViewResource(int layout) { + mLayout = layout; + } + + /** + *

Sets the layout resource of the drop down views.

+ * + * @param dropDownLayout the layout resources used to create drop down views + */ + public void setDropDownViewResource(int dropDownLayout) { + mDropDownLayout = dropDownLayout; + } +} diff --git a/library/src/main/java/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java b/library/src/main/java/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java new file mode 100644 index 00000000..7a76ea9d --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/SimpleDragSortCursorAdapter.java @@ -0,0 +1,422 @@ +/* + * Copyright (C) 2006 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.mobeta.android.dslv; + +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.view.View; +import android.widget.TextView; +import android.widget.ImageView; + +// taken from sdk/sources/android-16/android/widget/SimpleCursorAdapter.java + +/** + * An easy adapter to map columns from a cursor to TextViews or ImageViews + * defined in an XML file. You can specify which columns you want, which + * views you want to display the columns, and the XML file that defines + * the appearance of these views. + * + * Binding occurs in two phases. First, if a + * {@link android.widget.SimpleCursorAdapter.ViewBinder} is available, + * {@link ViewBinder#setViewValue(android.view.View, android.database.Cursor, int)} + * is invoked. If the returned value is true, binding has occured. If the + * returned value is false and the view to bind is a TextView, + * {@link #setViewText(TextView, String)} is invoked. If the returned value + * is false and the view to bind is an ImageView, + * {@link #setViewImage(ImageView, String)} is invoked. If no appropriate + * binding can be found, an {@link IllegalStateException} is thrown. + * + * If this adapter is used with filtering, for instance in an + * {@link android.widget.AutoCompleteTextView}, you can use the + * {@link android.widget.SimpleCursorAdapter.CursorToStringConverter} and the + * {@link android.widget.FilterQueryProvider} interfaces + * to get control over the filtering process. You can refer to + * {@link #convertToString(android.database.Cursor)} and + * {@link #runQueryOnBackgroundThread(CharSequence)} for more information. + */ +public class SimpleDragSortCursorAdapter extends ResourceDragSortCursorAdapter { + /** + * A list of columns containing the data to bind to the UI. + * This field should be made private, so it is hidden from the SDK. + * {@hide} + */ + protected int[] mFrom; + /** + * A list of View ids representing the views to which the data must be bound. + * This field should be made private, so it is hidden from the SDK. + * {@hide} + */ + protected int[] mTo; + + private int mStringConversionColumn = -1; + private CursorToStringConverter mCursorToStringConverter; + private ViewBinder mViewBinder; + + String[] mOriginalFrom; + + /** + * Constructor the enables auto-requery. + * + * @deprecated This option is discouraged, as it results in Cursor queries + * being performed on the application's UI thread and thus can cause poor + * responsiveness or even Application Not Responding errors. As an alternative, + * use {@link android.app.LoaderManager} with a {@link android.content.CursorLoader}. + */ + @Deprecated + public SimpleDragSortCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { + super(context, layout, c); + mTo = to; + mOriginalFrom = from; + findColumns(c, from); + } + + /** + * Standard constructor. + * + * @param context The context where the ListView associated with this + * SimpleListItemFactory is running + * @param layout resource identifier of a layout file that defines the views + * for this list item. The layout file should include at least + * those named views defined in "to" + * @param c The database cursor. Can be null if the cursor is not available yet. + * @param from A list of column names representing the data to bind to the UI. Can be null + * if the cursor is not available yet. + * @param to The views that should display column in the "from" parameter. + * These should all be TextViews. The first N views in this list + * are given the values of the first N columns in the from + * parameter. Can be null if the cursor is not available yet. + * @param flags Flags used to determine the behavior of the adapter, + * as per {@link CursorAdapter#CursorAdapter(Context, Cursor, int)}. + */ + public SimpleDragSortCursorAdapter(Context context, int layout, + Cursor c, String[] from, int[] to, int flags) { + super(context, layout, c, flags); + mTo = to; + mOriginalFrom = from; + findColumns(c, from); + } + + /** + * Binds all of the field names passed into the "to" parameter of the + * constructor with their corresponding cursor columns as specified in the + * "from" parameter. + * + * Binding occurs in two phases. First, if a + * {@link android.widget.SimpleCursorAdapter.ViewBinder} is available, + * {@link ViewBinder#setViewValue(android.view.View, android.database.Cursor, int)} + * is invoked. If the returned value is true, binding has occured. If the + * returned value is false and the view to bind is a TextView, + * {@link #setViewText(TextView, String)} is invoked. If the returned value is + * false and the view to bind is an ImageView, + * {@link #setViewImage(ImageView, String)} is invoked. If no appropriate + * binding can be found, an {@link IllegalStateException} is thrown. + * + * @throws IllegalStateException if binding cannot occur + * + * @see android.widget.CursorAdapter#bindView(android.view.View, + * android.content.Context, android.database.Cursor) + * @see #getViewBinder() + * @see #setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder) + * @see #setViewImage(ImageView, String) + * @see #setViewText(TextView, String) + */ + @Override + public void bindView(View view, Context context, Cursor cursor) { + final ViewBinder binder = mViewBinder; + final int count = mTo.length; + final int[] from = mFrom; + final int[] to = mTo; + + for (int i = 0; i < count; i++) { + final View v = view.findViewById(to[i]); + if (v != null) { + boolean bound = false; + if (binder != null) { + bound = binder.setViewValue(v, cursor, from[i]); + } + + if (!bound) { + String text = cursor.getString(from[i]); + if (text == null) { + text = ""; + } + + if (v instanceof TextView) { + setViewText((TextView) v, text); + } else if (v instanceof ImageView) { + setViewImage((ImageView) v, text); + } else { + throw new IllegalStateException(v.getClass().getName() + " is not a " + + " view that can be bounds by this SimpleCursorAdapter"); + } + } + } + } + } + + /** + * Returns the {@link ViewBinder} used to bind data to views. + * + * @return a ViewBinder or null if the binder does not exist + * + * @see #bindView(android.view.View, android.content.Context, android.database.Cursor) + * @see #setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder) + */ + public ViewBinder getViewBinder() { + return mViewBinder; + } + + /** + * Sets the binder used to bind data to views. + * + * @param viewBinder the binder used to bind data to views, can be null to + * remove the existing binder + * + * @see #bindView(android.view.View, android.content.Context, android.database.Cursor) + * @see #getViewBinder() + */ + public void setViewBinder(ViewBinder viewBinder) { + mViewBinder = viewBinder; + } + + /** + * Called by bindView() to set the image for an ImageView but only if + * there is no existing ViewBinder or if the existing ViewBinder cannot + * handle binding to an ImageView. + * + * By default, the value will be treated as an image resource. If the + * value cannot be used as an image resource, the value is used as an + * image Uri. + * + * Intended to be overridden by Adapters that need to filter strings + * retrieved from the database. + * + * @param v ImageView to receive an image + * @param value the value retrieved from the cursor + */ + public void setViewImage(ImageView v, String value) { + try { + v.setImageResource(Integer.parseInt(value)); + } catch (NumberFormatException nfe) { + v.setImageURI(Uri.parse(value)); + } + } + + /** + * Called by bindView() to set the text for a TextView but only if + * there is no existing ViewBinder or if the existing ViewBinder cannot + * handle binding to a TextView. + * + * Intended to be overridden by Adapters that need to filter strings + * retrieved from the database. + * + * @param v TextView to receive text + * @param text the text to be set for the TextView + */ + public void setViewText(TextView v, String text) { + v.setText(text); + } + + /** + * Return the index of the column used to get a String representation + * of the Cursor. + * + * @return a valid index in the current Cursor or -1 + * + * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) + * @see #setStringConversionColumn(int) + * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) + * @see #getCursorToStringConverter() + */ + public int getStringConversionColumn() { + return mStringConversionColumn; + } + + /** + * Defines the index of the column in the Cursor used to get a String + * representation of that Cursor. The column is used to convert the + * Cursor to a String only when the current CursorToStringConverter + * is null. + * + * @param stringConversionColumn a valid index in the current Cursor or -1 to use the default + * conversion mechanism + * + * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) + * @see #getStringConversionColumn() + * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) + * @see #getCursorToStringConverter() + */ + public void setStringConversionColumn(int stringConversionColumn) { + mStringConversionColumn = stringConversionColumn; + } + + /** + * Returns the converter used to convert the filtering Cursor + * into a String. + * + * @return null if the converter does not exist or an instance of + * {@link android.widget.SimpleCursorAdapter.CursorToStringConverter} + * + * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) + * @see #getStringConversionColumn() + * @see #setStringConversionColumn(int) + * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) + */ + public CursorToStringConverter getCursorToStringConverter() { + return mCursorToStringConverter; + } + + /** + * Sets the converter used to convert the filtering Cursor + * into a String. + * + * @param cursorToStringConverter the Cursor to String converter, or + * null to remove the converter + * + * @see #setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter) + * @see #getStringConversionColumn() + * @see #setStringConversionColumn(int) + * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) + */ + public void setCursorToStringConverter(CursorToStringConverter cursorToStringConverter) { + mCursorToStringConverter = cursorToStringConverter; + } + + /** + * Returns a CharSequence representation of the specified Cursor as defined + * by the current CursorToStringConverter. If no CursorToStringConverter + * has been set, the String conversion column is used instead. If the + * conversion column is -1, the returned String is empty if the cursor + * is null or Cursor.toString(). + * + * @param cursor the Cursor to convert to a CharSequence + * + * @return a non-null CharSequence representing the cursor + */ + @Override + public CharSequence convertToString(Cursor cursor) { + if (mCursorToStringConverter != null) { + return mCursorToStringConverter.convertToString(cursor); + } else if (mStringConversionColumn > -1) { + return cursor.getString(mStringConversionColumn); + } + + return super.convertToString(cursor); + } + + /** + * Create a map from an array of strings to an array of column-id integers in cursor c. + * If c is null, the array will be discarded. + * + * @param c the cursor to find the columns from + * @param from the Strings naming the columns of interest + */ + private void findColumns(Cursor c, String[] from) { + if (c != null) { + int i; + int count = from.length; + if (mFrom == null || mFrom.length != count) { + mFrom = new int[count]; + } + for (i = 0; i < count; i++) { + mFrom[i] = c.getColumnIndexOrThrow(from[i]); + } + } else { + mFrom = null; + } + } + + @Override + public Cursor swapCursor(Cursor c) { + // super.swapCursor() will notify observers before we have + // a valid mapping, make sure we have a mapping before this + // happens + findColumns(c, mOriginalFrom); + return super.swapCursor(c); + } + + /** + * Change the cursor and change the column-to-view mappings at the same time. + * + * @param c The database cursor. Can be null if the cursor is not available yet. + * @param from A list of column names representing the data to bind to the UI. Can be null + * if the cursor is not available yet. + * @param to The views that should display column in the "from" parameter. + * These should all be TextViews. The first N views in this list + * are given the values of the first N columns in the from + * parameter. Can be null if the cursor is not available yet. + */ + public void changeCursorAndColumns(Cursor c, String[] from, int[] to) { + mOriginalFrom = from; + mTo = to; + // super.changeCursor() will notify observers before we have + // a valid mapping, make sure we have a mapping before this + // happens + findColumns(c, mOriginalFrom); + super.changeCursor(c); + } + + /** + * This class can be used by external clients of SimpleCursorAdapter + * to bind values fom the Cursor to views. + * + * You should use this class to bind values from the Cursor to views + * that are not directly supported by SimpleCursorAdapter or to + * change the way binding occurs for views supported by + * SimpleCursorAdapter. + * + * @see SimpleCursorAdapter#bindView(android.view.View, android.content.Context, android.database.Cursor) + * @see SimpleCursorAdapter#setViewImage(ImageView, String) + * @see SimpleCursorAdapter#setViewText(TextView, String) + */ + public static interface ViewBinder { + /** + * Binds the Cursor column defined by the specified index to the specified view. + * + * When binding is handled by this ViewBinder, this method must return true. + * If this method returns false, SimpleCursorAdapter will attempts to handle + * the binding on its own. + * + * @param view the view to bind the data to + * @param cursor the cursor to get the data from + * @param columnIndex the column at which the data can be found in the cursor + * + * @return true if the data was bound to the view, false otherwise + */ + boolean setViewValue(View view, Cursor cursor, int columnIndex); + } + + /** + * This class can be used by external clients of SimpleCursorAdapter + * to define how the Cursor should be converted to a String. + * + * @see android.widget.CursorAdapter#convertToString(android.database.Cursor) + */ + public static interface CursorToStringConverter { + /** + * Returns a CharSequence representing the specified Cursor. + * + * @param cursor the cursor for which a CharSequence representation + * is requested + * + * @return a non-null CharSequence representing the cursor + */ + CharSequence convertToString(Cursor cursor); + } + +} diff --git a/library/src/main/java/com/mobeta/android/dslv/SimpleFloatViewManager.java b/library/src/main/java/com/mobeta/android/dslv/SimpleFloatViewManager.java new file mode 100644 index 00000000..af1df01c --- /dev/null +++ b/library/src/main/java/com/mobeta/android/dslv/SimpleFloatViewManager.java @@ -0,0 +1,89 @@ +package com.mobeta.android.dslv; + +import android.graphics.Bitmap; +import android.graphics.Point; +import android.graphics.Color; +import android.widget.ListView; +import android.widget.ImageView; +import android.view.View; +import android.view.ViewGroup; +import android.util.Log; + +/** + * Simple implementation of the FloatViewManager class. Uses list + * items as they appear in the ListView to create the floating View. + */ +public class SimpleFloatViewManager implements DragSortListView.FloatViewManager { + + private Bitmap mFloatBitmap; + + private ImageView mImageView; + + private int mFloatBGColor = Color.BLACK; + + private ListView mListView; + + public SimpleFloatViewManager(ListView lv) { + mListView = lv; + } + + public void setBackgroundColor(int color) { + mFloatBGColor = color; + } + + /** + * This simple implementation creates a Bitmap copy of the + * list item currently shown at ListView position. + */ + @Override + public View onCreateFloatView(int position) { + // Guaranteed that this will not be null? I think so. Nope, got + // a NullPointerException once... + View v = mListView.getChildAt(position + mListView.getHeaderViewsCount() - mListView.getFirstVisiblePosition()); + + if (v == null) { + return null; + } + + v.setPressed(false); + + // Create a copy of the drawing cache so that it does not get + // recycled by the framework when the list tries to clean up memory + //v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); + v.setDrawingCacheEnabled(true); + mFloatBitmap = Bitmap.createBitmap(v.getDrawingCache()); + v.setDrawingCacheEnabled(false); + + if (mImageView == null) { + mImageView = new ImageView(mListView.getContext()); + } + mImageView.setBackgroundColor(mFloatBGColor); + mImageView.setPadding(0, 0, 0, 0); + mImageView.setImageBitmap(mFloatBitmap); + mImageView.setLayoutParams(new ViewGroup.LayoutParams(v.getWidth(), v.getHeight())); + + return mImageView; + } + + /** + * This does nothing + */ + @Override + public void onDragFloatView(View floatView, Point position, Point touch) { + // do nothing + } + + /** + * Removes the Bitmap from the ImageView created in + * onCreateFloatView() and tells the system to recycle it. + */ + @Override + public void onDestroyFloatView(View floatView) { + ((ImageView) floatView).setImageDrawable(null); + + mFloatBitmap.recycle(); + mFloatBitmap = null; + } + +} + diff --git a/library/src/main/res/values/dslv_attrs.xml b/library/src/main/res/values/dslv_attrs.xml new file mode 100644 index 00000000..6c4d5d79 --- /dev/null +++ b/library/src/main/res/values/dslv_attrs.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lint.xml b/lint.xml deleted file mode 100644 index ee0eead5..00000000 --- a/lint.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/local.properties b/local.properties index e9d3f6e0..0ee343d8 100644 --- a/local.properties +++ b/local.properties @@ -1,11 +1,7 @@ -## This file is automatically generated by Android Studio. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must *NOT* be checked into Version Control Systems, +## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. -# For customization when using a Version Control System, please read the -# header note. -#Fri Dec 20 10:17:44 MST 2013 -sdk.dir=C\:/Program Files (x86)/Android/android-studio/sdk +# +#Sun Jul 26 16:04:03 CEST 2015 +sdk.dir=/home/ogarcia/Android/Sdk diff --git a/menudrawer.iml b/menudrawer.iml deleted file mode 100644 index 8937b1bb..00000000 --- a/menudrawer.iml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/proguard.cfg b/proguard.cfg deleted file mode 100644 index a39ba33d..00000000 --- a/proguard.cfg +++ /dev/null @@ -1,49 +0,0 @@ --optimizationpasses 5 --dontpreverify --keepattributes SourceFile,LineNumberTable --optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* --allowaccessmodification --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --verbose - --dontwarn android.support.** --dontnote android.support.** - --keepattributes *Annotation* - --keep public class * extends android.app.Activity --keep public class * extends android.app.Application --keep public class * extends android.app.Service --keep public class * extends android.content.BroadcastReceiver --keep public class * extends android.content.ContentProvider --keep public class * extends android.app.backup.BackupAgentHelper --keep public class * extends android.preference.Preference --keep public class com.handmark.pulltorefresh.library.PullToRefreshBase$AnimationStyle --keep public class com.handmark.pulltorefresh.library.PullToRefreshBase$Mode - --keepclasseswithmembernames class * { - native ; -} - --keepclassmembers class * extends android.app.Activity { - public void *(android.view.View); -} - --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keep class * implements android.os.Parcelable { - public static final android.os.Parcelable$Creator *; -} - --keepclassmembers public class * extends android.view.View { - void set*(***); - *** get*(); -} - --keepclassmembers class **.R$* { - public static ; -} \ No newline at end of file diff --git a/project.properties b/project.properties deleted file mode 100644 index 926cf3ea..00000000 --- a/project.properties +++ /dev/null @@ -1,17 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "ant.properties", and override values to adapt the script to your -# project structure. - -# Project target. -target=android-19 -android.library=false -android.library.reference.1=menudrawer/menudrawer -android.library.reference.2=pulltorefresh -android.library.reference.3=drag-sort-listview/library - - diff --git a/pulltorefresh.iml b/pulltorefresh.iml deleted file mode 100644 index 2fe0024f..00000000 --- a/pulltorefresh.iml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..8e18db6d --- /dev/null +++ b/settings.gradle @@ -0,0 +1,4 @@ +include ':library' +include ':menudrawer' +include ':pulltorefresh' +include ':ultraSonic' diff --git a/subsonic.keystore b/subsonic.keystore deleted file mode 100644 index b6223feaeddc2d853a8907071bd3b3781c092552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcmezO_TO6u1_mY|W&~r7;?ktz{JhL$pn!^`bH6xHa*sh1(+&eZHZE;8MixdbCP79< zRtAl_0&d#5|GZ?hyp_*1T5gH_`e)V?H`W;OEXjGaAgbY+&BxmppY88h+_Ouc z+vdZPuk}J++z)?9^_m#pm~x$`V)1;g??*W~Yx^u79C-L^=7BY@y*2WtGJFt^Wc8e} z;@jbk91c5}Bm3^vsFkMuogk8*U^b(^w%~>O$6E}d#rMuUWnGZVxZQ2l^Beb;u=_ky zv)`U&@`ZQJW{C|Kwzt`6EEN1>uf8eH<#x@XBQ{bFzddV$&g^sUKU*K`<@@#7y|@@A zon87xPc|)f+O#F0)J^dAhYz*OWPeQQdFsej=sabYkG-Ul3orj8=NDJBOPyCF%n0NX zUOq?Yr-#>>f6+&tIKRI-v$tfyZymM3ZLe2OKlJ6K%%1zAd(IghpSq{NmwTC_(CWLN zrwP8QVyYD$^nJHCicC^@0pAC;ZYu9Ph8 zcf8L)_>cO}Ca!fV9}Tmj1!bamcc`t-zpm0_X?QqDHg9LcIlmC2tu`)O87smYgd#;X zH(mK}{Y&}Zi~M=c>!+)fu1J|)z#rNZ@#ms<=ElkUb5~}+%8RRN=s!AtVn>a5Yuv9X zjysu(cI;Mu{VIcLRvgz~$2XHI7fo`VCv&89M#tBe{8{Igo>DVqvgMv$ec`&VTWo2d zHpi(Sdft}HUL_@)OT9blrW6uVyRO-sW3lL<^NR zuBl_(AMNBh*+68fr}l=24V+C1$MF@9^?fgAk1Cp{?BlJuSEP+XS zy+IS>Y9JO_z|6$R#Khut?AKufUN%mxHjlRNyuftL%3vUAC~hFi#vIDREX?PaT#{Lq zs^FiLm6}{qY@i^{YhY<;U|?)uZfId-9wotVWMl#2SV9HxX>Od4Y!fgGF*o)y7&LY= zH8wKLS-oww<-G3p*|pm*3LoZ+igo>dZUX!9*z|kiel|@cPOVy2K+g;@y zUQ=@{Etl=MCoU8zJ~@*|Y{N+h_1fi^R=GZYXVeuPcXm%yuVL0R;g+noO)SN4odZ10 z>`nhJ?UP+%tec*;?cj2;Z=E0d-z@GZmsc;`Xx|qtr_035$iRr~JYYaD1KlP6pe!M+ zw!L_6#QbpQY3x(=S>>K2b!k*FmYrIp7oc$WS8k5{{!A(6qj$MBo+{aSecg-~wM;d0 zH5Rvp7D_d7m48u`uiMg+Z&$Nm&VKPf?9=CNJ->a + + \ No newline at end of file diff --git a/AndroidManifest.xml b/ultraSonic/src/main/AndroidManifest.xml similarity index 100% rename from AndroidManifest.xml rename to ultraSonic/src/main/AndroidManifest.xml diff --git a/assets/html/en/index.html b/ultraSonic/src/main/assets/html/en/index.html similarity index 100% rename from assets/html/en/index.html rename to ultraSonic/src/main/assets/html/en/index.html diff --git a/assets/html/fr/index.html b/ultraSonic/src/main/assets/html/fr/index.html similarity index 100% rename from assets/html/fr/index.html rename to ultraSonic/src/main/assets/html/fr/index.html diff --git a/assets/html/img/paypal.png b/ultraSonic/src/main/assets/html/img/paypal.png similarity index 100% rename from assets/html/img/paypal.png rename to ultraSonic/src/main/assets/html/img/paypal.png diff --git a/assets/html/img/ultrasonic.png b/ultraSonic/src/main/assets/html/img/ultrasonic.png similarity index 100% rename from assets/html/img/ultrasonic.png rename to ultraSonic/src/main/assets/html/img/ultrasonic.png diff --git a/assets/html/style.css b/ultraSonic/src/main/assets/html/style.css similarity index 100% rename from assets/html/style.css rename to ultraSonic/src/main/assets/html/style.css diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/BookmarkActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/ChatActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/ChatActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/ChatActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/ChatActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/DownloadActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/EqualizerActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/HelpActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/LyricsActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/LyricsActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/LyricsActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/LyricsActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/MainActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/PreferenceResultActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/QueryReceiverActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/ResultActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SearchActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectAlbumActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectArtistActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectGenreActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SelectPlaylistActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SettingsActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/ShareActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/SubsonicTabActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/activity/VoiceQueryReceiverActivity.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/audiofx/EqualizerController.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/audiofx/EqualizerController.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/audiofx/EqualizerController.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/audiofx/EqualizerController.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/audiofx/VisualizerController.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/audiofx/VisualizerController.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/audiofx/VisualizerController.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/audiofx/VisualizerController.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Artist.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Artist.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Artist.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Artist.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Bookmark.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/ChatMessage.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/ChatMessage.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/ChatMessage.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/ChatMessage.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Genre.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Indexes.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Indexes.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Indexes.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Indexes.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/JukeboxStatus.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/JukeboxStatus.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/JukeboxStatus.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/JukeboxStatus.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Lyrics.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Lyrics.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Lyrics.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Lyrics.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/MusicDirectory.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/MusicFolder.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/MusicFolder.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/MusicFolder.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/MusicFolder.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/PlayerState.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/PlayerState.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/PlayerState.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/PlayerState.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Playlist.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Playlist.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Playlist.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Playlist.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/RepeatMode.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/RepeatMode.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/RepeatMode.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/RepeatMode.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/SearchCriteria.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/SearchCriteria.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/SearchCriteria.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/SearchCriteria.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/SearchResult.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/SearchResult.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/SearchResult.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/SearchResult.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/ServerInfo.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/ServerInfo.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/ServerInfo.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/ServerInfo.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Share.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Share.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Share.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Share.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/UserInfo.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/UserInfo.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/UserInfo.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/UserInfo.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/domain/Version.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Version.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/domain/Version.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/domain/Version.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/provider/SearchSuggestionProvider.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/SearchSuggestionProvider.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/provider/SearchSuggestionProvider.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/SearchSuggestionProvider.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x1.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x1.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x1.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x1.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x2.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x2.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x2.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x2.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x3.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x3.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x3.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x3.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x4.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x4.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x4.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/provider/UltraSonicAppWidgetProvider4x4.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/receiver/A2dpIntentReceiver.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/receiver/A2dpIntentReceiver.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/receiver/A2dpIntentReceiver.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/receiver/A2dpIntentReceiver.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/receiver/BluetoothIntentReceiver.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/receiver/BluetoothIntentReceiver.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/receiver/BluetoothIntentReceiver.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/receiver/BluetoothIntentReceiver.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/receiver/MediaButtonIntentReceiver.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/receiver/MediaButtonIntentReceiver.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/receiver/MediaButtonIntentReceiver.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/receiver/MediaButtonIntentReceiver.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/CachedMusicService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadFile.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadFile.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/DownloadFile.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadFile.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceImpl.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/DownloadServiceLifecycleSupport.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/JukeboxService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/MediaStoreService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/MediaStoreService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/MediaStoreService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/MediaStoreService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/MusicService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/MusicServiceFactory.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/MusicServiceFactory.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/MusicServiceFactory.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/MusicServiceFactory.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/OfflineException.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/OfflineException.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/OfflineException.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/OfflineException.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/OfflineMusicService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/OfflineMusicService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/OfflineMusicService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/OfflineMusicService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/RESTMusicService.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/Scrobbler.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/Scrobbler.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/Scrobbler.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/Scrobbler.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/ServerTooOldException.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ServerTooOldException.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/ServerTooOldException.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ServerTooOldException.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/AbstractParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/AbstractParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/AbstractParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/AbstractParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/AlbumListParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/BookmarkParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ChatMessageParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/ChatMessageParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/ChatMessageParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/ChatMessageParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ErrorParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/ErrorParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/ErrorParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/ErrorParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/GenreParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/GenreParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/GenreParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/GenreParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/IndexesParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/IndexesParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/IndexesParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/IndexesParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/JukeboxStatusParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/JukeboxStatusParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/JukeboxStatusParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/JukeboxStatusParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/LicenseParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/LicenseParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/LicenseParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/LicenseParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/LyricsParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/LyricsParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/LyricsParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/LyricsParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryEntryParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicDirectoryParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicFoldersParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicFoldersParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicFoldersParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/MusicFoldersParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistsParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistsParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistsParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/PlaylistsParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/RandomSongsParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResult2Parser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/SearchResultParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/ShareParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/SubsonicRESTException.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/SubsonicRESTException.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/SubsonicRESTException.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/SubsonicRESTException.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/UserInfoParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/UserInfoParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/UserInfoParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/UserInfoParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/parser/VersionParser.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/VersionParser.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/parser/VersionParser.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/parser/VersionParser.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/ssl/SSLSocketFactory.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/SSLSocketFactory.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/ssl/SSLSocketFactory.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/SSLSocketFactory.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustManagerDecorator.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustManagerDecorator.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustManagerDecorator.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustManagerDecorator.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustSelfSignedStrategy.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustSelfSignedStrategy.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustSelfSignedStrategy.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustSelfSignedStrategy.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustStrategy.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustStrategy.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustStrategy.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/service/ssl/TrustStrategy.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/AlbumHeader.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/AlbumHeader.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/AlbumHeader.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/AlbumHeader.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/BackgroundTask.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/BackgroundTask.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/BackgroundTask.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/BackgroundTask.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/CacheCleaner.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/CacheCleaner.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/CacheCleaner.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/CacheCleaner.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/CancellableTask.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/CancellableTask.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/CancellableTask.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/CancellableTask.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/Constants.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/Constants.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/Constants.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/EntryByDiscAndTrackComparator.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/EntryByDiscAndTrackComparator.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/EntryByDiscAndTrackComparator.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/EntryByDiscAndTrackComparator.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/ErrorDialog.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ErrorDialog.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/ErrorDialog.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ErrorDialog.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/FileUtil.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/FileUtil.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/FileUtil.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/FileUtil.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/ImageLoader.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ImageLoader.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/ImageLoader.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ImageLoader.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/LRUCache.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/LRUCache.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/LRUCache.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/LRUCache.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/LoadingTask.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/LoadingTask.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/LoadingTask.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/LoadingTask.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/MergeAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/MergeAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/MergeAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/MergeAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/ModalBackgroundTask.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ModalBackgroundTask.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/ModalBackgroundTask.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ModalBackgroundTask.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/MyViewFlipper.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/MyViewFlipper.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/MyViewFlipper.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/MyViewFlipper.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Pair.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/Pair.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/Pair.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/Pair.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/ProgressListener.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ProgressListener.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/ProgressListener.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ProgressListener.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/SackOfViewsAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/SackOfViewsAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/SackOfViewsAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/SackOfViewsAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/ShareDetails.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ShareDetails.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/ShareDetails.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ShareDetails.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/ShufflePlayBuffer.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ShufflePlayBuffer.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/ShufflePlayBuffer.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/ShufflePlayBuffer.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/SilentBackgroundTask.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/SilentBackgroundTask.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/SilentBackgroundTask.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/SilentBackgroundTask.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/SimpleServiceBinder.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/SimpleServiceBinder.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/SimpleServiceBinder.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/SimpleServiceBinder.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/StreamProxy.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/StreamProxy.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/StreamProxy.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/StreamProxy.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/TabActivityBackgroundTask.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TabActivityBackgroundTask.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/TabActivityBackgroundTask.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TabActivityBackgroundTask.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/TimeLimitedCache.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeLimitedCache.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/TimeLimitedCache.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeLimitedCache.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/TimeSpan.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeSpan.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/TimeSpan.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeSpan.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPicker.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPicker.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPicker.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPicker.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPreference.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPreference.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPreference.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/TimeSpanPreference.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/Util.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/Util.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/Util.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/Util.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/util/VideoPlayerType.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/VideoPlayerType.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/util/VideoPlayerType.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/util/VideoPlayerType.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/AlbumView.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/AlbumView.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/AlbumView.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/AlbumView.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/ArtistAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ArtistAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/ArtistAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ArtistAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/AutoRepeatButton.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/AutoRepeatButton.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/AutoRepeatButton.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/AutoRepeatButton.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ChatAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/EntryAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/EntryAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/EntryAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/EntryAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/GenreAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/GenreAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/GenreAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/GenreAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/PlaylistAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/PlaylistAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/PlaylistAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/PlaylistAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/PlaylistView.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/PlaylistView.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/PlaylistView.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/PlaylistView.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/ShareAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ShareAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/ShareAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ShareAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/ShareView.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ShareView.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/ShareView.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/ShareView.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/SongListAdapter.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/SongListAdapter.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/SongListAdapter.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/SongListAdapter.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/SongView.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/SongView.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/SongView.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/SongView.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/UpdateView.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/UpdateView.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/UpdateView.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/UpdateView.java diff --git a/src/com/thejoshwa/ultrasonic/androidapp/view/VisualizerView.java b/ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/VisualizerView.java similarity index 100% rename from src/com/thejoshwa/ultrasonic/androidapp/view/VisualizerView.java rename to ultraSonic/src/main/java/com/thejoshwa/ultrasonic/androidapp/view/VisualizerView.java diff --git a/res/anim/push_down_in.xml b/ultraSonic/src/main/res/anim/push_down_in.xml similarity index 100% rename from res/anim/push_down_in.xml rename to ultraSonic/src/main/res/anim/push_down_in.xml diff --git a/res/anim/push_down_out.xml b/ultraSonic/src/main/res/anim/push_down_out.xml similarity index 100% rename from res/anim/push_down_out.xml rename to ultraSonic/src/main/res/anim/push_down_out.xml diff --git a/res/anim/push_up_in.xml b/ultraSonic/src/main/res/anim/push_up_in.xml similarity index 100% rename from res/anim/push_up_in.xml rename to ultraSonic/src/main/res/anim/push_up_in.xml diff --git a/res/anim/push_up_out.xml b/ultraSonic/src/main/res/anim/push_up_out.xml similarity index 100% rename from res/anim/push_up_out.xml rename to ultraSonic/src/main/res/anim/push_up_out.xml diff --git a/res/drawable-hdpi-v11/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-hdpi-v11/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-hdpi-v11/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-hdpi-v11/ic_stat_ultrasonic.png diff --git a/res/drawable-hdpi-v14/menu_arrow.png b/ultraSonic/src/main/res/drawable-hdpi-v14/menu_arrow.png similarity index 100% rename from res/drawable-hdpi-v14/menu_arrow.png rename to ultraSonic/src/main/res/drawable-hdpi-v14/menu_arrow.png diff --git a/res/drawable-hdpi-v9/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-hdpi-v9/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-hdpi-v9/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-hdpi-v9/ic_stat_ultrasonic.png diff --git a/res/drawable-hdpi/btn_check_off_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_off_focused_holo_dark.png similarity index 100% rename from res/drawable-hdpi/btn_check_off_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_off_focused_holo_dark.png diff --git a/res/drawable-hdpi/btn_check_off_focused_holo_light.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_off_focused_holo_light.png similarity index 100% rename from res/drawable-hdpi/btn_check_off_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_off_focused_holo_light.png diff --git a/res/drawable-hdpi/btn_check_off_holo_dark.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_off_holo_dark.png similarity index 100% rename from res/drawable-hdpi/btn_check_off_holo_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_off_holo_dark.png diff --git a/res/drawable-hdpi/btn_check_off_holo_light.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_off_holo_light.png similarity index 100% rename from res/drawable-hdpi/btn_check_off_holo_light.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_off_holo_light.png diff --git a/res/drawable-hdpi/btn_check_on_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_on_focused_holo_dark.png similarity index 100% rename from res/drawable-hdpi/btn_check_on_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_on_focused_holo_dark.png diff --git a/res/drawable-hdpi/btn_check_on_focused_holo_light.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_on_focused_holo_light.png similarity index 100% rename from res/drawable-hdpi/btn_check_on_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_on_focused_holo_light.png diff --git a/res/drawable-hdpi/btn_check_on_holo_dark.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_on_holo_dark.png similarity index 100% rename from res/drawable-hdpi/btn_check_on_holo_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_on_holo_dark.png diff --git a/res/drawable-hdpi/btn_check_on_holo_light.png b/ultraSonic/src/main/res/drawable-hdpi/btn_check_on_holo_light.png similarity index 100% rename from res/drawable-hdpi/btn_check_on_holo_light.png rename to ultraSonic/src/main/res/drawable-hdpi/btn_check_on_holo_light.png diff --git a/res/drawable-hdpi/ic_drag_queue.9.png b/ultraSonic/src/main/res/drawable-hdpi/ic_drag_queue.png similarity index 100% rename from res/drawable-hdpi/ic_drag_queue.9.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_drag_queue.png diff --git a/res/drawable-hdpi/ic_launcher.png b/ultraSonic/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from res/drawable-hdpi/ic_launcher.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/res/drawable-hdpi/ic_menu_about_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_about_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_about_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_about_dark.png diff --git a/res/drawable-hdpi/ic_menu_about_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_about_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_about_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_about_light.png diff --git a/res/drawable-hdpi/ic_menu_add_to_queue_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_add_to_queue_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_add_to_queue_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_add_to_queue_dark.png diff --git a/res/drawable-hdpi/ic_menu_add_to_queue_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_add_to_queue_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_add_to_queue_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_add_to_queue_light.png diff --git a/res/drawable-hdpi/ic_menu_backward_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_backward_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_backward_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_backward_dark.png diff --git a/res/drawable-hdpi/ic_menu_backward_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_backward_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_backward_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_backward_light.png diff --git a/res/drawable-hdpi/ic_menu_bookmark_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_bookmark_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_bookmark_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_bookmark_dark.png diff --git a/res/drawable-hdpi/ic_menu_bookmark_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_bookmark_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_bookmark_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_bookmark_light.png diff --git a/res/drawable-hdpi/ic_menu_browse_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_browse_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_browse_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_browse_dark.png diff --git a/res/drawable-hdpi/ic_menu_browse_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_browse_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_browse_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_browse_light.png diff --git a/res/drawable-hdpi/ic_menu_chat_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_chat_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_dark.png diff --git a/res/drawable-hdpi/ic_menu_chat_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_chat_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_light.png diff --git a/res/drawable-hdpi/ic_menu_chat_send_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_send_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_chat_send_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_send_dark.png diff --git a/res/drawable-hdpi/ic_menu_chat_send_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_send_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_chat_send_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_chat_send_light.png diff --git a/res/drawable-hdpi/ic_menu_exit_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_exit_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_exit_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_exit_dark.png diff --git a/res/drawable-hdpi/ic_menu_exit_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_exit_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_exit_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_exit_light.png diff --git a/res/drawable-hdpi/ic_menu_forward_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_forward_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_forward_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_forward_dark.png diff --git a/res/drawable-hdpi/ic_menu_forward_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_forward_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_forward_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_forward_light.png diff --git a/res/drawable-hdpi/ic_menu_help_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_help_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_help_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_help_dark.png diff --git a/res/drawable-hdpi/ic_menu_help_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_help_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_help_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_help_light.png diff --git a/res/drawable-hdpi/ic_menu_home_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_home_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_home_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_home_dark.png diff --git a/res/drawable-hdpi/ic_menu_home_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_home_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_home_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_home_light.png diff --git a/res/drawable-hdpi/ic_menu_playlists_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_playlists_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_playlists_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_playlists_dark.png diff --git a/res/drawable-hdpi/ic_menu_playlists_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_playlists_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_playlists_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_playlists_light.png diff --git a/res/drawable-hdpi/ic_menu_remove_all_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_remove_all_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_remove_all_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_remove_all_dark.png diff --git a/res/drawable-hdpi/ic_menu_remove_all_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_remove_all_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_remove_all_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_remove_all_light.png diff --git a/res/drawable-hdpi/ic_menu_save_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_save_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_save_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_save_dark.png diff --git a/res/drawable-hdpi/ic_menu_save_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_save_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_save_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_save_light.png diff --git a/res/drawable-hdpi/ic_menu_screen_on_off_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_screen_on_off_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_screen_on_off_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_screen_on_off_dark.png diff --git a/res/drawable-hdpi/ic_menu_screen_on_off_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_screen_on_off_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_screen_on_off_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_screen_on_off_light.png diff --git a/res/drawable-hdpi/ic_menu_search_holo_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_search_holo_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_search_holo_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_search_holo_dark.png diff --git a/res/drawable-hdpi/ic_menu_search_holo_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_search_holo_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_search_holo_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_search_holo_light.png diff --git a/res/drawable-hdpi/ic_menu_select_all_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_all_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_select_all_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_all_dark.png diff --git a/res/drawable-hdpi/ic_menu_select_all_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_all_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_select_all_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_all_light.png diff --git a/res/drawable-hdpi/ic_menu_select_folder_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_folder_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_select_folder_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_folder_dark.png diff --git a/res/drawable-hdpi/ic_menu_select_folder_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_folder_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_select_folder_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_select_folder_light.png diff --git a/res/drawable-hdpi/ic_menu_settings_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_settings_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_settings_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_settings_dark.png diff --git a/res/drawable-hdpi/ic_menu_settings_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_settings_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_settings_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_settings_light.png diff --git a/res/drawable-hdpi/ic_menu_share_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_share_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_share_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_share_dark.png diff --git a/res/drawable-hdpi/ic_menu_share_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_share_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_share_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_share_light.png diff --git a/res/drawable-hdpi/ic_menu_unpin_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_unpin_dark.png similarity index 100% rename from res/drawable-hdpi/ic_menu_unpin_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_unpin_dark.png diff --git a/res/drawable-hdpi/ic_menu_unpin_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_menu_unpin_light.png similarity index 100% rename from res/drawable-hdpi/ic_menu_unpin_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_menu_unpin_light.png diff --git a/res/drawable-hdpi/ic_star_full_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_star_full_dark.png similarity index 100% rename from res/drawable-hdpi/ic_star_full_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_star_full_dark.png diff --git a/res/drawable-hdpi/ic_star_full_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_star_full_light.png similarity index 100% rename from res/drawable-hdpi/ic_star_full_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_star_full_light.png diff --git a/res/drawable-hdpi/ic_star_hollow_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_star_hollow_dark.png similarity index 100% rename from res/drawable-hdpi/ic_star_hollow_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_star_hollow_dark.png diff --git a/res/drawable-hdpi/ic_star_hollow_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_star_hollow_light.png similarity index 100% rename from res/drawable-hdpi/ic_star_hollow_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_star_hollow_light.png diff --git a/res/drawable-hdpi/ic_stat_play_dark.png b/ultraSonic/src/main/res/drawable-hdpi/ic_stat_play_dark.png similarity index 100% rename from res/drawable-hdpi/ic_stat_play_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_stat_play_dark.png diff --git a/res/drawable-hdpi/ic_stat_play_light.png b/ultraSonic/src/main/res/drawable-hdpi/ic_stat_play_light.png similarity index 100% rename from res/drawable-hdpi/ic_stat_play_light.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_stat_play_light.png diff --git a/res/drawable-hdpi/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-hdpi/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-hdpi/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-hdpi/ic_stat_ultrasonic.png diff --git a/res/drawable-hdpi/list_focused_holo.9.png b/ultraSonic/src/main/res/drawable-hdpi/list_focused_holo.9.png similarity index 100% rename from res/drawable-hdpi/list_focused_holo.9.png rename to ultraSonic/src/main/res/drawable-hdpi/list_focused_holo.9.png diff --git a/res/drawable-hdpi/list_longpressed_holo.9.png b/ultraSonic/src/main/res/drawable-hdpi/list_longpressed_holo.9.png similarity index 100% rename from res/drawable-hdpi/list_longpressed_holo.9.png rename to ultraSonic/src/main/res/drawable-hdpi/list_longpressed_holo.9.png diff --git a/res/drawable-hdpi/list_pressed_holo_dark.9.png b/ultraSonic/src/main/res/drawable-hdpi/list_pressed_holo_dark.9.png similarity index 100% rename from res/drawable-hdpi/list_pressed_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-hdpi/list_pressed_holo_dark.9.png diff --git a/res/drawable-hdpi/list_pressed_holo_light.9.png b/ultraSonic/src/main/res/drawable-hdpi/list_pressed_holo_light.9.png similarity index 100% rename from res/drawable-hdpi/list_pressed_holo_light.9.png rename to ultraSonic/src/main/res/drawable-hdpi/list_pressed_holo_light.9.png diff --git a/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png b/ultraSonic/src/main/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png similarity index 100% rename from res/drawable-hdpi/list_selector_disabled_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-hdpi/list_selector_disabled_holo_dark.9.png diff --git a/res/drawable-hdpi/list_selector_disabled_holo_light.9.png b/ultraSonic/src/main/res/drawable-hdpi/list_selector_disabled_holo_light.9.png similarity index 100% rename from res/drawable-hdpi/list_selector_disabled_holo_light.9.png rename to ultraSonic/src/main/res/drawable-hdpi/list_selector_disabled_holo_light.9.png diff --git a/res/drawable-hdpi/media_backward_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_backward_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_backward_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_backward_normal_dark.png diff --git a/res/drawable-hdpi/media_backward_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_backward_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_backward_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_backward_normal_light.png diff --git a/res/drawable-hdpi/media_forward_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_forward_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_forward_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_forward_normal_dark.png diff --git a/res/drawable-hdpi/media_forward_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_forward_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_forward_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_forward_normal_light.png diff --git a/res/drawable-hdpi/media_pause_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_pause_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_pause_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_pause_normal_dark.png diff --git a/res/drawable-hdpi/media_pause_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_pause_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_pause_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_pause_normal_light.png diff --git a/res/drawable-hdpi/media_repeat_all.png b/ultraSonic/src/main/res/drawable-hdpi/media_repeat_all.png similarity index 100% rename from res/drawable-hdpi/media_repeat_all.png rename to ultraSonic/src/main/res/drawable-hdpi/media_repeat_all.png diff --git a/res/drawable-hdpi/media_repeat_off_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_repeat_off_dark.png similarity index 100% rename from res/drawable-hdpi/media_repeat_off_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_repeat_off_dark.png diff --git a/res/drawable-hdpi/media_repeat_off_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_repeat_off_light.png similarity index 100% rename from res/drawable-hdpi/media_repeat_off_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_repeat_off_light.png diff --git a/res/drawable-hdpi/media_shuffle_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_shuffle_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_shuffle_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_shuffle_normal_dark.png diff --git a/res/drawable-hdpi/media_shuffle_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_shuffle_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_shuffle_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_shuffle_normal_light.png diff --git a/res/drawable-hdpi/media_start_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_start_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_start_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_start_normal_dark.png diff --git a/res/drawable-hdpi/media_start_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_start_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_start_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_start_normal_light.png diff --git a/res/drawable-hdpi/media_stop_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_stop_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_stop_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_stop_normal_dark.png diff --git a/res/drawable-hdpi/media_stop_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_stop_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_stop_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_stop_normal_light.png diff --git a/res/drawable-hdpi/media_toggle_list_normal_dark.png b/ultraSonic/src/main/res/drawable-hdpi/media_toggle_list_normal_dark.png similarity index 100% rename from res/drawable-hdpi/media_toggle_list_normal_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/media_toggle_list_normal_dark.png diff --git a/res/drawable-hdpi/media_toggle_list_normal_light.png b/ultraSonic/src/main/res/drawable-hdpi/media_toggle_list_normal_light.png similarity index 100% rename from res/drawable-hdpi/media_toggle_list_normal_light.png rename to ultraSonic/src/main/res/drawable-hdpi/media_toggle_list_normal_light.png diff --git a/res/drawable-hdpi/menu_arrow.png b/ultraSonic/src/main/res/drawable-hdpi/menu_arrow.png similarity index 100% rename from res/drawable-hdpi/menu_arrow.png rename to ultraSonic/src/main/res/drawable-hdpi/menu_arrow.png diff --git a/res/drawable-hdpi/progress_bg_holo_dark.9.png b/ultraSonic/src/main/res/drawable-hdpi/progress_bg_holo_dark.9.png similarity index 100% rename from res/drawable-hdpi/progress_bg_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-hdpi/progress_bg_holo_dark.9.png diff --git a/res/drawable-hdpi/progress_primary_holo_dark.9.png b/ultraSonic/src/main/res/drawable-hdpi/progress_primary_holo_dark.9.png similarity index 100% rename from res/drawable-hdpi/progress_primary_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-hdpi/progress_primary_holo_dark.9.png diff --git a/res/drawable-hdpi/progress_secondary_holo_dark.9.png b/ultraSonic/src/main/res/drawable-hdpi/progress_secondary_holo_dark.9.png similarity index 100% rename from res/drawable-hdpi/progress_secondary_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-hdpi/progress_secondary_holo_dark.9.png diff --git a/res/drawable-hdpi/stat_sys_download_anim0_dark.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim0_dark.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim0_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim0_dark.png diff --git a/res/drawable-hdpi/stat_sys_download_anim0_light.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim0_light.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim0_light.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim0_light.png diff --git a/res/drawable-hdpi/stat_sys_download_anim1_dark.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim1_dark.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim1_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim1_dark.png diff --git a/res/drawable-hdpi/stat_sys_download_anim1_light.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim1_light.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim1_light.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim1_light.png diff --git a/res/drawable-hdpi/stat_sys_download_anim2_dark.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim2_dark.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim2_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim2_dark.png diff --git a/res/drawable-hdpi/stat_sys_download_anim2_light.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim2_light.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim2_light.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim2_light.png diff --git a/res/drawable-hdpi/stat_sys_download_anim3_dark.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim3_dark.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim3_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim3_dark.png diff --git a/res/drawable-hdpi/stat_sys_download_anim3_light.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim3_light.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim3_light.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim3_light.png diff --git a/res/drawable-hdpi/stat_sys_download_anim4_dark.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim4_dark.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim4_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim4_dark.png diff --git a/res/drawable-hdpi/stat_sys_download_anim4_light.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim4_light.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim4_light.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim4_light.png diff --git a/res/drawable-hdpi/stat_sys_download_anim5_dark.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim5_dark.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim5_dark.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim5_dark.png diff --git a/res/drawable-hdpi/stat_sys_download_anim5_light.png b/ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim5_light.png similarity index 100% rename from res/drawable-hdpi/stat_sys_download_anim5_light.png rename to ultraSonic/src/main/res/drawable-hdpi/stat_sys_download_anim5_light.png diff --git a/res/drawable-hdpi/unknown_album.png b/ultraSonic/src/main/res/drawable-hdpi/unknown_album.png similarity index 100% rename from res/drawable-hdpi/unknown_album.png rename to ultraSonic/src/main/res/drawable-hdpi/unknown_album.png diff --git a/res/drawable-hdpi/unknown_album_large.png b/ultraSonic/src/main/res/drawable-hdpi/unknown_album_large.png similarity index 100% rename from res/drawable-hdpi/unknown_album_large.png rename to ultraSonic/src/main/res/drawable-hdpi/unknown_album_large.png diff --git a/res/drawable-ldpi-v11/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-ldpi-v11/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-ldpi-v11/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-ldpi-v11/ic_stat_ultrasonic.png diff --git a/res/drawable-ldpi-v9/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-ldpi-v9/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-ldpi-v9/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-ldpi-v9/ic_stat_ultrasonic.png diff --git a/res/drawable-ldpi/btn_check_off_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_off_focused_holo_dark.png similarity index 100% rename from res/drawable-ldpi/btn_check_off_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_off_focused_holo_dark.png diff --git a/res/drawable-ldpi/btn_check_off_focused_holo_light.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_off_focused_holo_light.png similarity index 100% rename from res/drawable-ldpi/btn_check_off_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_off_focused_holo_light.png diff --git a/res/drawable-ldpi/btn_check_off_holo_dark.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_off_holo_dark.png similarity index 100% rename from res/drawable-ldpi/btn_check_off_holo_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_off_holo_dark.png diff --git a/res/drawable-ldpi/btn_check_off_holo_light.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_off_holo_light.png similarity index 100% rename from res/drawable-ldpi/btn_check_off_holo_light.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_off_holo_light.png diff --git a/res/drawable-ldpi/btn_check_on_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_on_focused_holo_dark.png similarity index 100% rename from res/drawable-ldpi/btn_check_on_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_on_focused_holo_dark.png diff --git a/res/drawable-ldpi/btn_check_on_focused_holo_light.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_on_focused_holo_light.png similarity index 100% rename from res/drawable-ldpi/btn_check_on_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_on_focused_holo_light.png diff --git a/res/drawable-ldpi/btn_check_on_holo_dark.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_on_holo_dark.png similarity index 100% rename from res/drawable-ldpi/btn_check_on_holo_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_on_holo_dark.png diff --git a/res/drawable-ldpi/btn_check_on_holo_light.png b/ultraSonic/src/main/res/drawable-ldpi/btn_check_on_holo_light.png similarity index 100% rename from res/drawable-ldpi/btn_check_on_holo_light.png rename to ultraSonic/src/main/res/drawable-ldpi/btn_check_on_holo_light.png diff --git a/res/drawable-ldpi/ic_launcher.png b/ultraSonic/src/main/res/drawable-ldpi/ic_launcher.png similarity index 100% rename from res/drawable-ldpi/ic_launcher.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_launcher.png diff --git a/res/drawable-ldpi/ic_menu_about_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_about_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_about_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_about_dark.png diff --git a/res/drawable-ldpi/ic_menu_about_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_about_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_about_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_about_light.png diff --git a/res/drawable-ldpi/ic_menu_add_to_queue_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_add_to_queue_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_add_to_queue_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_add_to_queue_dark.png diff --git a/res/drawable-ldpi/ic_menu_add_to_queue_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_add_to_queue_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_add_to_queue_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_add_to_queue_light.png diff --git a/res/drawable-ldpi/ic_menu_backward_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_backward_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_backward_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_backward_dark.png diff --git a/res/drawable-ldpi/ic_menu_backward_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_backward_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_backward_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_backward_light.png diff --git a/res/drawable-ldpi/ic_menu_bookmark_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_bookmark_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_bookmark_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_bookmark_dark.png diff --git a/res/drawable-ldpi/ic_menu_bookmark_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_bookmark_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_bookmark_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_bookmark_light.png diff --git a/res/drawable-ldpi/ic_menu_browse_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_browse_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_browse_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_browse_dark.png diff --git a/res/drawable-ldpi/ic_menu_browse_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_browse_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_browse_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_browse_light.png diff --git a/res/drawable-ldpi/ic_menu_chat_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_chat_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_dark.png diff --git a/res/drawable-ldpi/ic_menu_chat_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_chat_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_light.png diff --git a/res/drawable-ldpi/ic_menu_chat_send_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_send_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_chat_send_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_send_dark.png diff --git a/res/drawable-ldpi/ic_menu_chat_send_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_send_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_chat_send_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_chat_send_light.png diff --git a/res/drawable-ldpi/ic_menu_exit_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_exit_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_exit_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_exit_dark.png diff --git a/res/drawable-ldpi/ic_menu_exit_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_exit_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_exit_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_exit_light.png diff --git a/res/drawable-ldpi/ic_menu_forward_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_forward_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_forward_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_forward_dark.png diff --git a/res/drawable-ldpi/ic_menu_forward_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_forward_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_forward_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_forward_light.png diff --git a/res/drawable-ldpi/ic_menu_help_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_help_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_help_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_help_dark.png diff --git a/res/drawable-ldpi/ic_menu_help_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_help_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_help_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_help_light.png diff --git a/res/drawable-ldpi/ic_menu_home_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_home_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_home_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_home_dark.png diff --git a/res/drawable-ldpi/ic_menu_home_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_home_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_home_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_home_light.png diff --git a/res/drawable-ldpi/ic_menu_playlists_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_playlists_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_playlists_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_playlists_dark.png diff --git a/res/drawable-ldpi/ic_menu_playlists_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_playlists_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_playlists_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_playlists_light.png diff --git a/res/drawable-ldpi/ic_menu_remove_all_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_remove_all_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_remove_all_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_remove_all_dark.png diff --git a/res/drawable-ldpi/ic_menu_remove_all_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_remove_all_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_remove_all_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_remove_all_light.png diff --git a/res/drawable-ldpi/ic_menu_save_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_save_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_save_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_save_dark.png diff --git a/res/drawable-ldpi/ic_menu_save_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_save_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_save_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_save_light.png diff --git a/res/drawable-ldpi/ic_menu_screen_on_off_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_screen_on_off_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_screen_on_off_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_screen_on_off_dark.png diff --git a/res/drawable-ldpi/ic_menu_screen_on_off_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_screen_on_off_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_screen_on_off_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_screen_on_off_light.png diff --git a/res/drawable-ldpi/ic_menu_search_holo_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_search_holo_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_search_holo_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_search_holo_dark.png diff --git a/res/drawable-ldpi/ic_menu_search_holo_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_search_holo_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_search_holo_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_search_holo_light.png diff --git a/res/drawable-ldpi/ic_menu_select_all_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_all_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_select_all_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_all_dark.png diff --git a/res/drawable-ldpi/ic_menu_select_all_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_all_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_select_all_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_all_light.png diff --git a/res/drawable-ldpi/ic_menu_select_folder_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_folder_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_select_folder_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_folder_dark.png diff --git a/res/drawable-ldpi/ic_menu_select_folder_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_folder_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_select_folder_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_select_folder_light.png diff --git a/res/drawable-ldpi/ic_menu_settings_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_settings_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_settings_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_settings_dark.png diff --git a/res/drawable-ldpi/ic_menu_settings_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_settings_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_settings_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_settings_light.png diff --git a/res/drawable-ldpi/ic_menu_share_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_share_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_share_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_share_dark.png diff --git a/res/drawable-ldpi/ic_menu_share_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_share_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_share_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_share_light.png diff --git a/res/drawable-ldpi/ic_menu_unpin_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_unpin_dark.png similarity index 100% rename from res/drawable-ldpi/ic_menu_unpin_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_unpin_dark.png diff --git a/res/drawable-ldpi/ic_menu_unpin_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_menu_unpin_light.png similarity index 100% rename from res/drawable-ldpi/ic_menu_unpin_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_menu_unpin_light.png diff --git a/res/drawable-ldpi/ic_star_full_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_star_full_dark.png similarity index 100% rename from res/drawable-ldpi/ic_star_full_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_star_full_dark.png diff --git a/res/drawable-ldpi/ic_star_full_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_star_full_light.png similarity index 100% rename from res/drawable-ldpi/ic_star_full_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_star_full_light.png diff --git a/res/drawable-ldpi/ic_star_hollow_dark.png b/ultraSonic/src/main/res/drawable-ldpi/ic_star_hollow_dark.png similarity index 100% rename from res/drawable-ldpi/ic_star_hollow_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_star_hollow_dark.png diff --git a/res/drawable-ldpi/ic_star_hollow_light.png b/ultraSonic/src/main/res/drawable-ldpi/ic_star_hollow_light.png similarity index 100% rename from res/drawable-ldpi/ic_star_hollow_light.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_star_hollow_light.png diff --git a/res/drawable-ldpi/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-ldpi/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-ldpi/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-ldpi/ic_stat_ultrasonic.png diff --git a/res/drawable-ldpi/media_backward_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_backward_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_backward_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_backward_normal_dark.png diff --git a/res/drawable-ldpi/media_backward_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_backward_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_backward_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_backward_normal_light.png diff --git a/res/drawable-ldpi/media_forward_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_forward_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_forward_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_forward_normal_dark.png diff --git a/res/drawable-ldpi/media_forward_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_forward_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_forward_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_forward_normal_light.png diff --git a/res/drawable-ldpi/media_pause_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_pause_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_pause_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_pause_normal_dark.png diff --git a/res/drawable-ldpi/media_pause_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_pause_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_pause_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_pause_normal_light.png diff --git a/res/drawable-ldpi/media_repeat_off_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_repeat_off_dark.png similarity index 100% rename from res/drawable-ldpi/media_repeat_off_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_repeat_off_dark.png diff --git a/res/drawable-ldpi/media_repeat_off_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_repeat_off_light.png similarity index 100% rename from res/drawable-ldpi/media_repeat_off_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_repeat_off_light.png diff --git a/res/drawable-ldpi/media_shuffle_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_shuffle_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_shuffle_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_shuffle_normal_dark.png diff --git a/res/drawable-ldpi/media_shuffle_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_shuffle_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_shuffle_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_shuffle_normal_light.png diff --git a/res/drawable-ldpi/media_start_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_start_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_start_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_start_normal_dark.png diff --git a/res/drawable-ldpi/media_start_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_start_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_start_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_start_normal_light.png diff --git a/res/drawable-ldpi/media_stop_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_stop_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_stop_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_stop_normal_dark.png diff --git a/res/drawable-ldpi/media_stop_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_stop_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_stop_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_stop_normal_light.png diff --git a/res/drawable-ldpi/media_toggle_list_normal_dark.png b/ultraSonic/src/main/res/drawable-ldpi/media_toggle_list_normal_dark.png similarity index 100% rename from res/drawable-ldpi/media_toggle_list_normal_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/media_toggle_list_normal_dark.png diff --git a/res/drawable-ldpi/media_toggle_list_normal_light.png b/ultraSonic/src/main/res/drawable-ldpi/media_toggle_list_normal_light.png similarity index 100% rename from res/drawable-ldpi/media_toggle_list_normal_light.png rename to ultraSonic/src/main/res/drawable-ldpi/media_toggle_list_normal_light.png diff --git a/res/drawable-ldpi/stat_sys_download_anim0_dark.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim0_dark.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim0_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim0_dark.png diff --git a/res/drawable-ldpi/stat_sys_download_anim0_light.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim0_light.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim0_light.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim0_light.png diff --git a/res/drawable-ldpi/stat_sys_download_anim1_dark.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim1_dark.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim1_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim1_dark.png diff --git a/res/drawable-ldpi/stat_sys_download_anim1_light.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim1_light.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim1_light.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim1_light.png diff --git a/res/drawable-ldpi/stat_sys_download_anim2_dark.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim2_dark.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim2_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim2_dark.png diff --git a/res/drawable-ldpi/stat_sys_download_anim2_light.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim2_light.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim2_light.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim2_light.png diff --git a/res/drawable-ldpi/stat_sys_download_anim3_dark.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim3_dark.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim3_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim3_dark.png diff --git a/res/drawable-ldpi/stat_sys_download_anim3_light.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim3_light.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim3_light.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim3_light.png diff --git a/res/drawable-ldpi/stat_sys_download_anim4_dark.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim4_dark.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim4_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim4_dark.png diff --git a/res/drawable-ldpi/stat_sys_download_anim4_light.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim4_light.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim4_light.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim4_light.png diff --git a/res/drawable-ldpi/stat_sys_download_anim5_dark.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim5_dark.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim5_dark.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim5_dark.png diff --git a/res/drawable-ldpi/stat_sys_download_anim5_light.png b/ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim5_light.png similarity index 100% rename from res/drawable-ldpi/stat_sys_download_anim5_light.png rename to ultraSonic/src/main/res/drawable-ldpi/stat_sys_download_anim5_light.png diff --git a/res/drawable-mdpi-v11/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-mdpi-v11/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-mdpi-v11/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-mdpi-v11/ic_stat_ultrasonic.png diff --git a/res/drawable-mdpi-v14/menu_arrow.png b/ultraSonic/src/main/res/drawable-mdpi-v14/menu_arrow.png similarity index 100% rename from res/drawable-mdpi-v14/menu_arrow.png rename to ultraSonic/src/main/res/drawable-mdpi-v14/menu_arrow.png diff --git a/res/drawable-mdpi-v9/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-mdpi-v9/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-mdpi-v9/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-mdpi-v9/ic_stat_ultrasonic.png diff --git a/res/drawable-mdpi/btn_check_off_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_off_focused_holo_dark.png similarity index 100% rename from res/drawable-mdpi/btn_check_off_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_off_focused_holo_dark.png diff --git a/res/drawable-mdpi/btn_check_off_focused_holo_light.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_off_focused_holo_light.png similarity index 100% rename from res/drawable-mdpi/btn_check_off_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_off_focused_holo_light.png diff --git a/res/drawable-mdpi/btn_check_off_holo_dark.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_off_holo_dark.png similarity index 100% rename from res/drawable-mdpi/btn_check_off_holo_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_off_holo_dark.png diff --git a/res/drawable-mdpi/btn_check_off_holo_light.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_off_holo_light.png similarity index 100% rename from res/drawable-mdpi/btn_check_off_holo_light.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_off_holo_light.png diff --git a/res/drawable-mdpi/btn_check_on_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_on_focused_holo_dark.png similarity index 100% rename from res/drawable-mdpi/btn_check_on_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_on_focused_holo_dark.png diff --git a/res/drawable-mdpi/btn_check_on_focused_holo_light.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_on_focused_holo_light.png similarity index 100% rename from res/drawable-mdpi/btn_check_on_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_on_focused_holo_light.png diff --git a/res/drawable-mdpi/btn_check_on_holo_dark.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_on_holo_dark.png similarity index 100% rename from res/drawable-mdpi/btn_check_on_holo_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_on_holo_dark.png diff --git a/res/drawable-mdpi/btn_check_on_holo_light.png b/ultraSonic/src/main/res/drawable-mdpi/btn_check_on_holo_light.png similarity index 100% rename from res/drawable-mdpi/btn_check_on_holo_light.png rename to ultraSonic/src/main/res/drawable-mdpi/btn_check_on_holo_light.png diff --git a/res/drawable-mdpi/ic_drag_queue.9.png b/ultraSonic/src/main/res/drawable-mdpi/ic_drag_queue.png similarity index 100% rename from res/drawable-mdpi/ic_drag_queue.9.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_drag_queue.png diff --git a/res/drawable-mdpi/ic_launcher.png b/ultraSonic/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from res/drawable-mdpi/ic_launcher.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/res/drawable-mdpi/ic_menu_about_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_about_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_about_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_about_dark.png diff --git a/res/drawable-mdpi/ic_menu_about_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_about_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_about_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_about_light.png diff --git a/res/drawable-mdpi/ic_menu_add_to_queue_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_add_to_queue_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_add_to_queue_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_add_to_queue_dark.png diff --git a/res/drawable-mdpi/ic_menu_add_to_queue_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_add_to_queue_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_add_to_queue_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_add_to_queue_light.png diff --git a/res/drawable-mdpi/ic_menu_backward_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_backward_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_backward_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_backward_dark.png diff --git a/res/drawable-mdpi/ic_menu_backward_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_backward_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_backward_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_backward_light.png diff --git a/res/drawable-mdpi/ic_menu_bookmark_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_bookmark_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_bookmark_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_bookmark_dark.png diff --git a/res/drawable-mdpi/ic_menu_bookmark_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_bookmark_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_bookmark_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_bookmark_light.png diff --git a/res/drawable-mdpi/ic_menu_browse_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_browse_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_browse_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_browse_dark.png diff --git a/res/drawable-mdpi/ic_menu_browse_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_browse_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_browse_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_browse_light.png diff --git a/res/drawable-mdpi/ic_menu_chat_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_chat_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_dark.png diff --git a/res/drawable-mdpi/ic_menu_chat_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_chat_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_light.png diff --git a/res/drawable-mdpi/ic_menu_chat_send_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_send_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_chat_send_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_send_dark.png diff --git a/res/drawable-mdpi/ic_menu_chat_send_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_send_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_chat_send_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_chat_send_light.png diff --git a/res/drawable-mdpi/ic_menu_exit_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_exit_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_exit_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_exit_dark.png diff --git a/res/drawable-mdpi/ic_menu_exit_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_exit_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_exit_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_exit_light.png diff --git a/res/drawable-mdpi/ic_menu_forward_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_forward_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_forward_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_forward_dark.png diff --git a/res/drawable-mdpi/ic_menu_forward_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_forward_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_forward_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_forward_light.png diff --git a/res/drawable-mdpi/ic_menu_help_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_help_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_help_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_help_dark.png diff --git a/res/drawable-mdpi/ic_menu_help_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_help_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_help_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_help_light.png diff --git a/res/drawable-mdpi/ic_menu_home_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_home_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_home_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_home_dark.png diff --git a/res/drawable-mdpi/ic_menu_home_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_home_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_home_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_home_light.png diff --git a/res/drawable-mdpi/ic_menu_playlists_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_playlists_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_playlists_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_playlists_dark.png diff --git a/res/drawable-mdpi/ic_menu_playlists_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_playlists_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_playlists_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_playlists_light.png diff --git a/res/drawable-mdpi/ic_menu_remove_all_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_remove_all_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_remove_all_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_remove_all_dark.png diff --git a/res/drawable-mdpi/ic_menu_remove_all_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_remove_all_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_remove_all_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_remove_all_light.png diff --git a/res/drawable-mdpi/ic_menu_save_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_save_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_save_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_save_dark.png diff --git a/res/drawable-mdpi/ic_menu_save_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_save_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_save_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_save_light.png diff --git a/res/drawable-mdpi/ic_menu_screen_on_off_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_screen_on_off_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_screen_on_off_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_screen_on_off_dark.png diff --git a/res/drawable-mdpi/ic_menu_screen_on_off_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_screen_on_off_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_screen_on_off_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_screen_on_off_light.png diff --git a/res/drawable-mdpi/ic_menu_search_holo_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_search_holo_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_search_holo_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_search_holo_dark.png diff --git a/res/drawable-mdpi/ic_menu_search_holo_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_search_holo_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_search_holo_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_search_holo_light.png diff --git a/res/drawable-mdpi/ic_menu_select_all_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_all_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_select_all_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_all_dark.png diff --git a/res/drawable-mdpi/ic_menu_select_all_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_all_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_select_all_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_all_light.png diff --git a/res/drawable-mdpi/ic_menu_select_folder_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_folder_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_select_folder_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_folder_dark.png diff --git a/res/drawable-mdpi/ic_menu_select_folder_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_folder_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_select_folder_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_select_folder_light.png diff --git a/res/drawable-mdpi/ic_menu_settings_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_settings_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_settings_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_settings_dark.png diff --git a/res/drawable-mdpi/ic_menu_settings_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_settings_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_settings_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_settings_light.png diff --git a/res/drawable-mdpi/ic_menu_share_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_share_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_share_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_share_dark.png diff --git a/res/drawable-mdpi/ic_menu_share_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_share_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_share_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_share_light.png diff --git a/res/drawable-mdpi/ic_menu_unpin_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_unpin_dark.png similarity index 100% rename from res/drawable-mdpi/ic_menu_unpin_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_unpin_dark.png diff --git a/res/drawable-mdpi/ic_menu_unpin_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_menu_unpin_light.png similarity index 100% rename from res/drawable-mdpi/ic_menu_unpin_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_menu_unpin_light.png diff --git a/res/drawable-mdpi/ic_star_full_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_star_full_dark.png similarity index 100% rename from res/drawable-mdpi/ic_star_full_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_star_full_dark.png diff --git a/res/drawable-mdpi/ic_star_full_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_star_full_light.png similarity index 100% rename from res/drawable-mdpi/ic_star_full_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_star_full_light.png diff --git a/res/drawable-mdpi/ic_star_hollow_dark.png b/ultraSonic/src/main/res/drawable-mdpi/ic_star_hollow_dark.png similarity index 100% rename from res/drawable-mdpi/ic_star_hollow_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_star_hollow_dark.png diff --git a/res/drawable-mdpi/ic_star_hollow_light.png b/ultraSonic/src/main/res/drawable-mdpi/ic_star_hollow_light.png similarity index 100% rename from res/drawable-mdpi/ic_star_hollow_light.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_star_hollow_light.png diff --git a/res/drawable-mdpi/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-mdpi/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-mdpi/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-mdpi/ic_stat_ultrasonic.png diff --git a/res/drawable-mdpi/media_backward_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_backward_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_backward_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_backward_normal_dark.png diff --git a/res/drawable-mdpi/media_backward_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_backward_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_backward_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_backward_normal_light.png diff --git a/res/drawable-mdpi/media_forward_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_forward_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_forward_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_forward_normal_dark.png diff --git a/res/drawable-mdpi/media_forward_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_forward_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_forward_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_forward_normal_light.png diff --git a/res/drawable-mdpi/media_pause_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_pause_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_pause_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_pause_normal_dark.png diff --git a/res/drawable-mdpi/media_pause_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_pause_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_pause_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_pause_normal_light.png diff --git a/res/drawable-mdpi/media_repeat_off_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_repeat_off_dark.png similarity index 100% rename from res/drawable-mdpi/media_repeat_off_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_repeat_off_dark.png diff --git a/res/drawable-mdpi/media_repeat_off_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_repeat_off_light.png similarity index 100% rename from res/drawable-mdpi/media_repeat_off_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_repeat_off_light.png diff --git a/res/drawable-mdpi/media_shuffle_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_shuffle_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_shuffle_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_shuffle_normal_dark.png diff --git a/res/drawable-mdpi/media_shuffle_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_shuffle_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_shuffle_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_shuffle_normal_light.png diff --git a/res/drawable-mdpi/media_start_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_start_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_start_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_start_normal_dark.png diff --git a/res/drawable-mdpi/media_start_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_start_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_start_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_start_normal_light.png diff --git a/res/drawable-mdpi/media_stop_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_stop_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_stop_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_stop_normal_dark.png diff --git a/res/drawable-mdpi/media_stop_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_stop_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_stop_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_stop_normal_light.png diff --git a/res/drawable-mdpi/media_toggle_list_normal_dark.png b/ultraSonic/src/main/res/drawable-mdpi/media_toggle_list_normal_dark.png similarity index 100% rename from res/drawable-mdpi/media_toggle_list_normal_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/media_toggle_list_normal_dark.png diff --git a/res/drawable-mdpi/media_toggle_list_normal_light.png b/ultraSonic/src/main/res/drawable-mdpi/media_toggle_list_normal_light.png similarity index 100% rename from res/drawable-mdpi/media_toggle_list_normal_light.png rename to ultraSonic/src/main/res/drawable-mdpi/media_toggle_list_normal_light.png diff --git a/res/drawable-mdpi/menu_arrow.png b/ultraSonic/src/main/res/drawable-mdpi/menu_arrow.png similarity index 100% rename from res/drawable-mdpi/menu_arrow.png rename to ultraSonic/src/main/res/drawable-mdpi/menu_arrow.png diff --git a/res/drawable-mdpi/stat_sys_download_anim0_dark.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim0_dark.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim0_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim0_dark.png diff --git a/res/drawable-mdpi/stat_sys_download_anim0_light.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim0_light.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim0_light.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim0_light.png diff --git a/res/drawable-mdpi/stat_sys_download_anim1_dark.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim1_dark.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim1_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim1_dark.png diff --git a/res/drawable-mdpi/stat_sys_download_anim1_light.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim1_light.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim1_light.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim1_light.png diff --git a/res/drawable-mdpi/stat_sys_download_anim2_dark.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim2_dark.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim2_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim2_dark.png diff --git a/res/drawable-mdpi/stat_sys_download_anim2_light.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim2_light.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim2_light.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim2_light.png diff --git a/res/drawable-mdpi/stat_sys_download_anim3_dark.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim3_dark.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim3_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim3_dark.png diff --git a/res/drawable-mdpi/stat_sys_download_anim3_light.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim3_light.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim3_light.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim3_light.png diff --git a/res/drawable-mdpi/stat_sys_download_anim4_dark.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim4_dark.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim4_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim4_dark.png diff --git a/res/drawable-mdpi/stat_sys_download_anim4_light.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim4_light.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim4_light.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim4_light.png diff --git a/res/drawable-mdpi/stat_sys_download_anim5_dark.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim5_dark.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim5_dark.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim5_dark.png diff --git a/res/drawable-mdpi/stat_sys_download_anim5_light.png b/ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim5_light.png similarity index 100% rename from res/drawable-mdpi/stat_sys_download_anim5_light.png rename to ultraSonic/src/main/res/drawable-mdpi/stat_sys_download_anim5_light.png diff --git a/res/drawable-nodpi/preview4x1.png b/ultraSonic/src/main/res/drawable-nodpi/preview4x1.png similarity index 100% rename from res/drawable-nodpi/preview4x1.png rename to ultraSonic/src/main/res/drawable-nodpi/preview4x1.png diff --git a/res/drawable-nodpi/preview4x2.png b/ultraSonic/src/main/res/drawable-nodpi/preview4x2.png similarity index 100% rename from res/drawable-nodpi/preview4x2.png rename to ultraSonic/src/main/res/drawable-nodpi/preview4x2.png diff --git a/res/drawable-nodpi/preview4x3.png b/ultraSonic/src/main/res/drawable-nodpi/preview4x3.png similarity index 100% rename from res/drawable-nodpi/preview4x3.png rename to ultraSonic/src/main/res/drawable-nodpi/preview4x3.png diff --git a/res/drawable-xhdpi-v11/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-xhdpi-v11/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-xhdpi-v11/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-xhdpi-v11/ic_stat_ultrasonic.png diff --git a/res/drawable-xhdpi-v14/appwidget_dark_bg_trans.9.png b/ultraSonic/src/main/res/drawable-xhdpi-v14/appwidget_dark_bg_trans.9.png similarity index 100% rename from res/drawable-xhdpi-v14/appwidget_dark_bg_trans.9.png rename to ultraSonic/src/main/res/drawable-xhdpi-v14/appwidget_dark_bg_trans.9.png diff --git a/res/drawable-xhdpi-v14/menu_arrow.png b/ultraSonic/src/main/res/drawable-xhdpi-v14/menu_arrow.png similarity index 100% rename from res/drawable-xhdpi-v14/menu_arrow.png rename to ultraSonic/src/main/res/drawable-xhdpi-v14/menu_arrow.png diff --git a/res/drawable-xhdpi-v9/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-xhdpi-v9/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-xhdpi-v9/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-xhdpi-v9/ic_stat_ultrasonic.png diff --git a/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png similarity index 100% rename from res/drawable-xhdpi/btn_check_off_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_focused_holo_dark.png diff --git a/res/drawable-xhdpi/btn_check_off_focused_holo_light.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_focused_holo_light.png similarity index 100% rename from res/drawable-xhdpi/btn_check_off_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_focused_holo_light.png diff --git a/res/drawable-xhdpi/btn_check_off_holo_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_holo_dark.png similarity index 100% rename from res/drawable-xhdpi/btn_check_off_holo_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_holo_dark.png diff --git a/res/drawable-xhdpi/btn_check_off_holo_light.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_holo_light.png similarity index 100% rename from res/drawable-xhdpi/btn_check_off_holo_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_off_holo_light.png diff --git a/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png similarity index 100% rename from res/drawable-xhdpi/btn_check_on_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_focused_holo_dark.png diff --git a/res/drawable-xhdpi/btn_check_on_focused_holo_light.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_focused_holo_light.png similarity index 100% rename from res/drawable-xhdpi/btn_check_on_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_focused_holo_light.png diff --git a/res/drawable-xhdpi/btn_check_on_holo_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_holo_dark.png similarity index 100% rename from res/drawable-xhdpi/btn_check_on_holo_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_holo_dark.png diff --git a/res/drawable-xhdpi/btn_check_on_holo_light.png b/ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_holo_light.png similarity index 100% rename from res/drawable-xhdpi/btn_check_on_holo_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/btn_check_on_holo_light.png diff --git a/res/drawable-xhdpi/ic_drag_queue.9.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_drag_queue.png similarity index 100% rename from res/drawable-xhdpi/ic_drag_queue.9.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_drag_queue.png diff --git a/res/drawable-xhdpi/ic_launcher.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xhdpi/ic_launcher.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/res/drawable-xhdpi/ic_menu_about_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_about_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_about_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_about_dark.png diff --git a/res/drawable-xhdpi/ic_menu_about_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_about_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_about_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_about_light.png diff --git a/res/drawable-xhdpi/ic_menu_add_to_queue_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_add_to_queue_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_add_to_queue_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_add_to_queue_dark.png diff --git a/res/drawable-xhdpi/ic_menu_add_to_queue_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_add_to_queue_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_add_to_queue_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_add_to_queue_light.png diff --git a/res/drawable-xhdpi/ic_menu_backward_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_backward_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_backward_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_backward_dark.png diff --git a/res/drawable-xhdpi/ic_menu_backward_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_backward_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_backward_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_backward_light.png diff --git a/res/drawable-xhdpi/ic_menu_bookmark_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_bookmark_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_bookmark_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_bookmark_dark.png diff --git a/res/drawable-xhdpi/ic_menu_bookmark_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_bookmark_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_bookmark_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_bookmark_light.png diff --git a/res/drawable-xhdpi/ic_menu_browse_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_browse_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_browse_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_browse_dark.png diff --git a/res/drawable-xhdpi/ic_menu_browse_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_browse_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_browse_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_browse_light.png diff --git a/res/drawable-xhdpi/ic_menu_chat_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_chat_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_dark.png diff --git a/res/drawable-xhdpi/ic_menu_chat_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_chat_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_light.png diff --git a/res/drawable-xhdpi/ic_menu_chat_send_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_send_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_chat_send_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_send_dark.png diff --git a/res/drawable-xhdpi/ic_menu_chat_send_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_send_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_chat_send_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_chat_send_light.png diff --git a/res/drawable-xhdpi/ic_menu_exit_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_exit_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_exit_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_exit_dark.png diff --git a/res/drawable-xhdpi/ic_menu_exit_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_exit_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_exit_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_exit_light.png diff --git a/res/drawable-xhdpi/ic_menu_forward_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_forward_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_forward_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_forward_dark.png diff --git a/res/drawable-xhdpi/ic_menu_forward_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_forward_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_forward_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_forward_light.png diff --git a/res/drawable-xhdpi/ic_menu_help_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_help_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_help_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_help_dark.png diff --git a/res/drawable-xhdpi/ic_menu_help_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_help_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_help_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_help_light.png diff --git a/res/drawable-xhdpi/ic_menu_home_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_home_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_home_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_home_dark.png diff --git a/res/drawable-xhdpi/ic_menu_home_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_home_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_home_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_home_light.png diff --git a/res/drawable-xhdpi/ic_menu_pin.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_pin.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_pin.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_pin.png diff --git a/res/drawable-xhdpi/ic_menu_playlists_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_playlists_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_playlists_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_playlists_dark.png diff --git a/res/drawable-xhdpi/ic_menu_playlists_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_playlists_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_playlists_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_playlists_light.png diff --git a/res/drawable-xhdpi/ic_menu_remove_all_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_remove_all_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_remove_all_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_remove_all_dark.png diff --git a/res/drawable-xhdpi/ic_menu_remove_all_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_remove_all_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_remove_all_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_remove_all_light.png diff --git a/res/drawable-xhdpi/ic_menu_save_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_save_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_save_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_save_dark.png diff --git a/res/drawable-xhdpi/ic_menu_save_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_save_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_save_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_save_light.png diff --git a/res/drawable-xhdpi/ic_menu_screen_on_off_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_screen_on_off_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_screen_on_off_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_screen_on_off_dark.png diff --git a/res/drawable-xhdpi/ic_menu_screen_on_off_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_screen_on_off_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_screen_on_off_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_screen_on_off_light.png diff --git a/res/drawable-xhdpi/ic_menu_search_holo_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_search_holo_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_search_holo_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_search_holo_dark.png diff --git a/res/drawable-xhdpi/ic_menu_search_holo_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_search_holo_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_search_holo_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_search_holo_light.png diff --git a/res/drawable-xhdpi/ic_menu_select_all_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_all_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_select_all_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_all_dark.png diff --git a/res/drawable-xhdpi/ic_menu_select_all_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_all_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_select_all_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_all_light.png diff --git a/res/drawable-xhdpi/ic_menu_select_folder_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_folder_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_select_folder_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_folder_dark.png diff --git a/res/drawable-xhdpi/ic_menu_select_folder_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_folder_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_select_folder_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_select_folder_light.png diff --git a/res/drawable-xhdpi/ic_menu_settings_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_settings_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_settings_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_settings_dark.png diff --git a/res/drawable-xhdpi/ic_menu_settings_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_settings_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_settings_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_settings_light.png diff --git a/res/drawable-xhdpi/ic_menu_share_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_share_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_share_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_share_dark.png diff --git a/res/drawable-xhdpi/ic_menu_share_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_share_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_share_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_share_light.png diff --git a/res/drawable-xhdpi/ic_menu_unpin_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_unpin_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_unpin_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_unpin_dark.png diff --git a/res/drawable-xhdpi/ic_menu_unpin_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_menu_unpin_light.png similarity index 100% rename from res/drawable-xhdpi/ic_menu_unpin_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_menu_unpin_light.png diff --git a/res/drawable-xhdpi/ic_star_full_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_star_full_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_star_full_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_star_full_dark.png diff --git a/res/drawable-xhdpi/ic_star_full_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_star_full_light.png similarity index 100% rename from res/drawable-xhdpi/ic_star_full_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_star_full_light.png diff --git a/res/drawable-xhdpi/ic_star_hollow_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_star_hollow_dark.png similarity index 100% rename from res/drawable-xhdpi/ic_star_hollow_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_star_hollow_dark.png diff --git a/res/drawable-xhdpi/ic_star_hollow_light.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_star_hollow_light.png similarity index 100% rename from res/drawable-xhdpi/ic_star_hollow_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_star_hollow_light.png diff --git a/res/drawable-xhdpi/ic_stat_ultrasonic.png b/ultraSonic/src/main/res/drawable-xhdpi/ic_stat_ultrasonic.png similarity index 100% rename from res/drawable-xhdpi/ic_stat_ultrasonic.png rename to ultraSonic/src/main/res/drawable-xhdpi/ic_stat_ultrasonic.png diff --git a/res/drawable-xhdpi/md__list_focused_holo.9.png b/ultraSonic/src/main/res/drawable-xhdpi/md__list_focused_holo.9.png similarity index 100% rename from res/drawable-xhdpi/md__list_focused_holo.9.png rename to ultraSonic/src/main/res/drawable-xhdpi/md__list_focused_holo.9.png diff --git a/res/drawable-xhdpi/md__list_longpressed_holo.9.png b/ultraSonic/src/main/res/drawable-xhdpi/md__list_longpressed_holo.9.png similarity index 100% rename from res/drawable-xhdpi/md__list_longpressed_holo.9.png rename to ultraSonic/src/main/res/drawable-xhdpi/md__list_longpressed_holo.9.png diff --git a/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png b/ultraSonic/src/main/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png similarity index 100% rename from res/drawable-xhdpi/md__list_pressed_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-xhdpi/md__list_pressed_holo_dark.9.png diff --git a/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png b/ultraSonic/src/main/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png similarity index 100% rename from res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png rename to ultraSonic/src/main/res/drawable-xhdpi/md__list_selector_disabled_holo_dark.9.png diff --git a/res/drawable-xhdpi/media_backward_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_backward_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_backward_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_backward_normal_dark.png diff --git a/res/drawable-xhdpi/media_backward_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_backward_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_backward_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_backward_normal_light.png diff --git a/res/drawable-xhdpi/media_forward_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_forward_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_forward_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_forward_normal_dark.png diff --git a/res/drawable-xhdpi/media_forward_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_forward_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_forward_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_forward_normal_light.png diff --git a/res/drawable-xhdpi/media_pause_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_pause_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_pause_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_pause_normal_dark.png diff --git a/res/drawable-xhdpi/media_pause_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_pause_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_pause_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_pause_normal_light.png diff --git a/res/drawable-xhdpi/media_play_next.png b/ultraSonic/src/main/res/drawable-xhdpi/media_play_next.png similarity index 100% rename from res/drawable-xhdpi/media_play_next.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_play_next.png diff --git a/res/drawable-xhdpi/media_repeat_all.png b/ultraSonic/src/main/res/drawable-xhdpi/media_repeat_all.png similarity index 100% rename from res/drawable-xhdpi/media_repeat_all.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_repeat_all.png diff --git a/res/drawable-xhdpi/media_repeat_off_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_repeat_off_dark.png similarity index 100% rename from res/drawable-xhdpi/media_repeat_off_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_repeat_off_dark.png diff --git a/res/drawable-xhdpi/media_repeat_off_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_repeat_off_light.png similarity index 100% rename from res/drawable-xhdpi/media_repeat_off_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_repeat_off_light.png diff --git a/res/drawable-xhdpi/media_repeat_single.png b/ultraSonic/src/main/res/drawable-xhdpi/media_repeat_single.png similarity index 100% rename from res/drawable-xhdpi/media_repeat_single.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_repeat_single.png diff --git a/res/drawable-xhdpi/media_shuffle_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_shuffle_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_shuffle_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_shuffle_normal_dark.png diff --git a/res/drawable-xhdpi/media_shuffle_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_shuffle_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_shuffle_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_shuffle_normal_light.png diff --git a/res/drawable-xhdpi/media_start_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_start_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_start_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_start_normal_dark.png diff --git a/res/drawable-xhdpi/media_start_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_start_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_start_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_start_normal_light.png diff --git a/res/drawable-xhdpi/media_stop_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_stop_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_stop_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_stop_normal_dark.png diff --git a/res/drawable-xhdpi/media_stop_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_stop_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_stop_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_stop_normal_light.png diff --git a/res/drawable-xhdpi/media_toggle_list_normal_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/media_toggle_list_normal_dark.png similarity index 100% rename from res/drawable-xhdpi/media_toggle_list_normal_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_toggle_list_normal_dark.png diff --git a/res/drawable-xhdpi/media_toggle_list_normal_light.png b/ultraSonic/src/main/res/drawable-xhdpi/media_toggle_list_normal_light.png similarity index 100% rename from res/drawable-xhdpi/media_toggle_list_normal_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/media_toggle_list_normal_light.png diff --git a/res/drawable-xhdpi/menu_arrow.png b/ultraSonic/src/main/res/drawable-xhdpi/menu_arrow.png similarity index 100% rename from res/drawable-xhdpi/menu_arrow.png rename to ultraSonic/src/main/res/drawable-xhdpi/menu_arrow.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim0_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim0_dark.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim0_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim0_dark.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim0_light.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim0_light.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim0_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim0_light.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim1_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim1_dark.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim1_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim1_dark.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim1_light.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim1_light.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim1_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim1_light.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim2_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim2_dark.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim2_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim2_dark.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim2_light.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim2_light.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim2_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim2_light.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim3_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim3_dark.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim3_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim3_dark.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim3_light.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim3_light.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim3_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim3_light.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim4_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim4_dark.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim4_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim4_dark.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim4_light.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim4_light.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim4_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim4_light.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim5_dark.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim5_dark.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim5_dark.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim5_dark.png diff --git a/res/drawable-xhdpi/stat_sys_download_anim5_light.png b/ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim5_light.png similarity index 100% rename from res/drawable-xhdpi/stat_sys_download_anim5_light.png rename to ultraSonic/src/main/res/drawable-xhdpi/stat_sys_download_anim5_light.png diff --git a/res/drawable-xxhdpi/btn_check_off_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_focused_holo_dark.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_off_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_focused_holo_dark.png diff --git a/res/drawable-xxhdpi/btn_check_off_focused_holo_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_focused_holo_light.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_off_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_focused_holo_light.png diff --git a/res/drawable-xxhdpi/btn_check_off_holo_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_holo_dark.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_off_holo_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_holo_dark.png diff --git a/res/drawable-xxhdpi/btn_check_off_holo_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_holo_light.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_off_holo_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_off_holo_light.png diff --git a/res/drawable-xxhdpi/btn_check_on_focused_holo_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_focused_holo_dark.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_on_focused_holo_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_focused_holo_dark.png diff --git a/res/drawable-xxhdpi/btn_check_on_focused_holo_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_focused_holo_light.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_on_focused_holo_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_focused_holo_light.png diff --git a/res/drawable-xxhdpi/btn_check_on_holo_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_holo_dark.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_on_holo_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_holo_dark.png diff --git a/res/drawable-xxhdpi/btn_check_on_holo_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_holo_light.png similarity index 100% rename from res/drawable-xxhdpi/btn_check_on_holo_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/btn_check_on_holo_light.png diff --git a/res/drawable-xxhdpi/ic_contact_picture.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_contact_picture.png similarity index 100% rename from res/drawable-xxhdpi/ic_contact_picture.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_contact_picture.png diff --git a/res/drawable-xxhdpi/ic_launcher.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xxhdpi/ic_launcher.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/res/drawable-xxhdpi/ic_menu_about_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_about_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_about_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_about_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_about_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_about_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_about_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_about_light.png diff --git a/res/drawable-xxhdpi/ic_menu_add_to_queue_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_add_to_queue_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_add_to_queue_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_add_to_queue_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_add_to_queue_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_add_to_queue_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_add_to_queue_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_add_to_queue_light.png diff --git a/res/drawable-xxhdpi/ic_menu_backward_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_backward_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_backward_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_backward_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_backward_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_backward_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_backward_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_backward_light.png diff --git a/res/drawable-xxhdpi/ic_menu_bookmark_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_bookmark_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_bookmark_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_bookmark_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_bookmark_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_bookmark_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_bookmark_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_bookmark_light.png diff --git a/res/drawable-xxhdpi/ic_menu_browse_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_browse_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_browse_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_browse_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_browse_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_browse_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_browse_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_browse_light.png diff --git a/res/drawable-xxhdpi/ic_menu_chat_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_chat_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_chat_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_chat_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_light.png diff --git a/res/drawable-xxhdpi/ic_menu_chat_send_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_send_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_chat_send_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_send_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_chat_send_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_send_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_chat_send_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_chat_send_light.png diff --git a/res/drawable-xxhdpi/ic_menu_exit_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_exit_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_exit_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_exit_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_exit_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_exit_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_exit_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_exit_light.png diff --git a/res/drawable-xxhdpi/ic_menu_forward_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_forward_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_forward_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_forward_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_forward_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_forward_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_forward_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_forward_light.png diff --git a/res/drawable-xxhdpi/ic_menu_help_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_help_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_help_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_help_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_help_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_help_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_help_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_help_light.png diff --git a/res/drawable-xxhdpi/ic_menu_home_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_home_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_home_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_home_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_home_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_home_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_home_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_home_light.png diff --git a/res/drawable-xxhdpi/ic_menu_playlists_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_playlists_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_playlists_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_playlists_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_playlists_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_playlists_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_playlists_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_playlists_light.png diff --git a/res/drawable-xxhdpi/ic_menu_remove_all_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_remove_all_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_remove_all_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_remove_all_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_remove_all_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_remove_all_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_remove_all_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_remove_all_light.png diff --git a/res/drawable-xxhdpi/ic_menu_save_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_save_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_save_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_save_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_save_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_save_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_save_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_save_light.png diff --git a/res/drawable-xxhdpi/ic_menu_screen_on_off_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_screen_on_off_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_screen_on_off_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_screen_on_off_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_screen_on_off_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_screen_on_off_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_screen_on_off_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_screen_on_off_light.png diff --git a/res/drawable-xxhdpi/ic_menu_search_holo_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_search_holo_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_search_holo_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_search_holo_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_search_holo_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_search_holo_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_search_holo_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_search_holo_light.png diff --git a/res/drawable-xxhdpi/ic_menu_select_all_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_all_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_select_all_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_all_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_select_all_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_all_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_select_all_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_all_light.png diff --git a/res/drawable-xxhdpi/ic_menu_select_folder_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_folder_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_select_folder_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_folder_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_select_folder_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_folder_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_select_folder_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_select_folder_light.png diff --git a/res/drawable-xxhdpi/ic_menu_settings_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_settings_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_settings_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_settings_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_settings_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_settings_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_settings_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_settings_light.png diff --git a/res/drawable-xxhdpi/ic_menu_share_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_share_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_share_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_share_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_share_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_share_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_share_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_share_light.png diff --git a/res/drawable-xxhdpi/ic_menu_unpin_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_unpin_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_unpin_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_unpin_dark.png diff --git a/res/drawable-xxhdpi/ic_menu_unpin_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_unpin_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_menu_unpin_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_menu_unpin_light.png diff --git a/res/drawable-xxhdpi/ic_star_full_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_star_full_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_star_full_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_star_full_dark.png diff --git a/res/drawable-xxhdpi/ic_star_full_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_star_full_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_star_full_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_star_full_light.png diff --git a/res/drawable-xxhdpi/ic_star_hollow_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_star_hollow_dark.png similarity index 100% rename from res/drawable-xxhdpi/ic_star_hollow_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_star_hollow_dark.png diff --git a/res/drawable-xxhdpi/ic_star_hollow_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/ic_star_hollow_light.png similarity index 100% rename from res/drawable-xxhdpi/ic_star_hollow_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/ic_star_hollow_light.png diff --git a/res/drawable-xxhdpi/media_backward_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_backward_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_backward_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_backward_normal_dark.png diff --git a/res/drawable-xxhdpi/media_backward_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_backward_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_backward_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_backward_normal_light.png diff --git a/res/drawable-xxhdpi/media_forward_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_forward_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_forward_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_forward_normal_dark.png diff --git a/res/drawable-xxhdpi/media_forward_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_forward_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_forward_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_forward_normal_light.png diff --git a/res/drawable-xxhdpi/media_pause_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_pause_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_pause_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_pause_normal_dark.png diff --git a/res/drawable-xxhdpi/media_pause_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_pause_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_pause_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_pause_normal_light.png diff --git a/res/drawable-xxhdpi/media_repeat_off_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_repeat_off_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_repeat_off_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_repeat_off_dark.png diff --git a/res/drawable-xxhdpi/media_repeat_off_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_repeat_off_light.png similarity index 100% rename from res/drawable-xxhdpi/media_repeat_off_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_repeat_off_light.png diff --git a/res/drawable-xxhdpi/media_shuffle_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_shuffle_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_shuffle_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_shuffle_normal_dark.png diff --git a/res/drawable-xxhdpi/media_shuffle_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_shuffle_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_shuffle_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_shuffle_normal_light.png diff --git a/res/drawable-xxhdpi/media_start_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_start_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_start_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_start_normal_dark.png diff --git a/res/drawable-xxhdpi/media_start_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_start_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_start_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_start_normal_light.png diff --git a/res/drawable-xxhdpi/media_stop_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_stop_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_stop_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_stop_normal_dark.png diff --git a/res/drawable-xxhdpi/media_stop_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_stop_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_stop_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_stop_normal_light.png diff --git a/res/drawable-xxhdpi/media_toggle_list_normal_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_toggle_list_normal_dark.png similarity index 100% rename from res/drawable-xxhdpi/media_toggle_list_normal_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_toggle_list_normal_dark.png diff --git a/res/drawable-xxhdpi/media_toggle_list_normal_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/media_toggle_list_normal_light.png similarity index 100% rename from res/drawable-xxhdpi/media_toggle_list_normal_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/media_toggle_list_normal_light.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim0_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim0_dark.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim0_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim0_dark.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim0_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim0_light.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim0_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim0_light.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim1_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim1_dark.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim1_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim1_dark.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim1_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim1_light.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim1_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim1_light.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim2_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim2_dark.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim2_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim2_dark.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim2_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim2_light.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim2_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim2_light.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim3_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim3_dark.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim3_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim3_dark.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim3_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim3_light.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim3_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim3_light.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim4_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim4_dark.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim4_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim4_dark.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim4_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim4_light.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim4_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim4_light.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim5_dark.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim5_dark.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim5_dark.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim5_dark.png diff --git a/res/drawable-xxhdpi/stat_sys_download_anim5_light.png b/ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim5_light.png similarity index 100% rename from res/drawable-xxhdpi/stat_sys_download_anim5_light.png rename to ultraSonic/src/main/res/drawable-xxhdpi/stat_sys_download_anim5_light.png diff --git a/res/drawable-xxxhdpi/ic_launcher.png b/ultraSonic/src/main/res/drawable-xxxhdpi/ic_launcher.png similarity index 100% rename from res/drawable-xxxhdpi/ic_launcher.png rename to ultraSonic/src/main/res/drawable-xxxhdpi/ic_launcher.png diff --git a/res/drawable/btn_bg.xml b/ultraSonic/src/main/res/drawable/btn_bg.xml similarity index 100% rename from res/drawable/btn_bg.xml rename to ultraSonic/src/main/res/drawable/btn_bg.xml diff --git a/res/drawable/btn_check_custom_dark.xml b/ultraSonic/src/main/res/drawable/btn_check_custom_dark.xml similarity index 100% rename from res/drawable/btn_check_custom_dark.xml rename to ultraSonic/src/main/res/drawable/btn_check_custom_dark.xml diff --git a/res/drawable/btn_check_custom_light.xml b/ultraSonic/src/main/res/drawable/btn_check_custom_light.xml similarity index 100% rename from res/drawable/btn_check_custom_light.xml rename to ultraSonic/src/main/res/drawable/btn_check_custom_light.xml diff --git a/res/drawable/drop_shadow.xml b/ultraSonic/src/main/res/drawable/drop_shadow.xml similarity index 100% rename from res/drawable/drop_shadow.xml rename to ultraSonic/src/main/res/drawable/drop_shadow.xml diff --git a/res/drawable/list_selector_background_transition_holo_dark.xml b/ultraSonic/src/main/res/drawable/list_selector_background_transition_holo_dark.xml similarity index 100% rename from res/drawable/list_selector_background_transition_holo_dark.xml rename to ultraSonic/src/main/res/drawable/list_selector_background_transition_holo_dark.xml diff --git a/res/drawable/list_selector_background_transition_holo_light.xml b/ultraSonic/src/main/res/drawable/list_selector_background_transition_holo_light.xml similarity index 100% rename from res/drawable/list_selector_background_transition_holo_light.xml rename to ultraSonic/src/main/res/drawable/list_selector_background_transition_holo_light.xml diff --git a/res/drawable/list_selector_holo_dark.xml b/ultraSonic/src/main/res/drawable/list_selector_holo_dark.xml similarity index 100% rename from res/drawable/list_selector_holo_dark.xml rename to ultraSonic/src/main/res/drawable/list_selector_holo_dark.xml diff --git a/res/drawable/list_selector_holo_light.xml b/ultraSonic/src/main/res/drawable/list_selector_holo_light.xml similarity index 100% rename from res/drawable/list_selector_holo_light.xml rename to ultraSonic/src/main/res/drawable/list_selector_holo_light.xml diff --git a/res/drawable/md__list_selector_background_transition_holo_dark.xml b/ultraSonic/src/main/res/drawable/md__list_selector_background_transition_holo_dark.xml similarity index 100% rename from res/drawable/md__list_selector_background_transition_holo_dark.xml rename to ultraSonic/src/main/res/drawable/md__list_selector_background_transition_holo_dark.xml diff --git a/res/drawable/md__list_selector_holo_dark.xml b/ultraSonic/src/main/res/drawable/md__list_selector_holo_dark.xml similarity index 100% rename from res/drawable/md__list_selector_holo_dark.xml rename to ultraSonic/src/main/res/drawable/md__list_selector_holo_dark.xml diff --git a/res/drawable/progress_horizontal_holo_dark.xml b/ultraSonic/src/main/res/drawable/progress_horizontal_holo_dark.xml similarity index 100% rename from res/drawable/progress_horizontal_holo_dark.xml rename to ultraSonic/src/main/res/drawable/progress_horizontal_holo_dark.xml diff --git a/res/drawable/stat_sys_download_dark.xml b/ultraSonic/src/main/res/drawable/stat_sys_download_dark.xml similarity index 100% rename from res/drawable/stat_sys_download_dark.xml rename to ultraSonic/src/main/res/drawable/stat_sys_download_dark.xml diff --git a/res/drawable/stat_sys_download_light.xml b/ultraSonic/src/main/res/drawable/stat_sys_download_light.xml similarity index 100% rename from res/drawable/stat_sys_download_light.xml rename to ultraSonic/src/main/res/drawable/stat_sys_download_light.xml diff --git a/res/layout-land/download.xml b/ultraSonic/src/main/res/layout-land/download.xml similarity index 100% rename from res/layout-land/download.xml rename to ultraSonic/src/main/res/layout-land/download.xml diff --git a/res/layout-port/download.xml b/ultraSonic/src/main/res/layout-port/download.xml similarity index 100% rename from res/layout-port/download.xml rename to ultraSonic/src/main/res/layout-port/download.xml diff --git a/res/layout/album_buttons.xml b/ultraSonic/src/main/res/layout/album_buttons.xml similarity index 100% rename from res/layout/album_buttons.xml rename to ultraSonic/src/main/res/layout/album_buttons.xml diff --git a/res/layout/album_list_item.xml b/ultraSonic/src/main/res/layout/album_list_item.xml similarity index 100% rename from res/layout/album_list_item.xml rename to ultraSonic/src/main/res/layout/album_list_item.xml diff --git a/res/layout/appwidget4x1.xml b/ultraSonic/src/main/res/layout/appwidget4x1.xml similarity index 100% rename from res/layout/appwidget4x1.xml rename to ultraSonic/src/main/res/layout/appwidget4x1.xml diff --git a/res/layout/appwidget4x2.xml b/ultraSonic/src/main/res/layout/appwidget4x2.xml similarity index 100% rename from res/layout/appwidget4x2.xml rename to ultraSonic/src/main/res/layout/appwidget4x2.xml diff --git a/res/layout/appwidget4x3.xml b/ultraSonic/src/main/res/layout/appwidget4x3.xml similarity index 100% rename from res/layout/appwidget4x3.xml rename to ultraSonic/src/main/res/layout/appwidget4x3.xml diff --git a/res/layout/appwidget4x4.xml b/ultraSonic/src/main/res/layout/appwidget4x4.xml similarity index 100% rename from res/layout/appwidget4x4.xml rename to ultraSonic/src/main/res/layout/appwidget4x4.xml diff --git a/res/layout/artist_list_item.xml b/ultraSonic/src/main/res/layout/artist_list_item.xml similarity index 100% rename from res/layout/artist_list_item.xml rename to ultraSonic/src/main/res/layout/artist_list_item.xml diff --git a/res/layout/chat.xml b/ultraSonic/src/main/res/layout/chat.xml similarity index 100% rename from res/layout/chat.xml rename to ultraSonic/src/main/res/layout/chat.xml diff --git a/res/layout/chat_item.xml b/ultraSonic/src/main/res/layout/chat_item.xml similarity index 100% rename from res/layout/chat_item.xml rename to ultraSonic/src/main/res/layout/chat_item.xml diff --git a/res/layout/chat_item_reverse.xml b/ultraSonic/src/main/res/layout/chat_item_reverse.xml similarity index 100% rename from res/layout/chat_item_reverse.xml rename to ultraSonic/src/main/res/layout/chat_item_reverse.xml diff --git a/res/layout/download_button_bar_flipper.xml b/ultraSonic/src/main/res/layout/download_button_bar_flipper.xml similarity index 100% rename from res/layout/download_button_bar_flipper.xml rename to ultraSonic/src/main/res/layout/download_button_bar_flipper.xml diff --git a/res/layout/download_playlist.xml b/ultraSonic/src/main/res/layout/download_playlist.xml similarity index 100% rename from res/layout/download_playlist.xml rename to ultraSonic/src/main/res/layout/download_playlist.xml diff --git a/res/layout/download_slider.xml b/ultraSonic/src/main/res/layout/download_slider.xml similarity index 100% rename from res/layout/download_slider.xml rename to ultraSonic/src/main/res/layout/download_slider.xml diff --git a/res/layout/equalizer.xml b/ultraSonic/src/main/res/layout/equalizer.xml similarity index 100% rename from res/layout/equalizer.xml rename to ultraSonic/src/main/res/layout/equalizer.xml diff --git a/res/layout/equalizer_bar.xml b/ultraSonic/src/main/res/layout/equalizer_bar.xml similarity index 100% rename from res/layout/equalizer_bar.xml rename to ultraSonic/src/main/res/layout/equalizer_bar.xml diff --git a/res/layout/help.xml b/ultraSonic/src/main/res/layout/help.xml similarity index 97% rename from res/layout/help.xml rename to ultraSonic/src/main/res/layout/help.xml index 4009c003..33c7e55d 100644 --- a/res/layout/help.xml +++ b/ultraSonic/src/main/res/layout/help.xml @@ -1,4 +1,4 @@ - + diff --git a/res/layout/jukebox_volume.xml b/ultraSonic/src/main/res/layout/jukebox_volume.xml similarity index 100% rename from res/layout/jukebox_volume.xml rename to ultraSonic/src/main/res/layout/jukebox_volume.xml diff --git a/res/layout/lyrics.xml b/ultraSonic/src/main/res/layout/lyrics.xml similarity index 100% rename from res/layout/lyrics.xml rename to ultraSonic/src/main/res/layout/lyrics.xml diff --git a/res/layout/main.xml b/ultraSonic/src/main/res/layout/main.xml similarity index 100% rename from res/layout/main.xml rename to ultraSonic/src/main/res/layout/main.xml diff --git a/res/layout/main_buttons.xml b/ultraSonic/src/main/res/layout/main_buttons.xml similarity index 100% rename from res/layout/main_buttons.xml rename to ultraSonic/src/main/res/layout/main_buttons.xml diff --git a/res/layout/media_buttons.xml b/ultraSonic/src/main/res/layout/media_buttons.xml similarity index 100% rename from res/layout/media_buttons.xml rename to ultraSonic/src/main/res/layout/media_buttons.xml diff --git a/res/layout/menu_main.xml b/ultraSonic/src/main/res/layout/menu_main.xml similarity index 100% rename from res/layout/menu_main.xml rename to ultraSonic/src/main/res/layout/menu_main.xml diff --git a/res/layout/notification.xml b/ultraSonic/src/main/res/layout/notification.xml similarity index 100% rename from res/layout/notification.xml rename to ultraSonic/src/main/res/layout/notification.xml diff --git a/res/layout/notification_large.xml b/ultraSonic/src/main/res/layout/notification_large.xml similarity index 100% rename from res/layout/notification_large.xml rename to ultraSonic/src/main/res/layout/notification_large.xml diff --git a/res/layout/now_playing.xml b/ultraSonic/src/main/res/layout/now_playing.xml similarity index 100% rename from res/layout/now_playing.xml rename to ultraSonic/src/main/res/layout/now_playing.xml diff --git a/res/layout/playlist_list_item.xml b/ultraSonic/src/main/res/layout/playlist_list_item.xml similarity index 100% rename from res/layout/playlist_list_item.xml rename to ultraSonic/src/main/res/layout/playlist_list_item.xml diff --git a/res/layout/save_playlist.xml b/ultraSonic/src/main/res/layout/save_playlist.xml similarity index 100% rename from res/layout/save_playlist.xml rename to ultraSonic/src/main/res/layout/save_playlist.xml diff --git a/res/layout/search.xml b/ultraSonic/src/main/res/layout/search.xml similarity index 100% rename from res/layout/search.xml rename to ultraSonic/src/main/res/layout/search.xml diff --git a/res/layout/search_buttons.xml b/ultraSonic/src/main/res/layout/search_buttons.xml similarity index 100% rename from res/layout/search_buttons.xml rename to ultraSonic/src/main/res/layout/search_buttons.xml diff --git a/res/layout/select_album.xml b/ultraSonic/src/main/res/layout/select_album.xml similarity index 100% rename from res/layout/select_album.xml rename to ultraSonic/src/main/res/layout/select_album.xml diff --git a/res/layout/select_album_header.xml b/ultraSonic/src/main/res/layout/select_album_header.xml similarity index 100% rename from res/layout/select_album_header.xml rename to ultraSonic/src/main/res/layout/select_album_header.xml diff --git a/res/layout/select_artist.xml b/ultraSonic/src/main/res/layout/select_artist.xml similarity index 100% rename from res/layout/select_artist.xml rename to ultraSonic/src/main/res/layout/select_artist.xml diff --git a/res/layout/select_artist_header.xml b/ultraSonic/src/main/res/layout/select_artist_header.xml similarity index 100% rename from res/layout/select_artist_header.xml rename to ultraSonic/src/main/res/layout/select_artist_header.xml diff --git a/res/layout/select_genre.xml b/ultraSonic/src/main/res/layout/select_genre.xml similarity index 100% rename from res/layout/select_genre.xml rename to ultraSonic/src/main/res/layout/select_genre.xml diff --git a/res/layout/select_playlist.xml b/ultraSonic/src/main/res/layout/select_playlist.xml similarity index 100% rename from res/layout/select_playlist.xml rename to ultraSonic/src/main/res/layout/select_playlist.xml diff --git a/res/layout/select_share.xml b/ultraSonic/src/main/res/layout/select_share.xml similarity index 100% rename from res/layout/select_share.xml rename to ultraSonic/src/main/res/layout/select_share.xml diff --git a/res/layout/share_details.xml b/ultraSonic/src/main/res/layout/share_details.xml similarity index 100% rename from res/layout/share_details.xml rename to ultraSonic/src/main/res/layout/share_details.xml diff --git a/res/layout/share_list_item.xml b/ultraSonic/src/main/res/layout/share_list_item.xml similarity index 100% rename from res/layout/share_list_item.xml rename to ultraSonic/src/main/res/layout/share_list_item.xml diff --git a/res/layout/song_details.xml b/ultraSonic/src/main/res/layout/song_details.xml similarity index 100% rename from res/layout/song_details.xml rename to ultraSonic/src/main/res/layout/song_details.xml diff --git a/res/layout/song_list_item.xml b/ultraSonic/src/main/res/layout/song_list_item.xml similarity index 100% rename from res/layout/song_list_item.xml rename to ultraSonic/src/main/res/layout/song_list_item.xml diff --git a/res/layout/tab_progress.xml b/ultraSonic/src/main/res/layout/tab_progress.xml similarity index 100% rename from res/layout/tab_progress.xml rename to ultraSonic/src/main/res/layout/tab_progress.xml diff --git a/res/layout/time_span_dialog.xml b/ultraSonic/src/main/res/layout/time_span_dialog.xml similarity index 100% rename from res/layout/time_span_dialog.xml rename to ultraSonic/src/main/res/layout/time_span_dialog.xml diff --git a/res/layout/update_playlist.xml b/ultraSonic/src/main/res/layout/update_playlist.xml similarity index 100% rename from res/layout/update_playlist.xml rename to ultraSonic/src/main/res/layout/update_playlist.xml diff --git a/res/layout/video_details.xml b/ultraSonic/src/main/res/layout/video_details.xml similarity index 100% rename from res/layout/video_details.xml rename to ultraSonic/src/main/res/layout/video_details.xml diff --git a/res/layout/video_list_item.xml b/ultraSonic/src/main/res/layout/video_list_item.xml similarity index 100% rename from res/layout/video_list_item.xml rename to ultraSonic/src/main/res/layout/video_list_item.xml diff --git a/res/menu/main.xml b/ultraSonic/src/main/res/menu/main.xml similarity index 100% rename from res/menu/main.xml rename to ultraSonic/src/main/res/menu/main.xml diff --git a/res/menu/nowplaying.xml b/ultraSonic/src/main/res/menu/nowplaying.xml similarity index 100% rename from res/menu/nowplaying.xml rename to ultraSonic/src/main/res/menu/nowplaying.xml diff --git a/res/menu/nowplaying_context.xml b/ultraSonic/src/main/res/menu/nowplaying_context.xml similarity index 100% rename from res/menu/nowplaying_context.xml rename to ultraSonic/src/main/res/menu/nowplaying_context.xml diff --git a/res/menu/select_album.xml b/ultraSonic/src/main/res/menu/select_album.xml similarity index 100% rename from res/menu/select_album.xml rename to ultraSonic/src/main/res/menu/select_album.xml diff --git a/res/menu/select_album_context.xml b/ultraSonic/src/main/res/menu/select_album_context.xml similarity index 100% rename from res/menu/select_album_context.xml rename to ultraSonic/src/main/res/menu/select_album_context.xml diff --git a/res/menu/select_artist_context.xml b/ultraSonic/src/main/res/menu/select_artist_context.xml similarity index 100% rename from res/menu/select_artist_context.xml rename to ultraSonic/src/main/res/menu/select_artist_context.xml diff --git a/res/menu/select_playlist_context.xml b/ultraSonic/src/main/res/menu/select_playlist_context.xml similarity index 100% rename from res/menu/select_playlist_context.xml rename to ultraSonic/src/main/res/menu/select_playlist_context.xml diff --git a/res/menu/select_playlist_context_offline.xml b/ultraSonic/src/main/res/menu/select_playlist_context_offline.xml similarity index 100% rename from res/menu/select_playlist_context_offline.xml rename to ultraSonic/src/main/res/menu/select_playlist_context_offline.xml diff --git a/res/menu/select_share_context.xml b/ultraSonic/src/main/res/menu/select_share_context.xml similarity index 100% rename from res/menu/select_share_context.xml rename to ultraSonic/src/main/res/menu/select_share_context.xml diff --git a/res/menu/select_song_context.xml b/ultraSonic/src/main/res/menu/select_song_context.xml similarity index 100% rename from res/menu/select_song_context.xml rename to ultraSonic/src/main/res/menu/select_song_context.xml diff --git a/res/values-es/strings.xml b/ultraSonic/src/main/res/values-es/strings.xml similarity index 100% rename from res/values-es/strings.xml rename to ultraSonic/src/main/res/values-es/strings.xml diff --git a/res/values-fr/strings.xml b/ultraSonic/src/main/res/values-fr/strings.xml similarity index 100% rename from res/values-fr/strings.xml rename to ultraSonic/src/main/res/values-fr/strings.xml diff --git a/res/values-hu/strings.xml b/ultraSonic/src/main/res/values-hu/strings.xml similarity index 100% rename from res/values-hu/strings.xml rename to ultraSonic/src/main/res/values-hu/strings.xml diff --git a/res/values/arrays.xml b/ultraSonic/src/main/res/values/arrays.xml similarity index 100% rename from res/values/arrays.xml rename to ultraSonic/src/main/res/values/arrays.xml diff --git a/res/values/colors.xml b/ultraSonic/src/main/res/values/colors.xml similarity index 100% rename from res/values/colors.xml rename to ultraSonic/src/main/res/values/colors.xml diff --git a/res/values/strings.xml b/ultraSonic/src/main/res/values/strings.xml similarity index 100% rename from res/values/strings.xml rename to ultraSonic/src/main/res/values/strings.xml diff --git a/res/values/styles.xml b/ultraSonic/src/main/res/values/styles.xml similarity index 100% rename from res/values/styles.xml rename to ultraSonic/src/main/res/values/styles.xml diff --git a/res/values/themes.xml b/ultraSonic/src/main/res/values/themes.xml similarity index 100% rename from res/values/themes.xml rename to ultraSonic/src/main/res/values/themes.xml diff --git a/res/xml/appwidget_info_4x1.xml b/ultraSonic/src/main/res/xml/appwidget_info_4x1.xml similarity index 100% rename from res/xml/appwidget_info_4x1.xml rename to ultraSonic/src/main/res/xml/appwidget_info_4x1.xml diff --git a/res/xml/appwidget_info_4x2.xml b/ultraSonic/src/main/res/xml/appwidget_info_4x2.xml similarity index 100% rename from res/xml/appwidget_info_4x2.xml rename to ultraSonic/src/main/res/xml/appwidget_info_4x2.xml diff --git a/res/xml/appwidget_info_4x3.xml b/ultraSonic/src/main/res/xml/appwidget_info_4x3.xml similarity index 100% rename from res/xml/appwidget_info_4x3.xml rename to ultraSonic/src/main/res/xml/appwidget_info_4x3.xml diff --git a/res/xml/appwidget_info_4x4.xml b/ultraSonic/src/main/res/xml/appwidget_info_4x4.xml similarity index 100% rename from res/xml/appwidget_info_4x4.xml rename to ultraSonic/src/main/res/xml/appwidget_info_4x4.xml diff --git a/res/xml/searchable.xml b/ultraSonic/src/main/res/xml/searchable.xml similarity index 100% rename from res/xml/searchable.xml rename to ultraSonic/src/main/res/xml/searchable.xml diff --git a/res/xml/settings.xml b/ultraSonic/src/main/res/xml/settings.xml similarity index 100% rename from res/xml/settings.xml rename to ultraSonic/src/main/res/xml/settings.xml diff --git a/ultraSonic/ultraSonic.iml b/ultraSonic/ultraSonic.iml new file mode 100644 index 00000000..f93e3114 --- /dev/null +++ b/ultraSonic/ultraSonic.iml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file