├── .classpath ├── .gitignore ├── .project ├── Android.mk ├── AndroidManifest.xml ├── assets ├── RobotoLight.ttf ├── RobotoThin.ttf └── licenses.html ├── proguard.cfg ├── proguard.flags ├── res ├── color │ ├── vpi__dark_theme.xml │ └── vpi__light_theme.xml ├── drawable-hdpi │ ├── appwidget_bg.9.png │ ├── bg_stripes_dark.png │ ├── btn_notification_collapse.png │ ├── btn_playback_next.png │ ├── btn_playback_pause.png │ ├── btn_playback_play.png │ ├── btn_playback_previous.png │ ├── btn_playback_repeat.png │ ├── btn_playback_repeat_all.png │ ├── btn_playback_repeat_one.png │ ├── btn_playback_shuffle.png │ ├── btn_playback_shuffle_all.png │ ├── btn_switch_queue.png │ ├── default_artwork.png │ ├── ic_action_favorite.png │ ├── ic_action_pinn_to_home.png │ ├── ic_action_search.png │ ├── ic_action_shop.png │ ├── ic_launcher.png │ ├── playlist_tile_normal.9.png │ ├── scrubber_primary_holo.9.png │ ├── scrubber_secondary_holo.9.png │ ├── scrubber_track_holo_dark.9.png │ ├── stat_notify_music.png │ ├── view_pager_background_texture.png │ ├── vpi__tab_selected_focused_holo.9.png │ ├── vpi__tab_selected_holo.9.png │ ├── vpi__tab_selected_pressed_holo.9.png │ ├── vpi__tab_unselected_focused_holo.9.png │ ├── vpi__tab_unselected_holo.9.png │ └── vpi__tab_unselected_pressed_holo.9.png ├── drawable-mdpi │ ├── appwidget_bg.9.png │ ├── bg_stripes_dark.png │ ├── btn_notification_collapse.png │ ├── btn_playback_next.png │ ├── btn_playback_pause.png │ ├── btn_playback_play.png │ ├── btn_playback_previous.png │ ├── btn_playback_repeat.png │ ├── btn_playback_repeat_all.png │ ├── btn_playback_repeat_one.png │ ├── btn_playback_shuffle.png │ ├── btn_playback_shuffle_all.png │ ├── btn_switch_queue.png │ ├── default_artwork.png │ ├── ic_action_favorite.png │ ├── ic_action_pinn_to_home.png │ ├── ic_action_search.png │ ├── ic_action_shop.png │ ├── ic_launcher.png │ ├── playlist_tile_normal.9.png │ ├── scrubber_primary_holo.9.png │ ├── scrubber_secondary_holo.9.png │ ├── scrubber_track_holo_dark.9.png │ ├── stat_notify_music.png │ ├── view_pager_background_texture.png │ ├── vpi__tab_selected_focused_holo.9.png │ ├── vpi__tab_selected_holo.9.png │ ├── vpi__tab_selected_pressed_holo.9.png │ ├── vpi__tab_unselected_focused_holo.9.png │ ├── vpi__tab_unselected_holo.9.png │ └── vpi__tab_unselected_pressed_holo.9.png ├── drawable-nodpi │ ├── app_widget_large.png │ ├── app_widget_large_alternate.png │ ├── app_widget_recents.png │ ├── app_widget_recents_stack_preview.png │ ├── app_widget_small.png │ ├── background_holo_dark.png │ ├── header_temp.png │ └── theme_preview.png ├── drawable-xhdpi │ ├── appwidget_bg.9.png │ ├── bg_stripes_dark.png │ ├── btn_notification_collapse.png │ ├── btn_playback_next.png │ ├── btn_playback_pause.png │ ├── btn_playback_play.png │ ├── btn_playback_previous.png │ ├── btn_playback_repeat.png │ ├── btn_playback_repeat_all.png │ ├── btn_playback_repeat_one.png │ ├── btn_playback_shuffle.png │ ├── btn_playback_shuffle_all.png │ ├── btn_switch_queue.png │ ├── default_artwork.png │ ├── ic_action_favorite.png │ ├── ic_action_pinn_to_home.png │ ├── ic_action_search.png │ ├── ic_action_shop.png │ ├── ic_launcher.png │ ├── playlist_tile_normal.9.png │ ├── scrubber_primary_holo.9.png │ ├── scrubber_secondary_holo.9.png │ ├── scrubber_track_holo_dark.9.png │ ├── stat_notify_music.png │ ├── view_pager_background_texture.png │ ├── vpi__tab_selected_focused_holo.9.png │ ├── vpi__tab_selected_holo.9.png │ ├── vpi__tab_selected_pressed_holo.9.png │ ├── vpi__tab_unselected_focused_holo.9.png │ ├── vpi__tab_unselected_holo.9.png │ └── vpi__tab_unselected_pressed_holo.9.png ├── drawable-xxhdpi │ └── default_artwork.png ├── drawable │ ├── action_bar.xml │ ├── audio_player_pager_container.xml │ ├── audio_player_seekbar.xml │ ├── bottom_action_bar.xml │ ├── bottom_shadow.xml │ ├── pager_background.xml │ ├── right_shadow.xml │ ├── top_shadow.xml │ ├── tpi_background.xml │ └── vpi__tab_indicator.xml ├── layout-land │ └── activity_player_base.xml ├── layout-v16 │ └── notification_template_expanded_base.xml ├── layout │ ├── action_bar.xml │ ├── activity_base.xml │ ├── activity_player_base.xml │ ├── activity_profile_base.xml │ ├── app_msg.xml │ ├── app_widget_large.xml │ ├── app_widget_large_alternate.xml │ ├── app_widget_recents.xml │ ├── app_widget_recents_items.xml │ ├── app_widget_small.xml │ ├── audio_player_controls.xml │ ├── bottom_action_bar.xml │ ├── color_scheme_dialog.xml │ ├── colorstrip.xml │ ├── edit_track_list_item.xml │ ├── faux_carousel.xml │ ├── fragment_music_browser_phone.xml │ ├── fragment_themes_base.xml │ ├── grid_base.xml │ ├── grid_items_normal.xml │ ├── list_base.xml │ ├── list_header.xml │ ├── list_item_detailed.xml │ ├── list_item_detailed_no_background.xml │ ├── list_item_normal.xml │ ├── list_item_simple.xml │ ├── notification_template_base.xml │ ├── profile_tab.xml │ ├── profile_tab_carousel.xml │ ├── square_image_view.xml │ └── top_shadow.xml ├── menu │ ├── activity_base.xml │ ├── add_to_homescreen.xml │ ├── album_song_sort_by.xml │ ├── album_sort_by.xml │ ├── artist_album_sort_by.xml │ ├── artist_song_sort_by.xml │ ├── artist_sort_by.xml │ ├── audio_player.xml │ ├── favorite.xml │ ├── queue.xml │ ├── search.xml │ ├── shuffle.xml │ ├── song_sort_by.xml │ ├── theme_shop.xml │ └── view_as.xml ├── values-af │ ├── plurals.xml │ └── strings.xml ├── values-ar │ └── strings.xml ├── values-az │ ├── plurals.xml │ └── strings.xml ├── values-bn │ ├── plurals.xml │ └── strings.xml ├── values-ca │ ├── plurals.xml │ └── strings.xml ├── values-cs │ ├── plurals.xml │ └── strings.xml ├── values-da │ ├── plurals.xml │ └── strings.xml ├── values-de │ ├── plurals.xml │ └── strings.xml ├── values-el │ ├── plurals.xml │ └── strings.xml ├── values-en-rAU │ ├── plurals.xml │ └── strings.xml ├── values-en-rIN │ ├── plurals.xml │ └── strings.xml ├── values-eo-rUY │ └── strings.xml ├── values-es-rUS │ ├── plurals.xml │ └── strings.xml ├── values-es-rXA │ ├── plurals.xml │ └── strings.xml ├── values-es │ ├── plurals.xml │ └── strings.xml ├── values-et │ ├── plurals.xml │ └── strings.xml ├── values-eu │ ├── plurals.xml │ └── strings.xml ├── values-fa │ ├── plurals.xml │ └── strings.xml ├── values-fi │ ├── plurals.xml │ └── strings.xml ├── values-fr-rCA │ └── strings.xml ├── values-fr │ ├── plurals.xml │ └── strings.xml ├── values-fy-rNL │ └── strings.xml ├── values-gl │ ├── plurals.xml │ └── strings.xml ├── values-hr │ └── strings.xml ├── values-hu │ ├── plurals.xml │ └── strings.xml ├── values-in │ ├── plurals.xml │ └── strings.xml ├── values-it │ ├── plurals.xml │ └── strings.xml ├── values-iw │ ├── plurals.xml │ └── strings.xml ├── values-ja │ ├── plurals.xml │ └── strings.xml ├── values-ko │ ├── plurals.xml │ └── strings.xml ├── values-ku │ └── strings.xml ├── values-lb │ ├── plurals.xml │ └── strings.xml ├── values-lt │ ├── plurals.xml │ └── strings.xml ├── values-lv │ └── strings.xml ├── values-nb │ ├── plurals.xml │ └── strings.xml ├── values-nl │ ├── plurals.xml │ └── strings.xml ├── values-pl │ ├── plurals.xml │ └── strings.xml ├── values-pt-rBR │ ├── plurals.xml │ └── strings.xml ├── values-pt-rPT │ ├── plurals.xml │ └── strings.xml ├── values-ro │ ├── plurals.xml │ └── strings.xml ├── values-ru │ ├── plurals.xml │ └── strings.xml ├── values-si │ ├── plurals.xml │ └── strings.xml ├── values-sk │ ├── plurals.xml │ └── strings.xml ├── values-sl │ ├── plurals.xml │ └── strings.xml ├── values-sr │ ├── plurals.xml │ └── strings.xml ├── values-sv │ ├── plurals.xml │ └── strings.xml ├── values-sw600dp │ └── dimens.xml ├── values-ta │ └── strings.xml ├── values-th │ ├── plurals.xml │ └── strings.xml ├── values-tr │ ├── plurals.xml │ └── strings.xml ├── values-uk │ ├── plurals.xml │ └── strings.xml ├── values-vi │ ├── plurals.xml │ └── strings.xml ├── values-zh-rCN │ ├── plurals.xml │ └── strings.xml ├── values-zh-rHK │ ├── plurals.xml │ └── strings.xml ├── values-zh-rTW │ ├── plurals.xml │ └── strings.xml ├── values │ ├── appmsg_colors.xml │ ├── arrays.xml │ ├── attrs.xml │ ├── colors.xml │ ├── config.xml │ ├── dimens.xml │ ├── donottranslate.xml │ ├── fractions.xml │ ├── plurals.xml │ ├── strings.xml │ ├── styles.xml │ ├── themeconfig.xml │ ├── vpi__attrs.xml │ ├── vpi__colors.xml │ ├── vpi__defaults.xml │ └── vpi__styles.xml └── xml │ ├── app_widget_large.xml │ ├── app_widget_large_alternate.xml │ ├── app_widget_recents.xml │ ├── app_widget_small.xml │ ├── searchable.xml │ └── settings.xml └── src └── com ├── andrew └── apollo │ ├── ApolloApplication.java │ ├── Config.java │ ├── IApolloService.aidl │ ├── MediaButtonIntentReceiver.java │ ├── MusicPlaybackService.java │ ├── MusicStateListener.java │ ├── NotificationHelper.java │ ├── adapters │ ├── AlbumAdapter.java │ ├── ArtistAdapter.java │ ├── ArtistAlbumAdapter.java │ ├── GenreAdapter.java │ ├── PagerAdapter.java │ ├── PlaylistAdapter.java │ ├── ProfileSongAdapter.java │ └── SongAdapter.java │ ├── appwidgets │ ├── AppWidgetBase.java │ ├── AppWidgetLarge.java │ ├── AppWidgetLargeAlternate.java │ ├── AppWidgetSmall.java │ ├── RecentWidgetProvider.java │ └── RecentWidgetService.java │ ├── cache │ ├── DiskLruCache.java │ ├── ImageCache.java │ ├── ImageFetcher.java │ ├── ImageWorker.java │ └── LruCache.java │ ├── dragdrop │ ├── DragSortController.java │ ├── DragSortListView.java │ └── SimpleFloatViewManager.java │ ├── format │ ├── Capitalize.java │ └── PrefixHighlighter.java │ ├── lastfm │ ├── Album.java │ ├── Artist.java │ ├── Caller.java │ ├── DomElement.java │ ├── Image.java │ ├── ImageHolder.java │ ├── ImageSize.java │ ├── ItemFactory.java │ ├── ItemFactoryBuilder.java │ ├── MapUtilities.java │ ├── MusicEntry.java │ ├── PaginatedResult.java │ ├── ResponseBuilder.java │ ├── Result.java │ └── StringUtilities.java │ ├── loaders │ ├── AlbumLoader.java │ ├── AlbumSongLoader.java │ ├── ArtistAlbumLoader.java │ ├── ArtistLoader.java │ ├── ArtistSongLoader.java │ ├── AsyncHandler.java │ ├── FavoritesLoader.java │ ├── GenreLoader.java │ ├── GenreSongLoader.java │ ├── LastAddedLoader.java │ ├── NowPlayingCursor.java │ ├── PlaylistLoader.java │ ├── PlaylistSongLoader.java │ ├── QueueLoader.java │ ├── RecentLoader.java │ ├── SearchLoader.java │ ├── SongLoader.java │ └── WrappedAsyncTaskLoader.java │ ├── menu │ ├── BasePlaylistDialog.java │ ├── CreateNewPlaylist.java │ ├── DeleteDialog.java │ ├── FragmentMenuItems.java │ ├── PhotoSelectionDialog.java │ └── RenamePlaylist.java │ ├── model │ ├── Album.java │ ├── Artist.java │ ├── Genre.java │ ├── Playlist.java │ └── Song.java │ ├── provider │ ├── FavoritesStore.java │ └── RecentStore.java │ ├── recycler │ └── RecycleHolder.java │ ├── ui │ ├── MusicHolder.java │ ├── activities │ │ ├── AudioPlayerActivity.java │ │ ├── BaseActivity.java │ │ ├── HomeActivity.java │ │ ├── ProfileActivity.java │ │ ├── SearchActivity.java │ │ ├── SettingsActivity.java │ │ ├── ShortcutActivity.java │ │ └── ThemesActivity.java │ └── fragments │ │ ├── AlbumFragment.java │ │ ├── ArtistFragment.java │ │ ├── GenreFragment.java │ │ ├── PlaylistFragment.java │ │ ├── QueueFragment.java │ │ ├── RecentFragment.java │ │ ├── SongFragment.java │ │ ├── ThemeFragment.java │ │ ├── phone │ │ └── MusicBrowserPhoneFragment.java │ │ └── profile │ │ ├── AlbumSongFragment.java │ │ ├── ArtistAlbumFragment.java │ │ ├── ArtistSongFragment.java │ │ ├── FavoriteFragment.java │ │ ├── GenreSongFragment.java │ │ ├── LastAddedFragment.java │ │ └── PlaylistSongFragment.java │ ├── utils │ ├── ApolloUtils.java │ ├── BitmapUtils.java │ ├── Lists.java │ ├── MusicUtils.java │ ├── NavUtils.java │ ├── PreferenceUtils.java │ ├── SortOrder.java │ └── ThemeUtils.java │ └── widgets │ ├── AlphaPatternDrawable.java │ ├── AlphaTouchInterceptorOverlay.java │ ├── CarouselTab.java │ ├── ColorPanelView.java │ ├── ColorPickerView.java │ ├── ColorSchemeDialog.java │ ├── FrameLayoutWithOverlay.java │ ├── LayoutSuppressingImageView.java │ ├── PlayPauseButton.java │ ├── ProfileTabCarousel.java │ ├── RepeatButton.java │ ├── RepeatingImageButton.java │ ├── SeparatedListAdapter.java │ ├── ShowHideMasterLayout.java │ ├── ShuffleButton.java │ ├── SquareImageView.java │ ├── SquareView.java │ ├── VerticalScrollListener.java │ └── theme │ ├── BottomActionBar.java │ ├── Colorstrip.java │ ├── HoloSelector.java │ ├── ThemeableFrameLayout.java │ ├── ThemeableSeekBar.java │ ├── ThemeableTextView.java │ └── ThemeableTitlePageIndicator.java ├── devspark └── appmsg │ ├── AppMsg.java │ └── MsgManager.java └── viewpagerindicator ├── CirclePageIndicator.java ├── IconPageIndicator.java ├── IconPagerAdapter.java ├── IcsLinearLayout.java ├── LinePageIndicator.java ├── PageIndicator.java ├── TabPageIndicator.java ├── TitlePageIndicator.java └── UnderlinePageIndicator.java /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | git rm -r --cached bin 2 | git rm -r --cached gen -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Apollo 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH:= $(call my-dir) 2 | include $(CLEAR_VARS) 3 | 4 | LOCAL_MODULE_TAGS := optional 5 | 6 | LOCAL_SRC_FILES := src/com/andrew/apollo/IApolloService.aidl 7 | LOCAL_SRC_FILES += $(call all-java-files-under, src) 8 | 9 | LOCAL_STATIC_JAVA_LIBRARIES := \ 10 | android-support-v4 11 | 12 | LOCAL_PACKAGE_NAME := Apollo 13 | LOCAL_OVERRIDES_PACKAGES := Music 14 | 15 | LOCAL_SDK_VERSION := current 16 | LOCAL_PROGUARD_FLAG_FILES := proguard.flags 17 | 18 | include $(BUILD_PACKAGE) 19 | 20 | -------------------------------------------------------------------------------- /assets/RobotoLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/assets/RobotoLight.ttf -------------------------------------------------------------------------------- /assets/RobotoThin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/assets/RobotoThin.ttf -------------------------------------------------------------------------------- /proguard.cfg: -------------------------------------------------------------------------------- 1 | -optimizationpasses 5 2 | -dontusemixedcaseclassnames 3 | -dontskipnonpubliclibraryclasses 4 | -dontpreverify 5 | -verbose 6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7 | 8 | -keep public class * extends android.app.Activity 9 | -keep public class * extends android.app.Application 10 | -keep public class * extends android.app.Service 11 | -keep public class * extends android.content.BroadcastReceiver 12 | -keep public class * extends android.content.ContentProvider 13 | -keep public class * extends android.app.backup.BackupAgentHelper 14 | -keep public class * extends android.preference.Preference 15 | -keep public class com.android.vending.licensing.ILicensingService 16 | 17 | #keep all classes that might be used in XML layouts 18 | -keep public class * extends android.view.View 19 | -keep public class * extends android.app.Fragment 20 | -keep public class * extends android.support.v4.Fragment 21 | 22 | #keep all classes 23 | -keep public class *{ 24 | public protected *; 25 | } 26 | 27 | #keep all public and protected methods that could be used by java reflection 28 | -keepclassmembernames class * { 29 | public protected ; 30 | } 31 | 32 | -keepclasseswithmembers class * { 33 | native ; 34 | } 35 | 36 | -keepclasseswithmembers class * { 37 | public (android.content.Context, android.util.AttributeSet); 38 | } 39 | 40 | -keepclasseswithmembers class * { 41 | public (android.content.Context, android.util.AttributeSet, int); 42 | } 43 | 44 | -keepclassmembers enum * { 45 | public static **[] values(); 46 | public static ** valueOf(java.lang.String); 47 | } 48 | 49 | -keep class * implements android.os.Parcelable { 50 | public static final android.os.Parcelable$Creator *; 51 | } 52 | 53 | -dontwarn **CompatHoneycomb 54 | -dontwarn org.htmlcleaner.* 55 | #-keep class android.support.v4.** { *; } -------------------------------------------------------------------------------- /proguard.flags: -------------------------------------------------------------------------------- 1 | -dontwarn org.jaudiotagger.** 2 | -------------------------------------------------------------------------------- /res/color/vpi__dark_theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /res/color/vpi__light_theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /res/drawable-hdpi/appwidget_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/appwidget_bg.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/bg_stripes_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/bg_stripes_dark.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_notification_collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_notification_collapse.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_next.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_pause.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_play.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_previous.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_repeat.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_repeat_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_repeat_all.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_repeat_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_repeat_one.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_shuffle.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_playback_shuffle_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_playback_shuffle_all.png -------------------------------------------------------------------------------- /res/drawable-hdpi/btn_switch_queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/btn_switch_queue.png -------------------------------------------------------------------------------- /res/drawable-hdpi/default_artwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/default_artwork.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_action_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/ic_action_favorite.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_action_pinn_to_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/ic_action_pinn_to_home.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/ic_action_search.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_action_shop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/ic_action_shop.png -------------------------------------------------------------------------------- /res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-hdpi/playlist_tile_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/playlist_tile_normal.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/scrubber_primary_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/scrubber_primary_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/scrubber_secondary_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/scrubber_secondary_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/scrubber_track_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/scrubber_track_holo_dark.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/stat_notify_music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/stat_notify_music.png -------------------------------------------------------------------------------- /res/drawable-hdpi/view_pager_background_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/view_pager_background_texture.png -------------------------------------------------------------------------------- /res/drawable-hdpi/vpi__tab_selected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/vpi__tab_selected_focused_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/vpi__tab_selected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/vpi__tab_selected_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/vpi__tab_selected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/vpi__tab_selected_pressed_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/vpi__tab_unselected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/vpi__tab_unselected_focused_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/vpi__tab_unselected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/vpi__tab_unselected_holo.9.png -------------------------------------------------------------------------------- /res/drawable-hdpi/vpi__tab_unselected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-hdpi/vpi__tab_unselected_pressed_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/appwidget_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/appwidget_bg.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/bg_stripes_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/bg_stripes_dark.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_notification_collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_notification_collapse.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_next.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_pause.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_play.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_previous.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_repeat.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_repeat_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_repeat_all.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_repeat_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_repeat_one.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_shuffle.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_playback_shuffle_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_playback_shuffle_all.png -------------------------------------------------------------------------------- /res/drawable-mdpi/btn_switch_queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/btn_switch_queue.png -------------------------------------------------------------------------------- /res/drawable-mdpi/default_artwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/default_artwork.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_action_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/ic_action_favorite.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_action_pinn_to_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/ic_action_pinn_to_home.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/ic_action_search.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_action_shop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/ic_action_shop.png -------------------------------------------------------------------------------- /res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-mdpi/playlist_tile_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/playlist_tile_normal.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/scrubber_primary_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/scrubber_primary_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/scrubber_secondary_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/scrubber_secondary_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/scrubber_track_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/scrubber_track_holo_dark.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/stat_notify_music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/stat_notify_music.png -------------------------------------------------------------------------------- /res/drawable-mdpi/view_pager_background_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/view_pager_background_texture.png -------------------------------------------------------------------------------- /res/drawable-mdpi/vpi__tab_selected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/vpi__tab_selected_focused_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/vpi__tab_selected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/vpi__tab_selected_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/vpi__tab_selected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/vpi__tab_selected_pressed_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/vpi__tab_unselected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/vpi__tab_unselected_focused_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/vpi__tab_unselected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/vpi__tab_unselected_holo.9.png -------------------------------------------------------------------------------- /res/drawable-mdpi/vpi__tab_unselected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-mdpi/vpi__tab_unselected_pressed_holo.9.png -------------------------------------------------------------------------------- /res/drawable-nodpi/app_widget_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/app_widget_large.png -------------------------------------------------------------------------------- /res/drawable-nodpi/app_widget_large_alternate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/app_widget_large_alternate.png -------------------------------------------------------------------------------- /res/drawable-nodpi/app_widget_recents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/app_widget_recents.png -------------------------------------------------------------------------------- /res/drawable-nodpi/app_widget_recents_stack_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/app_widget_recents_stack_preview.png -------------------------------------------------------------------------------- /res/drawable-nodpi/app_widget_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/app_widget_small.png -------------------------------------------------------------------------------- /res/drawable-nodpi/background_holo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/background_holo_dark.png -------------------------------------------------------------------------------- /res/drawable-nodpi/header_temp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/header_temp.png -------------------------------------------------------------------------------- /res/drawable-nodpi/theme_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-nodpi/theme_preview.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/appwidget_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/appwidget_bg.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/bg_stripes_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/bg_stripes_dark.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_notification_collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_notification_collapse.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_next.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_pause.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_play.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_previous.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_repeat.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_repeat_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_repeat_all.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_repeat_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_repeat_one.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_shuffle.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_playback_shuffle_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_playback_shuffle_all.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/btn_switch_queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/btn_switch_queue.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/default_artwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/default_artwork.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_action_favorite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/ic_action_favorite.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_action_pinn_to_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/ic_action_pinn_to_home.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_action_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/ic_action_search.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_action_shop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/ic_action_shop.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/playlist_tile_normal.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/playlist_tile_normal.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/scrubber_primary_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/scrubber_primary_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/scrubber_secondary_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/scrubber_secondary_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/scrubber_track_holo_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/scrubber_track_holo_dark.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/stat_notify_music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/stat_notify_music.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/view_pager_background_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/view_pager_background_texture.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/vpi__tab_selected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/vpi__tab_selected_focused_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/vpi__tab_selected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/vpi__tab_selected_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/vpi__tab_selected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/vpi__tab_selected_pressed_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/vpi__tab_unselected_focused_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/vpi__tab_unselected_focused_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/vpi__tab_unselected_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/vpi__tab_unselected_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xhdpi/vpi__tab_unselected_pressed_holo.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xhdpi/vpi__tab_unselected_pressed_holo.9.png -------------------------------------------------------------------------------- /res/drawable-xxhdpi/default_artwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CyanogenMod/android_packages_apps_Apollo/085099c04708d75380b1c996094dbdc7dc0a11a0/res/drawable-xxhdpi/default_artwork.png -------------------------------------------------------------------------------- /res/drawable/action_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /res/drawable/audio_player_pager_container.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /res/drawable/audio_player_seekbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 22 | 23 | 26 | 27 | 28 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /res/drawable/bottom_action_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /res/drawable/bottom_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /res/drawable/pager_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | -------------------------------------------------------------------------------- /res/drawable/right_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /res/drawable/top_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /res/drawable/tpi_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | -------------------------------------------------------------------------------- /res/drawable/vpi__tab_indicator.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /res/layout/action_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 23 | 24 | 31 | 32 | 37 | 38 | 45 | 46 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /res/layout/activity_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 21 | 22 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /res/layout/activity_profile_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 19 | 20 | 24 | 25 | 28 | 29 | 33 | 34 | 40 | 41 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /res/layout/app_msg.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 19 | 20 | -------------------------------------------------------------------------------- /res/layout/app_widget_recents_items.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 25 | 30 | 31 | 38 | 39 | 46 | 47 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /res/layout/colorstrip.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /res/layout/edit_track_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 21 | 22 | 28 | 29 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/layout/faux_carousel.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 19 | 20 | 23 | 24 | -------------------------------------------------------------------------------- /res/layout/fragment_music_browser_phone.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 21 | 25 | 26 | 31 | 32 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /res/layout/fragment_themes_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 29 | 30 | 34 | 35 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /res/layout/grid_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 32 | 33 | 45 | 46 | -------------------------------------------------------------------------------- /res/layout/grid_items_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | 24 | 25 | 32 | 33 | 43 | 44 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /res/layout/list_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 23 | 24 | 34 | 35 | 46 | 47 | -------------------------------------------------------------------------------- /res/layout/list_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 26 | -------------------------------------------------------------------------------- /res/layout/profile_tab_carousel.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 25 | 30 | 31 | 38 | 39 | 42 | 43 | 46 | 47 | 48 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /res/layout/square_image_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 21 | 22 | 27 | 28 | -------------------------------------------------------------------------------- /res/layout/top_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 20 | -------------------------------------------------------------------------------- /res/menu/activity_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 24 | 25 | -------------------------------------------------------------------------------- /res/menu/add_to_homescreen.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 25 | 26 | -------------------------------------------------------------------------------- /res/menu/album_song_sort_by.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 36 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /res/menu/album_sort_by.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 36 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /res/menu/artist_album_sort_by.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/menu/artist_song_sort_by.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /res/menu/artist_sort_by.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/menu/audio_player.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 27 | 31 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /res/menu/favorite.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 25 | 26 | -------------------------------------------------------------------------------- /res/menu/queue.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /res/menu/search.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /res/menu/shuffle.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | -------------------------------------------------------------------------------- /res/menu/song_sort_by.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /res/menu/theme_shop.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 24 | 25 | -------------------------------------------------------------------------------- /res/menu/view_as.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 23 | 24 | 27 | 30 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /res/values-af/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 album 22 | %d albums 23 | 24 | 25 | 1 lied 26 | %d liedjies 27 | 28 | 29 | 1 lied is bygevoeg by die speellys. 30 | %d liedjies is bygevoeg by die speellys. 31 | 32 | 33 | 1 lied is verwyder van speellys. 34 | %d liedjies is verwyder van die speellys. 35 | 36 | 37 | 1 lied is bygevoeg by die lys. 38 | %d liedjies is bygevoeg by die lys. 39 | 40 | 41 | 1 lied was verwyder. 42 | %d liedjies was verwyder. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-da/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 album 22 | %d albums 23 | 24 | 25 | 1 sang 26 | %d sange 27 | 28 | 29 | 1 sang tilføjet til playliste. 30 | %d sange tilføjet til playliste. 31 | 32 | 33 | 1 sang fjernet fra playliste. 34 | %d sange fjernet fra playliste. 35 | 36 | 37 | 1 sang tilføjet til køen. 38 | %d sange tilføjet til køen. 39 | 40 | 41 | 1 sang blev slettet. 42 | %d sange blev slettet. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-de/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d Album 22 | %d Alben 23 | 24 | 25 | 1 Titel 26 | %d Titel 27 | 28 | 29 | 1 Titel wurde zur Wiedergabeliste hinzugefügt. 30 | %d Titel wurden zur Wiedergabeliste hinzugefügt. 31 | 32 | 33 | 1 Titel wurde aus der Wiedergabeliste entfernt. 34 | %d Titel wurden aus der Wiedergabeliste entfernt. 35 | 36 | 37 | 1 Titel wurde zur Warteschlange hinzugefügt. 38 | %d Titel wurden zur Warteschlange hinzugefügt. 39 | 40 | 41 | 1 Titel wurde gelöscht. 42 | %d Titel wurden gelöscht. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-en-rAU/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d album 22 | %d albums 23 | 24 | 25 | %d song 26 | %d songs 27 | 28 | 29 | %d song added to playlist. 30 | %d songs added to playlist. 31 | 32 | 33 | %d song removed from playlist. 34 | %d songs removed from playlist. 35 | 36 | 37 | %d song added to the queue. 38 | %d songs added to the queue. 39 | 40 | 41 | %d song was deleted. 42 | %d songs were deleted. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-en-rIN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d album 22 | %d albums 23 | 24 | 25 | %d song 26 | %d songs 27 | 28 | 29 | %d song added to playlist. 30 | %d songs added to playlist. 31 | 32 | 33 | %d song removed from playlist. 34 | %d songs removed from playlist. 35 | 36 | 37 | %d song added to the queue. 38 | %d songs added to the queue. 39 | 40 | 41 | %d song was deleted. 42 | %d songs were deleted. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-eo-rUY/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | Konservi 21 | 22 | -------------------------------------------------------------------------------- /res/values-es-rUS/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d álbum 22 | %d álbumes 23 | 24 | 25 | -------------------------------------------------------------------------------- /res/values-es-rXA/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 álbum 22 | %d álbumes 23 | 24 | 25 | 1 canción 26 | %d canciones 27 | 28 | 29 | amestóse 1 canción a la lista. 30 | %d canciones amestaes a la llista. 31 | 32 | 33 | desanicióse 1 canción de la llista. 34 | %d canciones desaniciaes de la llista. 35 | 36 | 37 | amestóse 1 canción a la cola. 38 | %d canciones amestaes a la cola. 39 | 40 | 41 | desanicióse 1 canción. 42 | %d canciones desaniciaes. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-es/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 álbum 22 | %d álbumes 23 | 24 | 25 | 1 canción 26 | %d canciones 27 | 28 | 29 | 1 canción se añadió a la lista. 30 | %d canciones se añadieron a la lista. 31 | 32 | 33 | 1 canción se quitó de la lista. 34 | %d canciones se quitaron de la lista. 35 | 36 | 37 | 1 canción se añadió a la cola. 38 | %d canciones se añadieron a la cola. 39 | 40 | 41 | 1 canción fue eliminada. 42 | %d canciones fueron eliminadas. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-eu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | Album %d 22 | %d album 23 | 24 | 25 | Abesti 1 26 | %d abesti 27 | 28 | 29 | Abesti %d gehitu da zerrendara. 30 | %d abesti gehitu dira zerrendara. 31 | 32 | 33 | Abesti bat zerrendatik kendu da. 34 | %d abesti kendu dira zerrendatik. 35 | 36 | 37 | Abesti %d gehitu da ilarara. 38 | %d abesti gehitu dira ilarara. 39 | 40 | 41 | Abesti bat ezabatu da. 42 | %d abesti ezabatu dira. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-fa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d آلبوم 22 | 23 | 24 | %d آهنگ 25 | 26 | 27 | %d آهنگ به لیست پخش اضافه شد. 28 | 29 | 30 | -------------------------------------------------------------------------------- /res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | اخیر 21 | هنرمندان 22 | ذخیره صف 23 | سنجاق کردن به صفحه اصلی 24 | مشاهده به صورت 25 | ذخیره 26 | لغو 27 | حذف 28 | استفاده به عنوان صدای زنگ 29 | %s به صفحه اصلی شما سنجاق شد 30 | %s قابل سنجاق شدن به صفحه اصلی شما نیست 31 | \'%s\' به‌عنوان صدای زنگ تنظیم شد 32 | رابط کاربری 33 | دریافت فقط از طریق وای‌فای 34 | 35 | -------------------------------------------------------------------------------- /res/values-fi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 albumi 22 | %d albumia 23 | 24 | 25 | 1 kappale 26 | %d kappaletta 27 | 28 | 29 | 1 kappale lisätty soittolistalle. 30 | %d kappaletta lisätty soittolistalle. 31 | 32 | 33 | 1 kappale poistettu soittolistalta. 34 | %d kappaletta poistettu soittolistalta. 35 | 36 | 37 | 1 kappale lisätty jonoon. 38 | %d kappaletta lisätty jonoon. 39 | 40 | 41 | 1 kappale poistettiin. 42 | %d kappaletta poistettiin. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-fy-rNL/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | Ynstellingen 21 | Sykje 22 | Favoryt 23 | Bewarje 24 | Annulearje 25 | Fuortsmite 26 | Oer 27 | Oer Apollo 28 | 29 | -------------------------------------------------------------------------------- /res/values-in/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d album 22 | 23 | 24 | %d lagu 25 | 26 | 27 | %d lagu telah ditambahkan ke daftar putar. 28 | 29 | 30 | %d lagu dihapus dari daftar putar. 31 | 32 | 33 | %d lagu telah ditambahkan ke antrian. 34 | 35 | 36 | %d lagu telah dihapus. 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-iw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d אלבום 22 | %d אלבומים 23 | 24 | 25 | שיר %d 26 | %d שירים 27 | 28 | 29 | שיר אחד נוסף לרשימת השמעה. 30 | %d שירים נוספו לרשימת השמעה. 31 | 32 | 33 | שיר אחד הוסר מרשימת השמעה. 34 | %d שירים הוסרו מרשימת השמעה. 35 | 36 | 37 | שיר אחד הוסף לתור השמעה. 38 | %d שירים נוספו לתור השמעה. 39 | 40 | 41 | שיר אחד נמחק. 42 | %d שירים נמחקו. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-ja/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d枚のアルバム 22 | 23 | 24 | %d 25 | 26 | 27 | %d曲をプレイリストに追加しました。 28 | 29 | 30 | %d曲をプレイリストから削除しました。 31 | 32 | 33 | %d曲をキューに追加しました。 34 | 35 | 36 | %d曲を削除しました。 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-ko/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d개의 앨범 22 | 23 | 24 | %d개의 노래 25 | 26 | 27 | %d개의 노래가 재생목록에 추가되었습니다. 28 | 29 | 30 | %d개의 노래가 재생목록에서 제거되었습니다. 31 | 32 | 33 | %d개의 노래가 대기목록에 추가되었습니다. 34 | 35 | 36 | %d개의 노래가 삭제되었습니다. 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-nb/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 album 22 | %d album 23 | 24 | 25 | 1 sang 26 | %d sanger 27 | 28 | 29 | 1 sang lagt til i spillelisten. 30 | %d sanger lagt til i spillelisten. 31 | 32 | 33 | %d sang fjernet fra spillelisten. 34 | %d sang fjernet fra spillelisten. 35 | 36 | 37 | 1 sang lagt til i køen. 38 | %d sanger lagt til i køen. 39 | 40 | 41 | 1 sang ble slettet. 42 | %d sanger ble slettet. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-nl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 album 22 | %d albums 23 | 24 | 25 | 1 nummer 26 | %d nummers 27 | 28 | 29 | 1 nummer toegevoegd aan afspeellijst. 30 | %d nummers toegevoegd aan afspeellijst. 31 | 32 | 33 | 1 nummer verwijderd uit afspeellijst. 34 | %d nummers verwijderd uit afspeellijst. 35 | 36 | 37 | 1 nummer toegevoegd aan wachtrij. 38 | %d nummers toegevoegd aan wachtrij. 39 | 40 | 41 | 1 nummer verwijderd. 42 | %d nummers verwijderd. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-pl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d album 22 | %d albumy 23 | %d albumów 24 | 25 | 26 | %d utwór 27 | %d utwory 28 | %d utworów 29 | 30 | 31 | -------------------------------------------------------------------------------- /res/values-pt-rBR/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 álbum 22 | %d álbuns 23 | 24 | 25 | 1 música 26 | %d músicas 27 | 28 | 29 | 1 música adicionada à lista de reprodução. 30 | %d músicas adicionadas à lista de reprodução. 31 | 32 | 33 | 1 música removida da lista de reprodução. 34 | %d músicas removidas da lista de reprodução. 35 | 36 | 37 | 1 música adicionada à fila. 38 | %d músicas adicionadas à fila. 39 | 40 | 41 | 1 música foi excluída. 42 | %d músicas foram excluídas. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-sv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 1 album 22 | %d album 23 | 24 | 25 | 1 låt 26 | %d låtar 27 | 28 | 29 | 1 låt lades till spellistan. 30 | %d låtar lades till spellistan. 31 | 32 | 33 | 1 låt borttagen från spellistan. 34 | %d låtar borttagna från spellistan. 35 | 36 | 37 | 1 låt lades till kön. 38 | %d låtar lades till kön. 39 | 40 | 41 | 1 låt togs bort. 42 | %d låtar togs bort. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 164.0dip 21 | 22 | -------------------------------------------------------------------------------- /res/values-ta/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | பழைய புகைப்படம் பயன்படுத்தவும் 21 | 22 | -------------------------------------------------------------------------------- /res/values-th/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d อัลบั้ม 22 | 23 | 24 | %d เพลง 25 | 26 | 27 | %d เพลงถูกเพิ่มมายังรายการเพลง 28 | 29 | 30 | %d เพลงถูกรำออกจากรายการเพลง 31 | 32 | 33 | %d เพลงอยู่ในคิว 34 | 35 | 36 | %d เพลง ถูกลบ 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-tr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d albüm 22 | %d albüm 23 | 24 | 25 | %d şarkı 26 | %d şarkı 27 | 28 | 29 | %d şarkı çalma listesine eklendi. 30 | %d şarkı çalma listesine eklendi. 31 | 32 | 33 | %d şarkı oynatma listesinden silindi. 34 | %d şarkı oynatma listesinden silindi. 35 | 36 | 37 | %d şarkı kuyruğa eklendi. 38 | %d şarkı kuyruğa eklendi. 39 | 40 | 41 | %d şarkı silindi. 42 | %d şarkı silindi. 43 | 44 | 45 | -------------------------------------------------------------------------------- /res/values-vi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d album 22 | 23 | 24 | %d bài hát 25 | 26 | 27 | %d bài hát được thêm vào danh sách. 28 | 29 | 30 | %d bài hát được xoá khỏi danh sách. 31 | 32 | 33 | %d bài hát được thêm vào danh sách chờ. 34 | 35 | 36 | %d bài hát đã được xoá. 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-zh-rCN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d 张专辑 22 | 23 | 24 | %d 首歌曲 25 | 26 | 27 | 已添加 %d 首歌曲到播放列表。 28 | 29 | 30 | %d 首歌曲已从播放列表中移除。 31 | 32 | 33 | %d 首歌曲已添加到队列。 34 | 35 | 36 | 已删除 %d 首歌曲。 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-zh-rHK/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d 張專輯 22 | 23 | 24 | %d 首歌曲 25 | 26 | 27 | 已新增 %d 首歌曲到播放清單中。 28 | 29 | 30 | 已從播放清單中移除 %d 首歌。 31 | 32 | 33 | 已新增 %d 首歌曲到隊列中。 34 | 35 | 36 | 已刪除 %d 首歌曲。 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values-zh-rTW/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | %d 張專輯 22 | 23 | 24 | %d 首樂曲 25 | 26 | 27 | %d 首歌已加入播放清單。 28 | 29 | 30 | %d 首歌已從播放清單移除。 31 | 32 | 33 | %d 首歌已加入隊列。 34 | 35 | 36 | %d 首歌已刪除。 37 | 38 | 39 | -------------------------------------------------------------------------------- /res/values/appmsg_colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | #CC0000 19 | #FF8800 20 | #669900 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 22 | @string/page_playlists 23 | @string/page_recent 24 | @string/page_artists 25 | @string/page_albums 26 | @string/page_songs 27 | @string/page_genres 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | #00000000 20 | 21 | 22 | #ff000000 23 | 24 | 25 | #ffffffff 26 | 27 | 28 | #99000000 29 | 30 | 31 | #ffcccccc 32 | 33 | 34 | #c1000000 35 | 36 | 37 | #ff0d0d0d 38 | 39 | 40 | #ff33b5e5 41 | 42 | 43 | #9933b5e5 44 | 45 | 46 | #ff99cc00 47 | 48 | 49 | #ffff4444 50 | 51 | 52 | #ffaa66cc 53 | 54 | 55 | #ffffbb33 56 | 57 | 58 | #ffff8800 59 | 60 | 61 | -------------------------------------------------------------------------------- /res/values/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | true 20 | 21 | 22 | true 23 | 24 | 25 | -------------------------------------------------------------------------------- /res/values/donottranslate.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | %2$d:%3$02d 20 | 21 | %1$d:%2$02d:%3$02d 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/values/fractions.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 75.0% 19 | 42.0% 20 | 21 | 22 | -------------------------------------------------------------------------------- /res/values/themeconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 19 | @color/action_bar_color 20 | 21 | 22 | @color/white 23 | 24 | 25 | @color/transparent_white 26 | 27 | 28 | @color/white 29 | @color/transparent_white 30 | @color/transparent_white 31 | 32 | 33 | @color/white 34 | @color/white 35 | @color/white 36 | @color/transparent_white 37 | @color/action_bar_color 38 | 39 | 40 | @color/action_bar_color 41 | @color/white 42 | @color/transparent_white 43 | 44 | 45 | @color/transparent_white 46 | @color/transparent_white 47 | @color/transparent_white 48 | @color/transparent_white 49 | 50 | 51 | -------------------------------------------------------------------------------- /res/values/vpi__colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | #ff000000 19 | #fff3f3f3 20 | @color/vpi__background_holo_light 21 | @color/vpi__background_holo_dark 22 | #ff4c4c4c 23 | #ffb2b2b2 24 | @color/vpi__bright_foreground_holo_light 25 | @color/vpi__bright_foreground_holo_dark 26 | 27 | -------------------------------------------------------------------------------- /res/values/vpi__styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 18 | 22 | 23 | 25 | 26 | 37 | 38 | 42 | 43 | 47 | 48 | -------------------------------------------------------------------------------- /res/xml/app_widget_large.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | -------------------------------------------------------------------------------- /res/xml/app_widget_large_alternate.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | -------------------------------------------------------------------------------- /res/xml/app_widget_recents.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 27 | -------------------------------------------------------------------------------- /res/xml/app_widget_small.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | -------------------------------------------------------------------------------- /res/xml/searchable.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 25 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/Config.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo; 13 | 14 | /** 15 | * App-wide constants. 16 | * 17 | * @author Andrew Neal (andrewdneal@gmail.com) 18 | */ 19 | public final class Config { 20 | 21 | /* This class is never initiated. */ 22 | public Config() { 23 | } 24 | 25 | /** 26 | * My personal Last.fm API key, please use your own. 27 | */ 28 | public static final String LASTFM_API_KEY = "0b45ec07b9349b0127399e877793bebc"; 29 | 30 | /** 31 | * Used to distinguish album art from artist images 32 | */ 33 | public static final String ALBUM_ART_SUFFIX = "album"; 34 | 35 | /** 36 | * The ID of an artist, album, genre, or playlist passed to the profile 37 | * activity 38 | */ 39 | public static final String ID = "id"; 40 | 41 | /** 42 | * The name of an artist, album, genre, or playlist passed to the profile 43 | * activity 44 | */ 45 | public static final String NAME = "name"; 46 | 47 | /** 48 | * The name of an artist passed to the profile activity 49 | */ 50 | public static final String ARTIST_NAME = "artist_name"; 51 | 52 | /** 53 | * The year an album was released passed to the profile activity 54 | */ 55 | public static final String ALBUM_YEAR = "album_year"; 56 | 57 | /** 58 | * The MIME type passed to a the profile activity 59 | */ 60 | public static final String MIME_TYPE = "mime_type"; 61 | 62 | /** 63 | * Play from search intent 64 | */ 65 | public static final String PLAY_FROM_SEARCH = "android.media.action.MEDIA_PLAY_FROM_SEARCH"; 66 | } 67 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/IApolloService.aidl: -------------------------------------------------------------------------------- 1 | package com.andrew.apollo; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | interface IApolloService 6 | { 7 | void openFile(String path); 8 | void open(in long [] list, int position); 9 | void stop(); 10 | void pause(); 11 | void play(); 12 | void prev(); 13 | void next(); 14 | void enqueue(in long [] list, int action); 15 | void setQueuePosition(int index); 16 | void setShuffleMode(int shufflemode); 17 | void setRepeatMode(int repeatmode); 18 | void moveQueueItem(int from, int to); 19 | void toggleFavorite(); 20 | void refresh(); 21 | boolean isFavorite(); 22 | boolean isPlaying(); 23 | long [] getQueue(); 24 | long duration(); 25 | long position(); 26 | long seek(long pos); 27 | long getAudioId(); 28 | long getArtistId(); 29 | long getAlbumId(); 30 | String getArtistName(); 31 | String getTrackName(); 32 | String getAlbumName(); 33 | String getPath(); 34 | int getQueuePosition(); 35 | int getShuffleMode(); 36 | int removeTracks(int first, int last); 37 | int removeTrack(long id); 38 | int getRepeatMode(); 39 | int getMediaMountedCount(); 40 | int getAudioSessionId(); 41 | } 42 | 43 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/MusicStateListener.java: -------------------------------------------------------------------------------- 1 | 2 | package com.andrew.apollo; 3 | 4 | /** 5 | * Listens for playback changes to send the the fragments bound to this activity 6 | */ 7 | public interface MusicStateListener { 8 | 9 | /** 10 | * Called when {@link MusicPlaybackService#REFRESH} is invoked 11 | */ 12 | public void restartLoader(); 13 | 14 | /** 15 | * Called when {@link MusicPlaybackService#META_CHANGED} is invoked 16 | */ 17 | public void onMetaChanged(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/appwidgets/AppWidgetBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.appwidgets; 13 | 14 | import android.app.PendingIntent; 15 | import android.appwidget.AppWidgetProvider; 16 | import android.content.ComponentName; 17 | import android.content.Context; 18 | import android.content.Intent; 19 | 20 | import com.andrew.apollo.MusicPlaybackService; 21 | 22 | public abstract class AppWidgetBase extends AppWidgetProvider { 23 | 24 | protected PendingIntent buildPendingIntent(Context context, final String action, 25 | final ComponentName serviceName) { 26 | Intent intent = new Intent(action); 27 | intent.setComponent(serviceName); 28 | intent.putExtra(MusicPlaybackService.NOW_IN_FOREGROUND, false); 29 | return PendingIntent.getService(context, 0, intent, 0); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/dragdrop/SimpleFloatViewManager.java: -------------------------------------------------------------------------------- 1 | 2 | package com.andrew.apollo.dragdrop; 3 | 4 | import android.graphics.Bitmap; 5 | import android.graphics.Color; 6 | import android.graphics.Point; 7 | import android.view.View; 8 | import android.widget.ImageView; 9 | import android.widget.ListView; 10 | 11 | /** 12 | * Simple implementation of the FloatViewManager class. Uses list items as they 13 | * appear in the ListView to create the floating View. 14 | */ 15 | public class SimpleFloatViewManager implements DragSortListView.FloatViewManager { 16 | 17 | private final ListView mListView; 18 | 19 | private Bitmap mFloatBitmap; 20 | 21 | private int mFloatBGColor = Color.BLACK; 22 | 23 | public SimpleFloatViewManager(ListView lv) { 24 | mListView = lv; 25 | } 26 | 27 | public void setBackgroundColor(int color) { 28 | mFloatBGColor = color; 29 | } 30 | 31 | /** 32 | * This simple implementation creates a Bitmap copy of the list item 33 | * currently shown at ListView position. 34 | */ 35 | @Override 36 | public View onCreateFloatView(int position) { 37 | View v = mListView.getChildAt(position + mListView.getHeaderViewsCount() 38 | - mListView.getFirstVisiblePosition()); 39 | 40 | if (v == null) { 41 | return null; 42 | } 43 | 44 | v.setPressed(false); 45 | 46 | v.setDrawingCacheEnabled(true); 47 | mFloatBitmap = Bitmap.createBitmap(v.getDrawingCache()); 48 | v.setDrawingCacheEnabled(false); 49 | 50 | ImageView iv = new ImageView(mListView.getContext()); 51 | iv.setBackgroundColor(mFloatBGColor); 52 | iv.setPadding(0, 0, 0, 0); 53 | iv.setImageBitmap(mFloatBitmap); 54 | 55 | return iv; 56 | } 57 | 58 | /** 59 | * Removes the Bitmap from the ImageView created in onCreateFloatView() and 60 | * tells the system to recycle it. 61 | */ 62 | @Override 63 | public void onDestroyFloatView(View floatView) { 64 | ((ImageView)floatView).setImageDrawable(null); 65 | 66 | mFloatBitmap.recycle(); 67 | mFloatBitmap = null; 68 | } 69 | 70 | /** 71 | * {@inheritDoc} 72 | */ 73 | @Override 74 | public void onDragFloatView(View floatView, Point position, Point touch) { 75 | /* Nothing to do */ 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/format/Capitalize.java: -------------------------------------------------------------------------------- 1 | 2 | package com.andrew.apollo.format; 3 | 4 | import android.text.TextUtils; 5 | 6 | public class Capitalize { 7 | 8 | /* This class is never initiated */ 9 | public Capitalize() { 10 | } 11 | 12 | public static final String capitalize(String str) { 13 | return capitalize(str, null); 14 | } 15 | 16 | /** 17 | * Capitalizes the first character in a string 18 | * 19 | * @param str The string to capitalize 20 | * @param delimiters The delimiters 21 | * @return A captitalized string 22 | */ 23 | public static final String capitalize(String str, char... delimiters) { 24 | final int delimLen = delimiters == null ? -1 : delimiters.length; 25 | if (TextUtils.isEmpty(str) || delimLen == 0) { 26 | return str; 27 | } 28 | final char[] buffer = str.toCharArray(); 29 | boolean capitalizeNext = true; 30 | for (int i = 0; i < buffer.length; i++) { 31 | char ch = buffer[i]; 32 | if (isDelimiter(ch, delimiters)) { 33 | capitalizeNext = true; 34 | } else if (capitalizeNext) { 35 | buffer[i] = Character.toTitleCase(ch); 36 | capitalizeNext = false; 37 | } 38 | } 39 | return new String(buffer); 40 | } 41 | 42 | /** 43 | * Is the character a delimiter. 44 | * 45 | * @param ch the character to check 46 | * @param delimiters the delimiters 47 | * @return true if it is a delimiter 48 | */ 49 | private static final boolean isDelimiter(char ch, char[] delimiters) { 50 | if (delimiters == null) { 51 | return Character.isWhitespace(ch); 52 | } 53 | for (char delimiter : delimiters) { 54 | if (ch == delimiter) { 55 | return true; 56 | } 57 | } 58 | return false; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/lastfm/ImageSize.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012, the Last.fm Java Project and Committers All rights 3 | * reserved. Redistribution and use of this software in source and binary forms, 4 | * with or without modification, are permitted provided that the following 5 | * conditions are met: - Redistributions of source code must retain the above 6 | * copyright notice, this list of conditions and the following disclaimer. - 7 | * Redistributions in binary form must reproduce the above copyright notice, 8 | * this list of conditions and the following disclaimer in the documentation 9 | * and/or other materials provided with the distribution. THIS SOFTWARE IS 10 | * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 11 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 13 | * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 14 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 16 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 17 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 18 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 19 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 20 | */ 21 | 22 | package com.andrew.apollo.lastfm; 23 | 24 | /** 25 | * @author Janni Kovacs 26 | */ 27 | public enum ImageSize { 28 | 29 | SMALL, MEDIUM, LARGE, EXTRALARGE, MEGA, UNKNOWN 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/lastfm/ItemFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012, the Last.fm Java Project and Committers All rights 3 | * reserved. Redistribution and use of this software in source and binary forms, 4 | * with or without modification, are permitted provided that the following 5 | * conditions are met: - Redistributions of source code must retain the above 6 | * copyright notice, this list of conditions and the following disclaimer. - 7 | * Redistributions in binary form must reproduce the above copyright notice, 8 | * this list of conditions and the following disclaimer in the documentation 9 | * and/or other materials provided with the distribution. THIS SOFTWARE IS 10 | * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 11 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 12 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 13 | * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 14 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 15 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 16 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 17 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 18 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 19 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 20 | */ 21 | 22 | package com.andrew.apollo.lastfm; 23 | 24 | /** 25 | * An ItemFactory can be used to instantiate a value object - such 26 | * as Artist, Album, Track, Tag - from an XML element. Use the 27 | * {@link ItemFactoryBuilder} to obtain item factories for a specific type. 28 | * 29 | * @author Janni Kovacs 30 | * @see com.andrew.apollo.lastfm.api.ItemFactoryBuilder 31 | * @see ResponseBuilder 32 | */ 33 | interface ItemFactory { 34 | 35 | /** 36 | * Create a new instance of the type T, based on the passed 37 | * {@link DomElement}. 38 | * 39 | * @param element the XML element 40 | * @return a new object 41 | */ 42 | public T createItemFromElement(DomElement element); 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/loaders/AsyncHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 The Android Open Source Project Licensed under the Apache 3 | * License, Version 2.0 (the "License"); you may not use this file except in 4 | * compliance with the License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.loaders; 13 | 14 | import android.os.Handler; 15 | import android.os.HandlerThread; 16 | 17 | /** 18 | * Helper class for managing the background thread used to perform io operations 19 | * and handle async broadcasts. 20 | */ 21 | public final class AsyncHandler { 22 | 23 | private static final HandlerThread sHandlerThread = new HandlerThread("AsyncHandler"); 24 | 25 | private static final Handler sHandler; 26 | 27 | static { 28 | sHandlerThread.start(); 29 | sHandler = new Handler(sHandlerThread.getLooper()); 30 | } 31 | 32 | /* This class is never initiated */ 33 | private AsyncHandler() { 34 | } 35 | 36 | /** 37 | * @param r The {@link Runnable} to execute. 38 | */ 39 | public static void post(final Runnable r) { 40 | sHandler.post(r); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/loaders/WrappedAsyncTaskLoader.java: -------------------------------------------------------------------------------- 1 | 2 | package com.andrew.apollo.loaders; 3 | 4 | import android.content.Context; 5 | import android.support.v4.content.AsyncTaskLoader; 6 | 7 | /** 8 | * Issue 9 | * 14944 10 | * 11 | * @author Alexander Blom 12 | */ 13 | public abstract class WrappedAsyncTaskLoader extends AsyncTaskLoader { 14 | 15 | private D mData; 16 | 17 | /** 18 | * Constructor of WrappedAsyncTaskLoader 19 | * 20 | * @param context The {@link Context} to use. 21 | */ 22 | public WrappedAsyncTaskLoader(Context context) { 23 | super(context); 24 | } 25 | 26 | /** 27 | * {@inheritDoc} 28 | */ 29 | @Override 30 | public void deliverResult(D data) { 31 | if (!isReset()) { 32 | this.mData = data; 33 | super.deliverResult(data); 34 | } else { 35 | // An asynchronous query came in while the loader is stopped 36 | } 37 | } 38 | 39 | /** 40 | * {@inheritDoc} 41 | */ 42 | @Override 43 | protected void onStartLoading() { 44 | if (this.mData != null) { 45 | deliverResult(this.mData); 46 | } else if (takeContentChanged() || this.mData == null) { 47 | forceLoad(); 48 | } 49 | } 50 | 51 | /** 52 | * {@inheritDoc} 53 | */ 54 | @Override 55 | protected void onStopLoading() { 56 | // Attempt to cancel the current load task if possible 57 | cancelLoad(); 58 | } 59 | 60 | /** 61 | * {@inheritDoc} 62 | */ 63 | @Override 64 | protected void onReset() { 65 | super.onReset(); 66 | // Ensure the loader is stopped 67 | onStopLoading(); 68 | this.mData = null; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/recycler/RecycleHolder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.recycler; 13 | 14 | import android.view.View; 15 | import android.widget.AbsListView.RecyclerListener; 16 | 17 | import com.andrew.apollo.ui.MusicHolder; 18 | 19 | /** 20 | * A @ {@link RecyclerListener} for {@link MusicHolder}'s views. 21 | * 22 | * @author Andrew Neal (andrewdneal@gmail.com) 23 | */ 24 | public class RecycleHolder implements RecyclerListener { 25 | 26 | /** 27 | * {@inheritDoc} 28 | */ 29 | @Override 30 | public void onMovedToScrapHeap(final View view) { 31 | MusicHolder holder = (MusicHolder)view.getTag(); 32 | if (holder == null) { 33 | holder = new MusicHolder(view); 34 | view.setTag(holder); 35 | } 36 | 37 | // Release mBackground's reference 38 | if (holder.mBackground.get() != null) { 39 | holder.mBackground.get().setImageDrawable(null); 40 | holder.mBackground.get().setImageBitmap(null); 41 | } 42 | 43 | // Release mImage's reference 44 | if (holder.mImage.get() != null) { 45 | holder.mImage.get().setImageDrawable(null); 46 | holder.mImage.get().setImageBitmap(null); 47 | } 48 | 49 | // Release mLineOne's reference 50 | if (holder.mLineOne.get() != null) { 51 | holder.mLineOne.get().setText(null); 52 | } 53 | 54 | // Release mLineTwo's reference 55 | if (holder.mLineTwo.get() != null) { 56 | holder.mLineTwo.get().setText(null); 57 | } 58 | 59 | // Release mLineThree's reference 60 | if (holder.mLineThree.get() != null) { 61 | holder.mLineThree.get().setText(null); 62 | } 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/ui/activities/HomeActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.ui.activities; 13 | 14 | import android.os.Bundle; 15 | import android.support.v4.app.Fragment; 16 | import android.support.v4.view.ViewPager; 17 | 18 | import com.andrew.apollo.R; 19 | import com.andrew.apollo.ui.fragments.phone.MusicBrowserPhoneFragment; 20 | 21 | /** 22 | * This class is used to display the {@link ViewPager} used to swipe between the 23 | * main {@link Fragment}s used to browse the user's music. 24 | * 25 | * @author Andrew Neal (andrewdneal@gmail.com) 26 | */ 27 | public class HomeActivity extends BaseActivity { 28 | 29 | /** 30 | * {@inheritDoc} 31 | */ 32 | @Override 33 | protected void onCreate(final Bundle savedInstanceState) { 34 | super.onCreate(savedInstanceState); 35 | // Load the music browser fragment 36 | if (savedInstanceState == null) { 37 | getSupportFragmentManager().beginTransaction() 38 | .replace(R.id.activity_base_content, new MusicBrowserPhoneFragment()).commit(); 39 | } 40 | } 41 | 42 | /** 43 | * {@inheritDoc} 44 | */ 45 | @Override 46 | public int setContentView() { 47 | return R.layout.activity_base; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/utils/Lists.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012 Google Inc. Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.utils; 13 | 14 | import java.util.ArrayList; 15 | import java.util.Collections; 16 | import java.util.LinkedList; 17 | 18 | /** 19 | * Provides static methods for creating {@code List} instances easily, and other 20 | * utility methods for working with lists. 21 | */ 22 | public final class Lists { 23 | 24 | /** This class is never instantiated */ 25 | public Lists() { 26 | } 27 | 28 | /** 29 | * Creates an empty {@code ArrayList} instance. 30 | *

31 | * Note: if you only need an immutable empty List, use 32 | * {@link Collections#emptyList} instead. 33 | * 34 | * @return a newly-created, initially-empty {@code ArrayList} 35 | */ 36 | public static final ArrayList newArrayList() { 37 | return new ArrayList(); 38 | } 39 | 40 | /** 41 | * Creates an empty {@code LinkedList} instance. 42 | *

43 | * Note: if you only need an immutable empty List, use 44 | * {@link Collections#emptyList} instead. 45 | * 46 | * @return a newly-created, initially-empty {@code LinkedList} 47 | */ 48 | public static final LinkedList newLinkedList() { 49 | return new LinkedList(); 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/LayoutSuppressingImageView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Android Open Source Project Licensed under the Apache 3 | * License, Version 2.0 (the "License"); you may not use this file except in 4 | * compliance with the License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets; 13 | 14 | import android.content.Context; 15 | import android.util.AttributeSet; 16 | import android.widget.ImageView; 17 | 18 | /** 19 | * A custom {@link ImageView} that improves the performance by not passing 20 | * requestLayout() to its parent, taking advantage of knowing that image size 21 | * won't change once set. 22 | */ 23 | public class LayoutSuppressingImageView extends ImageView { 24 | 25 | /** 26 | * @param context The {@link Context} to use 27 | * @param attrs The attributes of the XML tag that is inflating the view 28 | */ 29 | public LayoutSuppressingImageView(final Context context, final AttributeSet attrs) { 30 | super(context, attrs); 31 | 32 | } 33 | 34 | /** 35 | * {@inheritDoc} 36 | */ 37 | @Override 38 | public void requestLayout() { 39 | forceLayout(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/SquareImageView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets; 13 | 14 | import android.content.Context; 15 | import android.util.AttributeSet; 16 | import android.widget.ImageView; 17 | 18 | /** 19 | * A custom {@link ImageView} that is sized to be a perfect square, otherwise 20 | * functions like a typical {@link ImageView}. 21 | * 22 | * @author Andrew Neal (andrewdneal@gmail.com) 23 | */ 24 | public class SquareImageView extends LayoutSuppressingImageView { 25 | 26 | /** 27 | * @param context The {@link Context} to use 28 | * @param attrs The attributes of the XML tag that is inflating the view. 29 | */ 30 | public SquareImageView(final Context context, final AttributeSet attrs) { 31 | super(context, attrs); 32 | 33 | } 34 | 35 | /** 36 | * {@inheritDoc} 37 | */ 38 | @Override 39 | public void onMeasure(final int widthSpec, final int heightSpec) { 40 | super.onMeasure(widthSpec, heightSpec); 41 | final int mSize = Math.min(getMeasuredWidth(), getMeasuredHeight()); 42 | setMeasuredDimension(mSize, mSize); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/SquareView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets; 13 | 14 | import android.content.Context; 15 | import android.util.AttributeSet; 16 | import android.view.View; 17 | import android.view.ViewGroup; 18 | 19 | /** 20 | * A custom {@link ViewGroup} used to make it's children into perfect squares. 21 | * Useful when dealing with grid images and especially album art. 22 | * 23 | * @author Andrew Neal (andrewdneal@gmail.com) 24 | */ 25 | public class SquareView extends ViewGroup { 26 | 27 | /** 28 | * @param context The {@link Context} to use 29 | * @param attrs The attributes of the XML tag that is inflating the view. 30 | */ 31 | public SquareView(final Context context, final AttributeSet attrs) { 32 | super(context, attrs); 33 | } 34 | 35 | /** 36 | * {@inheritDoc} 37 | */ 38 | @Override 39 | protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) { 40 | final View mChildren = getChildAt(0); 41 | mChildren.measure(widthMeasureSpec, widthMeasureSpec); 42 | final int mWidth = resolveSize(mChildren.getMeasuredWidth(), widthMeasureSpec); 43 | mChildren.measure(mWidth, mWidth); 44 | setMeasuredDimension(mWidth, mWidth); 45 | } 46 | 47 | /** 48 | * {@inheritDoc} 49 | */ 50 | @Override 51 | protected void onLayout(final boolean changed, final int l, final int u, final int r, 52 | final int d) { 53 | getChildAt(0).layout(0, 0, r - l, d - u); 54 | } 55 | 56 | /** 57 | * {@inheritDoc} 58 | */ 59 | @Override 60 | public void requestLayout() { 61 | forceLayout(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/theme/BottomActionBar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets.theme; 13 | 14 | import android.content.Context; 15 | import android.content.pm.PackageManager.NameNotFoundException; 16 | import android.util.AttributeSet; 17 | import android.widget.LinearLayout; 18 | import android.widget.RelativeLayout; 19 | 20 | import com.andrew.apollo.R; 21 | import com.andrew.apollo.utils.ThemeUtils; 22 | 23 | /** 24 | * @author Andrew Neal (andrewdneal@gmail.com) 25 | */ 26 | @SuppressWarnings("deprecation") 27 | public class BottomActionBar extends RelativeLayout { 28 | 29 | /** 30 | * Resource name used to theme the bottom action bar 31 | */ 32 | private static final String BOTTOM_ACTION_BAR = "bottom_action_bar"; 33 | 34 | /** 35 | * @param context The {@link Context} to use 36 | * @param attrs The attributes of the XML tag that is inflating the view. 37 | * @throws NameNotFoundException 38 | */ 39 | public BottomActionBar(final Context context, final AttributeSet attrs) { 40 | super(context, attrs); 41 | // Initialze the theme resources 42 | final ThemeUtils resources = new ThemeUtils(context); 43 | // Theme the bottom action bar 44 | setBackgroundDrawable(resources.getDrawable(BOTTOM_ACTION_BAR)); 45 | } 46 | 47 | /** 48 | * {@inheritDoc} 49 | */ 50 | @Override 51 | protected void onFinishInflate() { 52 | super.onFinishInflate(); 53 | // Theme the selector 54 | final LinearLayout bottomActionBar = (LinearLayout)findViewById(R.id.bottom_action_bar); 55 | bottomActionBar.setBackgroundDrawable(new HoloSelector(getContext())); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/theme/Colorstrip.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets.theme; 13 | 14 | import android.content.Context; 15 | import android.util.AttributeSet; 16 | import android.view.View; 17 | 18 | import com.andrew.apollo.utils.ThemeUtils; 19 | 20 | /** 21 | * Used as a thin strip placed just above the bottom action bar or just below 22 | * the top action bar. 23 | * 24 | * @author Andrew Neal (andrewdneal@gmail.com) 25 | */ 26 | public class Colorstrip extends View { 27 | 28 | /** 29 | * Resource name used to theme the colorstrip 30 | */ 31 | private static final String COLORSTRIP = "colorstrip"; 32 | 33 | /** 34 | * @param context The {@link Context} to use 35 | * @param attrs The attributes of the XML tag that is inflating the view. 36 | */ 37 | public Colorstrip(final Context context, final AttributeSet attrs) { 38 | super(context, attrs); 39 | // Initialze the theme resources 40 | final ThemeUtils resources = new ThemeUtils(context); 41 | // Theme the colorstrip 42 | setBackgroundColor(resources.getColor(COLORSTRIP)); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/theme/ThemeableFrameLayout.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets.theme; 13 | 14 | import android.content.Context; 15 | import android.util.AttributeSet; 16 | import android.widget.FrameLayout; 17 | 18 | import com.andrew.apollo.utils.ThemeUtils; 19 | 20 | /** 21 | * This is a custom {@link FrameLayout} that is used as the main conent when 22 | * transacting fragments that is made themeable by allowing developers to change 23 | * the background. 24 | * 25 | * @author Andrew Neal (andrewdneal@gmail.com) 26 | */ 27 | public class ThemeableFrameLayout extends FrameLayout { 28 | 29 | /** 30 | * Used to set the background 31 | */ 32 | public static final String BACKGROUND = "pager_background"; 33 | 34 | /** 35 | * @param context The {@link Context} to use 36 | * @param attrs The attributes of the XML tag that is inflating the view. 37 | */ 38 | @SuppressWarnings("deprecation") 39 | public ThemeableFrameLayout(final Context context, final AttributeSet attrs) { 40 | super(context, attrs); 41 | // Initialze the theme resources 42 | final ThemeUtils resources = new ThemeUtils(context); 43 | // Theme the layout 44 | setBackgroundDrawable(resources.getDrawable(BACKGROUND)); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/com/andrew/apollo/widgets/theme/ThemeableSeekBar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Andrew Neal Licensed under the Apache License, Version 2.0 3 | * (the "License"); you may not use this file except in compliance with the 4 | * License. You may obtain a copy of the License at 5 | * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law 6 | * or agreed to in writing, software distributed under the License is 7 | * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8 | * KIND, either express or implied. See the License for the specific language 9 | * governing permissions and limitations under the License. 10 | */ 11 | 12 | package com.andrew.apollo.widgets.theme; 13 | 14 | import android.content.Context; 15 | import android.util.AttributeSet; 16 | import android.widget.SeekBar; 17 | 18 | import com.andrew.apollo.utils.ThemeUtils; 19 | 20 | /** 21 | * @author Andrew Neal (andrewdneal@gmail.com) 22 | */ 23 | public class ThemeableSeekBar extends SeekBar { 24 | 25 | /** 26 | * Used to set the progess bar 27 | */ 28 | public static final String PROGESS = "audio_player_seekbar"; 29 | 30 | /** 31 | * @param context The {@link Context} to use 32 | * @param attrs The attributes of the XML tag that is inflating the view. 33 | */ 34 | public ThemeableSeekBar(final Context context, final AttributeSet attrs) { 35 | super(context, attrs); 36 | // Initialze the theme resources 37 | final ThemeUtils resources = new ThemeUtils(context); 38 | // Theme the seek bar 39 | setProgressDrawable(resources.getDrawable(PROGESS)); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/com/viewpagerindicator/IconPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.viewpagerindicator; 2 | 3 | public interface IconPagerAdapter { 4 | /** 5 | * Get icon representing the page at {@code index} in the adapter. 6 | */ 7 | int getIconResId(int index); 8 | 9 | // From PagerAdapter 10 | int getCount(); 11 | } 12 | -------------------------------------------------------------------------------- /src/com/viewpagerindicator/PageIndicator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2011 Patrik Akerfeldt 3 | * Copyright (C) 2011 Jake Wharton 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.viewpagerindicator; 19 | 20 | import android.support.v4.view.ViewPager; 21 | 22 | /** 23 | * A PageIndicator is responsible to show an visual indicator on the total views 24 | * number and the current visible view. 25 | */ 26 | public interface PageIndicator extends ViewPager.OnPageChangeListener { 27 | /** 28 | * Bind the indicator to a ViewPager. 29 | * 30 | * @param view 31 | */ 32 | void setViewPager(ViewPager view); 33 | 34 | /** 35 | * Bind the indicator to a ViewPager. 36 | * 37 | * @param view 38 | * @param initialPosition 39 | */ 40 | void setViewPager(ViewPager view, int initialPosition); 41 | 42 | /** 43 | *

Set the current page of both the ViewPager and indicator.

44 | * 45 | *

This must be used if you need to set the page before 46 | * the views are drawn on screen (e.g., default start page).

47 | * 48 | * @param item 49 | */ 50 | void setCurrentItem(int item); 51 | 52 | /** 53 | * Set a page change listener which will receive forwarded events. 54 | * 55 | * @param listener 56 | */ 57 | void setOnPageChangeListener(ViewPager.OnPageChangeListener listener); 58 | 59 | /** 60 | * Notify the indicator that the fragment list has changed. 61 | */ 62 | void notifyDataSetChanged(); 63 | } 64 | --------------------------------------------------------------------------------