├── settings.gradle ├── Squeezer ├── src │ ├── main │ │ ├── play │ │ │ ├── default-language.txt │ │ │ ├── listings │ │ │ │ ├── en-US │ │ │ │ │ ├── title.txt │ │ │ │ │ ├── video-url.txt │ │ │ │ │ ├── short-description.txt │ │ │ │ │ ├── graphics │ │ │ │ │ │ ├── feature-graphic │ │ │ │ │ │ │ └── feature.png │ │ │ │ │ │ ├── phone-screenshots │ │ │ │ │ │ │ ├── 1-home.png │ │ │ │ │ │ │ ├── 1-home-grouped.png │ │ │ │ │ │ │ ├── 2-now-playing.png │ │ │ │ │ │ │ ├── 4-artist-info.png │ │ │ │ │ │ │ ├── 6-notification.png │ │ │ │ │ │ │ ├── 5-player-control.png │ │ │ │ │ │ │ ├── 8-now-playing-small-album-art.png │ │ │ │ │ │ │ └── 3-browse-albums-and-context-menu.png │ │ │ │ │ │ ├── icon │ │ │ │ │ │ │ └── ic_launcher-playstore.png │ │ │ │ │ │ ├── large-tablet-screenshots │ │ │ │ │ │ │ └── 2-browse-album.png │ │ │ │ │ │ └── wear-screenshots │ │ │ │ │ │ │ ├── 1-wear-notification-474x403.png │ │ │ │ │ │ │ └── 2-wear-notification-pause-474x403.png │ │ │ │ │ └── full-description.txt │ │ │ │ ├── cs-CZ │ │ │ │ │ └── short-description.txt │ │ │ │ ├── fi-FI │ │ │ │ │ └── short-description.txt │ │ │ │ ├── sk │ │ │ │ │ └── short-description.txt │ │ │ │ ├── zh-CN │ │ │ │ │ └── short-description.txt │ │ │ │ ├── et │ │ │ │ │ └── short-description.txt │ │ │ │ ├── fr-FR │ │ │ │ │ └── short-description.txt │ │ │ │ ├── hr │ │ │ │ │ └── short-description.txt │ │ │ │ ├── hu-HU │ │ │ │ │ └── short-description.txt │ │ │ │ ├── it-IT │ │ │ │ │ └── short-description.txt │ │ │ │ ├── lt │ │ │ │ │ └── short-description.txt │ │ │ │ ├── lv │ │ │ │ │ └── short-description.txt │ │ │ │ ├── ro │ │ │ │ │ └── short-description.txt │ │ │ │ ├── da-DK │ │ │ │ │ └── short-description.txt │ │ │ │ ├── de-DE │ │ │ │ │ └── short-description.txt │ │ │ │ ├── ko-KR │ │ │ │ │ └── short-description.txt │ │ │ │ ├── no-NO │ │ │ │ │ └── short-description.txt │ │ │ │ ├── pl-PL │ │ │ │ │ └── short-description.txt │ │ │ │ ├── sl │ │ │ │ │ └── short-description.txt │ │ │ │ ├── sv-SE │ │ │ │ │ └── short-description.txt │ │ │ │ ├── sw │ │ │ │ │ └── short-description.txt │ │ │ │ ├── tr-TR │ │ │ │ │ └── short-description.txt │ │ │ │ ├── bg │ │ │ │ │ └── short-description.txt │ │ │ │ ├── el-GR │ │ │ │ │ └── short-description.txt │ │ │ │ ├── es-ES │ │ │ │ │ └── short-description.txt │ │ │ │ ├── ja-JP │ │ │ │ │ └── short-description.txt │ │ │ │ ├── nl-NL │ │ │ │ │ └── short-description.txt │ │ │ │ ├── pt-BR │ │ │ │ │ └── short-description.txt │ │ │ │ ├── pt-PT │ │ │ │ │ └── short-description.txt │ │ │ │ ├── uk │ │ │ │ │ └── short-description.txt │ │ │ │ ├── ca │ │ │ │ │ └── short-description.txt │ │ │ │ ├── iw-IL │ │ │ │ │ └── short-description.txt │ │ │ │ ├── ar │ │ │ │ │ └── short-description.txt │ │ │ │ ├── ru-RU │ │ │ │ │ └── short-description.txt │ │ │ │ ├── vi │ │ │ │ │ └── short-description.txt │ │ │ │ ├── hi-IN │ │ │ │ │ └── short-description.txt │ │ │ │ └── th │ │ │ │ │ └── short-description.txt │ │ │ ├── contact-email.txt │ │ │ ├── contact-website.txt │ │ │ └── release-notes │ │ │ │ └── en-US │ │ │ │ └── default.txt │ │ ├── res │ │ │ ├── drawable-hdpi │ │ │ │ ├── ic_sb3.png │ │ │ │ ├── ic_baby.png │ │ │ │ ├── ic_blank.png │ │ │ │ ├── ic_boom.png │ │ │ │ ├── ic_fab4.png │ │ │ │ ├── ic_sb1n2.png │ │ │ │ ├── ic_receiver.png │ │ │ │ ├── ic_slimp3.png │ │ │ │ ├── ic_controller.png │ │ │ │ ├── ic_softsqueeze.png │ │ │ │ ├── ic_squeezeplay.png │ │ │ │ ├── ic_squeezeplayer.png │ │ │ │ ├── ic_transporter.png │ │ │ │ ├── ic_launcher_lastfm.png │ │ │ │ └── squeezer_notification.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── ic_sb3.png │ │ │ │ ├── ic_baby.png │ │ │ │ ├── ic_blank.png │ │ │ │ ├── ic_boom.png │ │ │ │ ├── ic_fab4.png │ │ │ │ ├── ic_sb1n2.png │ │ │ │ ├── ic_receiver.png │ │ │ │ ├── ic_slimp3.png │ │ │ │ ├── ic_controller.png │ │ │ │ ├── ic_launcher_sls.png │ │ │ │ ├── ic_softsqueeze.png │ │ │ │ ├── ic_squeezeplay.png │ │ │ │ ├── ic_squeezeplayer.png │ │ │ │ ├── ic_transporter.png │ │ │ │ ├── ic_launcher_lastfm.png │ │ │ │ ├── squeezer_notification.png │ │ │ │ └── ic_launcher_scrobbledroid.png │ │ │ ├── drawable-xhdpi │ │ │ │ ├── ic_baby.png │ │ │ │ ├── ic_boom.png │ │ │ │ ├── ic_fab4.png │ │ │ │ ├── ic_sb3.png │ │ │ │ ├── ic_blank.png │ │ │ │ ├── ic_sb1n2.png │ │ │ │ ├── ic_slimp3.png │ │ │ │ ├── ic_receiver.png │ │ │ │ ├── ic_controller.png │ │ │ │ ├── ic_softsqueeze.png │ │ │ │ ├── ic_squeezeplay.png │ │ │ │ ├── ic_transporter.png │ │ │ │ ├── ic_squeezeplayer.png │ │ │ │ └── squeezer_notification.png │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── ic_sb3.png │ │ │ │ ├── ic_baby.png │ │ │ │ ├── ic_blank.png │ │ │ │ ├── ic_boom.png │ │ │ │ ├── ic_fab4.png │ │ │ │ ├── ic_sb1n2.png │ │ │ │ ├── ic_slimp3.png │ │ │ │ ├── ic_receiver.png │ │ │ │ ├── ic_controller.png │ │ │ │ ├── ic_softsqueeze.png │ │ │ │ ├── ic_squeezeplay.png │ │ │ │ ├── ic_transporter.png │ │ │ │ ├── ic_squeezeplayer.png │ │ │ │ └── squeezer_notification.png │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── drawable │ │ │ │ ├── icon_no_artwork.9.png │ │ │ │ ├── underline.xml │ │ │ │ ├── popup_drawable.xml │ │ │ │ ├── thumb_drawable.xml │ │ │ │ ├── current_track_background_dark.xml │ │ │ │ ├── current_track_background_light.xml │ │ │ │ ├── pending.xml │ │ │ │ ├── bandcamp.xml │ │ │ │ ├── ic_action_play.xml │ │ │ │ ├── ic_action_stop.xml │ │ │ │ ├── ic_action_home.xml │ │ │ │ ├── ic_home.xml │ │ │ │ ├── ic_add.xml │ │ │ │ ├── ic_action_next.xml │ │ │ │ ├── selector_checkbox_material.xml │ │ │ │ ├── ic_action_pause.xml │ │ │ │ ├── ic_action_previous.xml │ │ │ │ ├── ic_action_down.xml │ │ │ │ ├── panel_background.xml │ │ │ │ ├── keyboard_return.xml │ │ │ │ ├── ic_action_close.xml │ │ │ │ ├── ic_keyboard_arrow_up.xml │ │ │ │ ├── ic_keyboard_arrow_down.xml │ │ │ │ ├── ic_delete.xml │ │ │ │ ├── radio_talk.xml │ │ │ │ ├── ic_keyboard_arrow_right.xml │ │ │ │ ├── bandcamp_emblem.xml │ │ │ │ ├── ic_action_view_as_grid.xml │ │ │ │ ├── ic_info.xml │ │ │ │ ├── ic_keyboard_arrow_left.xml │ │ │ │ ├── apps.xml │ │ │ │ ├── ic_action_view_as_list.xml │ │ │ │ ├── ic_undobar_undo.xml │ │ │ │ ├── add_circle.xml │ │ │ │ ├── person.xml │ │ │ │ ├── ic_action_playlist.xml │ │ │ │ ├── ic_volume_down.xml │ │ │ │ ├── location.xml │ │ │ │ ├── icon_background.xml │ │ │ │ ├── ic_menu_playlist.xml │ │ │ │ ├── ic_refresh.xml │ │ │ │ ├── ic_menu_choose_player.xml │ │ │ │ ├── ic_action_power_settings_new.xml │ │ │ │ ├── selector_checkbox_checked.xml │ │ │ │ ├── ic_volume_up_white.xml │ │ │ │ ├── selector_checkbox_unchecked.xml │ │ │ │ ├── radio_news.xml │ │ │ │ ├── history.xml │ │ │ │ ├── ic_action_disconnect.xml │ │ │ │ ├── power.xml │ │ │ │ ├── rss.xml │ │ │ │ ├── ic_volume_up.xml │ │ │ │ ├── rename.xml │ │ │ │ ├── icon_album.xml │ │ │ │ ├── ic_theme_dark.xml │ │ │ │ ├── ic_theme_light.xml │ │ │ │ ├── ic_action_archive.xml │ │ │ │ ├── ic_archive.xml │ │ │ │ ├── icon_line_in_white.xml │ │ │ │ ├── settings_home.xml │ │ │ │ ├── earth.xml │ │ │ │ ├── radio_sports.xml │ │ │ │ ├── icon_line_in.xml │ │ │ │ ├── ml_artists_composer.xml │ │ │ │ ├── ic_menu_search.xml │ │ │ │ ├── icon_popup_favorite.xml │ │ │ │ ├── tidal.xml │ │ │ │ ├── favorites.xml │ │ │ │ ├── emoticon_excited_outline.xml │ │ │ │ ├── search.xml │ │ │ │ ├── target.xml │ │ │ │ ├── ic_action_nowplaying.xml │ │ │ │ ├── ic_volume_off_white.xml │ │ │ │ ├── alarm_clock.xml │ │ │ │ ├── ml_new_music.xml │ │ │ │ ├── settings.xml │ │ │ │ ├── ic_volume_off.xml │ │ │ │ ├── tidal_emblem.xml │ │ │ │ ├── emoticon_sad_outline.xml │ │ │ │ ├── folder.xml │ │ │ │ ├── ml_genres.xml │ │ │ │ ├── settings_brightness.xml │ │ │ │ ├── emoticon_cool_outline.xml │ │ │ │ ├── podcasts.xml │ │ │ │ ├── settings_advanced.xml │ │ │ │ ├── toast_background.xml │ │ │ │ ├── nowplaying.xml │ │ │ │ ├── shuffle.xml │ │ │ │ ├── ml_songs.xml │ │ │ │ ├── ml_artists_album.xml │ │ │ │ ├── party.xml │ │ │ │ ├── tunein.xml │ │ │ │ ├── ic_shuffle_off.xml │ │ │ │ ├── world.xml │ │ │ │ ├── ml_library_views.xml │ │ │ │ ├── ic_settings.xml │ │ │ │ ├── ic_settings_36.xml │ │ │ │ ├── spotify.xml │ │ │ │ ├── spotify_emblem.xml │ │ │ │ ├── ic_menu_overflow.xml │ │ │ │ ├── nature_sounds.xml │ │ │ │ ├── charts.xml │ │ │ │ ├── ic_repeat_24dp.xml │ │ │ │ ├── ic_repeat_white.xml │ │ │ │ ├── ic_repeat_off.xml │ │ │ │ ├── apps_settings.xml │ │ │ │ ├── settings_repeat.xml │ │ │ │ ├── youtube.xml │ │ │ │ ├── ml_folder.xml │ │ │ │ ├── ml_artists.xml │ │ │ │ └── deezer_emblem.xml │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── drawable-ldpi │ │ │ │ └── ic_launcher_lastfm.png │ │ │ ├── drawable-nodpi │ │ │ │ └── squeezerremote_preview.png │ │ │ ├── values-tr │ │ │ │ └── serverstrings.xml │ │ │ ├── values-land │ │ │ │ ├── dimensions.xml │ │ │ │ └── styles.xml │ │ │ ├── layout │ │ │ │ ├── choices_item.xml │ │ │ │ ├── dropdown_item.xml │ │ │ │ ├── context_menu_item.xml │ │ │ │ ├── continue_playback.xml │ │ │ │ ├── action_bar_custom_view.xml │ │ │ │ ├── connecting.xml │ │ │ │ ├── show_artwork.xml │ │ │ │ ├── home_group.xml │ │ │ │ ├── settings.xml │ │ │ │ ├── edittext_dialog.xml │ │ │ │ └── clock.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── values-w400dp │ │ │ │ └── dimensions.xml │ │ │ ├── xml │ │ │ │ └── squeezer_remote_control_info.xml │ │ │ ├── values │ │ │ │ ├── arrays.xml │ │ │ │ ├── constants.xml │ │ │ │ └── attrs.xml │ │ │ ├── values-en-rGB │ │ │ │ └── strings.xml │ │ │ ├── anim │ │ │ │ ├── slide_in_up.xml │ │ │ │ └── slide_out_down.xml │ │ │ ├── menu │ │ │ │ ├── player_group_menu.xml │ │ │ │ ├── player_context_menu.xml │ │ │ │ └── currentplaylistmenu.xml │ │ │ ├── values-sw340dp-long │ │ │ │ └── styles.xml │ │ │ └── drawable-v24 │ │ │ │ └── ic_launcher_background.xml │ │ └── java │ │ │ └── uk │ │ │ └── org │ │ │ └── ngo │ │ │ └── squeezer │ │ │ ├── service │ │ │ ├── event │ │ │ │ ├── RefreshEvent.java │ │ │ │ ├── LastscanChanged.java │ │ │ │ ├── PlayersChanged.java │ │ │ │ ├── HandshakeComplete.java │ │ │ │ ├── ActivePlayerChanged.java │ │ │ │ ├── PlaylistChanged.java │ │ │ │ ├── PlayerStateChanged.java │ │ │ │ ├── PowerStatusChanged.java │ │ │ │ ├── AlertEvent.java │ │ │ │ ├── SleepTimeChanged.java │ │ │ │ ├── DisplayEvent.java │ │ │ │ ├── HomeMenuEvent.java │ │ │ │ ├── MusicChanged.java │ │ │ │ └── ConnectionChanged.java │ │ │ ├── ConnectionError.java │ │ │ ├── PlayerNotFoundException.java │ │ │ ├── IRButton.java │ │ │ ├── ServiceCallback.java │ │ │ └── ListHandler.java │ │ │ ├── volume │ │ │ ├── VolumeUpdater.java │ │ │ └── VolumeKeysDelegate.java │ │ │ ├── homescreenwidgets │ │ │ ├── ServiceHandler.java │ │ │ ├── ServicePlayerHandler.java │ │ │ └── ContextServicePlayerHandler.java │ │ │ ├── itemlist │ │ │ ├── ItemReceiver.java │ │ │ ├── dialog │ │ │ │ ├── ArtworkListLayout.java │ │ │ │ └── PlayerRenameDialog.java │ │ │ └── IServiceItemListCallback.java │ │ │ ├── util │ │ │ ├── FluentHashMap.java │ │ │ ├── AfterTextChangedLister.java │ │ │ ├── DevicePlayers.java │ │ │ ├── SqueezeLite.java │ │ │ └── TimeUtil.java │ │ │ ├── model │ │ │ ├── RefreshWindow.java │ │ │ ├── Image.java │ │ │ └── HelpText.java │ │ │ ├── framework │ │ │ ├── StateHolder.java │ │ │ ├── EnumWithId.java │ │ │ ├── EnumWithText.java │ │ │ └── EnumIdLookup.java │ │ │ ├── widget │ │ │ ├── AnimationEndListener.java │ │ │ └── OnSwipeListener.java │ │ │ ├── dialog │ │ │ └── CallStateDialog.java │ │ │ └── IntEditTextPreference.java │ └── androidTest │ │ ├── res │ │ └── values │ │ │ └── strings.xml │ │ └── java │ │ └── uk │ │ └── org │ │ └── ngo │ │ └── squeezer │ │ └── test │ │ └── util │ │ └── ImageCacheTest.java ├── gradle.properties ├── lint.xml ├── squeezer-local-release-key.keystore ├── proguard-crashlytics.cfg ├── proguard-guava.cfg ├── proguard-cometd.cfg └── proguard-squeezer.cfg ├── docs ├── _config.yml ├── assets │ └── css │ │ └── style.scss ├── Beta-testing.md └── _layouts │ └── default.html ├── squeezer.psd ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .tx └── config ├── .gitignore ├── .github └── workflows │ └── android.yml └── gradle.properties /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':Squeezer' 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Squeezer 2 | -------------------------------------------------------------------------------- /Squeezer/gradle.properties: -------------------------------------------------------------------------------- 1 | Squeezer.properties=squeezer.properties 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/contact-email.txt: -------------------------------------------------------------------------------- 1 | android.squeezer@gmail.com 2 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman 2 | layout: default 3 | title: Squeezer -------------------------------------------------------------------------------- /Squeezer/src/main/play/contact-website.txt: -------------------------------------------------------------------------------- 1 | https://kaaholst.github.io/android-squeezer -------------------------------------------------------------------------------- /squeezer.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/squeezer.psd -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/video-url.txt: -------------------------------------------------------------------------------- 1 | http://www.youtube.com/watch?v=NI9t8qnX5bo 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/cs-CZ/short-description.txt: -------------------------------------------------------------------------------- 1 | Dálkový ovladač Lyrion Music Server a hráči. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/fi-FI/short-description.txt: -------------------------------------------------------------------------------- 1 | Kaukosäädin Lyrion Music Server ja pelaajia. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/sk/short-description.txt: -------------------------------------------------------------------------------- 1 | Diaľkový ovládač Lyrion Music Server a hráči. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/zh-CN/short-description.txt: -------------------------------------------------------------------------------- 1 | Lyrion 媒体服务器(“ Squeezeserver” 等)和播放器的远程控制。 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/et/short-description.txt: -------------------------------------------------------------------------------- 1 | Kaugjuhtimispult Lyrion Music Server ja mängijad. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/fr-FR/short-description.txt: -------------------------------------------------------------------------------- 1 | Télécommande Lyrion Music Server et les joueurs. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/hr/short-description.txt: -------------------------------------------------------------------------------- 1 | Daljinski upravljač za Lyrion Music Server i igrača. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/hu-HU/short-description.txt: -------------------------------------------------------------------------------- 1 | Távirányító Lyrion Music Server, és a játékosok. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/it-IT/short-description.txt: -------------------------------------------------------------------------------- 1 | Telecomando per Lyrion Music Server e giocatori. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/lt/short-description.txt: -------------------------------------------------------------------------------- 1 | Nuotolinio valdymo Lyrion Music Server ir žaidėjų. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/lv/short-description.txt: -------------------------------------------------------------------------------- 1 | Tālvadības pults Lyrion Music Server un spēlētājiem. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/ro/short-description.txt: -------------------------------------------------------------------------------- 1 | Telecomandă pentru Lyrion Music Server, și jucători. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/da-DK/short-description.txt: -------------------------------------------------------------------------------- 1 | Fjernbetjening til Lyrion Music Server og afspillere. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/de-DE/short-description.txt: -------------------------------------------------------------------------------- 1 | Fernbedienung für Lyrion Music Server und Spieler. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | Remote control for Lyrion Music Server and players. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/ko-KR/short-description.txt: -------------------------------------------------------------------------------- 1 | 로지텍 미디어 서버 ( "Squeezeserver"등) 플레이어 원격 제어 할 수 있습니다. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/no-NO/short-description.txt: -------------------------------------------------------------------------------- 1 | Fjernkontroll for Lyrion Music Server og spillere. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/pl-PL/short-description.txt: -------------------------------------------------------------------------------- 1 | Pilot zdalnego sterowania dla Lyrion Music Server i... 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/sl/short-description.txt: -------------------------------------------------------------------------------- 1 | Daljinski upravljalnik za Lyrion Music Server in igralce 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/sv-SE/short-description.txt: -------------------------------------------------------------------------------- 1 | Fjärrkontroll för Lyrion Music Server och spelare. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/sw/short-description.txt: -------------------------------------------------------------------------------- 1 | Kijijini kudhibiti kwa Lyrion Music Server na wachezaji. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/tr-TR/short-description.txt: -------------------------------------------------------------------------------- 1 | Lyrion Music Server ve oyuncular için uzaktan kumanda. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/bg/short-description.txt: -------------------------------------------------------------------------------- 1 | Дистанционно управление за Lyrion Music Server и на играчите. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/el-GR/short-description.txt: -------------------------------------------------------------------------------- 1 | Τηλεχειριστήριο για Lyrion Music Server και τους παίκτες 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/es-ES/short-description.txt: -------------------------------------------------------------------------------- 1 | Mando a distancia para Lyrion Music Server y los jugadores. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/ja-JP/short-description.txt: -------------------------------------------------------------------------------- 1 | ロジクールメディアサーバ(「Squeezeserver」など)、およびプレーヤーのためのリモートコントロール。 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/nl-NL/short-description.txt: -------------------------------------------------------------------------------- 1 | Afstandsbediening voor Lyrion Music Server en de spelers 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/pt-BR/short-description.txt: -------------------------------------------------------------------------------- 1 | Controle remoto para Lyrion Music Server e os jogadores. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/pt-PT/short-description.txt: -------------------------------------------------------------------------------- 1 | Controle remoto para Lyrion Music Server e os jogadores. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/uk/short-description.txt: -------------------------------------------------------------------------------- 1 | Дистанційне керування Lyrion Music Server та програвачами. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/ca/short-description.txt: -------------------------------------------------------------------------------- 1 | Comandament a distància per Lyrion Music Server i els jugadors. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/iw-IL/short-description.txt: -------------------------------------------------------------------------------- 1 | שליטה מרחוק לשרת מדיה של Lyrion‏ („Squeezeserver” וכו׳) ונגנים. 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Squeezer/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/ar/short-description.txt: -------------------------------------------------------------------------------- 1 | التحكم عن بعد لوجيتك ميديا سيرفر ("Squeezeserver"، وغيرها) واللاعبين. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/ru-RU/short-description.txt: -------------------------------------------------------------------------------- 1 | Пульт дистанционного управления для Lyrion Music Server и игроков. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/vi/short-description.txt: -------------------------------------------------------------------------------- 1 | Điều khiển từ xa cho Lyrion Music Server ("Squeezeserver" vv) và các cầu thủ. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/hi-IN/short-description.txt: -------------------------------------------------------------------------------- 1 | Lyrion मीडिया सर्वर ("Squeezeserver" आदि) और खिलाड़ियों के लिए रिमोट कंट्रोल. 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/th/short-description.txt: -------------------------------------------------------------------------------- 1 | การควบคุมระยะไกลสำหรับโลจิเทคมีเดียเซิร์ฟเวอร์ ("Squeezeserver" ฯลฯ ) และผู้เล่น 2 | -------------------------------------------------------------------------------- /Squeezer/squeezer-local-release-key.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/squeezer-local-release-key.keystore -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_sb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_sb3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_sb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_sb3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_baby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_baby.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_blank.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_boom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_boom.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_fab4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_fab4.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_sb1n2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_sb1n2.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_baby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_baby.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_blank.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_boom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_boom.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_fab4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_fab4.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_sb1n2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_sb1n2.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_baby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_baby.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_boom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_boom.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_fab4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_fab4.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_sb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_sb3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_sb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_sb3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_receiver.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_slimp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_slimp3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_receiver.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_slimp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_slimp3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_blank.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_sb1n2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_sb1n2.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_slimp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_slimp3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_baby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_baby.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_blank.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_boom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_boom.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_fab4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_fab4.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_sb1n2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_sb1n2.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_slimp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_slimp3.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_controller.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_controller.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_receiver.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_receiver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_receiver.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/icon_no_artwork.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable/icon_no_artwork.9.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_softsqueeze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_softsqueeze.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_squeezeplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_squeezeplay.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_squeezeplayer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_squeezeplayer.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_transporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_transporter.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_launcher_sls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_launcher_sls.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_softsqueeze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_softsqueeze.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_squeezeplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_squeezeplay.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_squeezeplayer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_squeezeplayer.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_transporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_transporter.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_controller.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_softsqueeze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_softsqueeze.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_squeezeplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_squeezeplay.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_transporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_transporter.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_controller.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_softsqueeze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_softsqueeze.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_squeezeplay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_squeezeplay.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_transporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_transporter.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/ic_launcher_lastfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/ic_launcher_lastfm.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-ldpi/ic_launcher_lastfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-ldpi/ic_launcher_lastfm.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_launcher_lastfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_launcher_lastfm.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/ic_squeezeplayer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/ic_squeezeplayer.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/ic_squeezeplayer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/ic_squeezeplayer.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /docs/assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "{{ site.theme }}"; 5 | 6 | 7 | .project-name { 8 | a { 9 | color: $header-heading-color; 10 | } 11 | } -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-hdpi/squeezer_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-hdpi/squeezer_notification.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/squeezer_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/squeezer_notification.png -------------------------------------------------------------------------------- /Squeezer/proguard-crashlytics.cfg: -------------------------------------------------------------------------------- 1 | # See http://support.crashlytics.com/knowledgebase/articles/202926-android-studio-and-intellij-with-proguard 2 | -keepattributes SourceFile,LineNumberTable -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-nodpi/squeezerremote_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-nodpi/squeezerremote_preview.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xhdpi/squeezer_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xhdpi/squeezer_notification.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-xxhdpi/squeezer_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-xxhdpi/squeezer_notification.png -------------------------------------------------------------------------------- /Squeezer/src/androidTest/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SqueezerTestTest 5 | 6 | 7 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable-mdpi/ic_launcher_scrobbledroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/res/drawable-mdpi/ic_launcher_scrobbledroid.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/feature-graphic/feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/feature-graphic/feature.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/1-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/1-home.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/icon/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/icon/ic_launcher-playstore.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/values-tr/serverstrings.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/1-home-grouped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/1-home-grouped.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/2-now-playing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/2-now-playing.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/4-artist-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/4-artist-info.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/6-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/6-notification.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/5-player-control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/5-player-control.png -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/event/RefreshEvent.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.service.event; 2 | 3 | /** 4 | * Event sent when the current page needs to reload. 5 | */ 6 | public class RefreshEvent { 7 | } 8 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/large-tablet-screenshots/2-browse-album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/large-tablet-screenshots/2-browse-album.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/wear-screenshots/1-wear-notification-474x403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/wear-screenshots/1-wear-notification-474x403.png -------------------------------------------------------------------------------- /Squeezer/src/main/res/values-land/dimensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 256dp 5 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/ConnectionError.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.service; 2 | 3 | public enum ConnectionError { 4 | START_CLIENT_ERROR, 5 | INVALID_URL, 6 | LOGIN_FALIED, 7 | CONNECTION_ERROR; 8 | } 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/8-now-playing-small-album-art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/8-now-playing-small-album-art.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/3-browse-albums-and-context-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/phone-screenshots/3-browse-albums-and-context-menu.png -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/graphics/wear-screenshots/2-wear-notification-pause-474x403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kaaholst/android-squeezer/HEAD/Squeezer/src/main/play/listings/en-US/graphics/wear-screenshots/2-wear-notification-pause-474x403.png -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/volume/VolumeUpdater.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.volume; 2 | 3 | import uk.org.ngo.squeezer.service.ISqueezeService; 4 | 5 | public interface VolumeUpdater { 6 | void update(ISqueezeService.VolumeInfo volumeInfo); 7 | } 8 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/underline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/layout/choices_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Oct 25 16:58:06 CET 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip 7 | -------------------------------------------------------------------------------- /Squeezer/proguard-guava.cfg: -------------------------------------------------------------------------------- 1 | # Proguard configuration for Guava 2 | # 3 | # Based on https://code.google.com/p/guava-libraries/wiki/UsingProGuardWithGuava. 4 | 5 | -dontwarn sun.misc.Unsafe 6 | -dontwarn com.google.common.collect.MinMaxPriorityQueue 7 | -dontwarn com.google.common.util.concurrent.** 8 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | • Home screen optionally organized with a horizontal list for each item. 2 | 3 | • Fix issue where lists are not filled after scrolling 4 | 5 | • Target Android 16 6 | 7 | • Do not attempt pending commands to LMS after disconnect -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/popup_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/thumb_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/homescreenwidgets/ServiceHandler.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.homescreenwidgets; 2 | 3 | import uk.org.ngo.squeezer.service.ISqueezeService; 4 | 5 | @FunctionalInterface 6 | interface ServiceHandler { 7 | void run(ISqueezeService service) throws Exception; 8 | } 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/itemlist/ItemReceiver.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.itemlist; 2 | import java.util.List; 3 | import java.util.Map; 4 | 5 | public interface ItemReceiver { 6 | void onItemsReceived(int count, int start, Map parameters, List items, Class dataType); 7 | } 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/current_track_background_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/current_track_background_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [squeezer.stringsxml] 5 | file_filter = Squeezer/src/main/res/values-/strings.xml 6 | lang_map = da_DK:da, de_DE:de, en_GB: en-rGB, nl_NL:nl 7 | source_file = Squeezer/src/main/res/values/strings.xml 8 | source_lang = en 9 | type = ANDROID 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/util/FluentHashMap.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.util; 2 | 3 | import java.util.HashMap; 4 | 5 | public class FluentHashMap extends HashMap { 6 | 7 | public FluentHashMap with(K key, V value) { 8 | put(key, value); 9 | return this; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/pending.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/layout/dropdown_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .\#* 2 | *~ 3 | *.apk 4 | build 5 | bin 6 | gen 7 | out 8 | local.properties 9 | build.properties 10 | squeezer.properties 11 | crashlytics.properties 12 | key.json 13 | key.p12 14 | keystore 15 | .classpath 16 | /ant.properties 17 | .settings/ 18 | *.iml 19 | *.patch 20 | .idea 21 | .gradle 22 | com_crashlytics_export_strings.xml 23 | .directory 24 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/model/RefreshWindow.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.model; 2 | 3 | public enum RefreshWindow { 4 | refreshMe, 5 | refreshOrigin, 6 | refreshGrandparent; 7 | 8 | public static RefreshWindow fromString(String s) { 9 | return (s == null ? null : RefreshWindow.valueOf(s)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/bandcamp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_play.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_stop.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_home.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_home.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/homescreenwidgets/ServicePlayerHandler.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.homescreenwidgets; 2 | 3 | import uk.org.ngo.squeezer.model.Player; 4 | import uk.org.ngo.squeezer.service.ISqueezeService; 5 | 6 | @FunctionalInterface 7 | interface ServicePlayerHandler { 8 | void run(ISqueezeService service, Player player) throws Exception; 9 | } 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_next.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/selector_checkbox_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/values-w400dp/dimensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 160dp 5 | 176dp 6 | 7 | 8 | @dimen/wrap_content 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_pause.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_previous.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/proguard-cometd.cfg: -------------------------------------------------------------------------------- 1 | # Proguard configuration for Comet client 2 | 3 | -dontwarn org.codehaus.jackson.** 4 | -dontwarn com.fasterxml.jackson.databind.** 5 | -dontwarn java.nio.file.** 6 | -dontwarn java.nio.channels.** 7 | -dontwarn java.awt.** 8 | -dontwarn javax.imageio.** 9 | -dontwarn java.io.** 10 | -dontwarn javax.servlet.** 11 | -dontwarn javax.net.** 12 | -dontwarn org.slf4j.** 13 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_down.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/panel_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/PlayerNotFoundException.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.service; 2 | 3 | import android.content.Context; 4 | 5 | import uk.org.ngo.squeezer.R; 6 | 7 | public class PlayerNotFoundException extends Exception { 8 | public PlayerNotFoundException(Context context) { 9 | super(context.getString(R.string.NO_PLAYER_FOUND)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/keyboard_return.xml: -------------------------------------------------------------------------------- 1 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/event/LastscanChanged.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.service.event; 2 | 3 | /** 4 | * Event sent when the timestamp of the last scan finished for the currently connected server 5 | * has changed 6 | */ 7 | public class LastscanChanged { 8 | public long lastScan; 9 | 10 | public LastscanChanged(long lastScan) { 11 | this.lastScan = lastScan; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_close.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_keyboard_arrow_up.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: Android CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v4.2.2 12 | - name: Setup Java JDK 13 | uses: actions/setup-java@v3.14.1 14 | with: 15 | java-version: '17' 16 | distribution: 'adopt' 17 | cache: 'gradle' 18 | - name: Build with Gradle 19 | run: ./gradlew clean build 20 | 21 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/homescreenwidgets/ContextServicePlayerHandler.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.homescreenwidgets; 2 | 3 | import android.content.Context; 4 | 5 | import uk.org.ngo.squeezer.model.Player; 6 | import uk.org.ngo.squeezer.service.ISqueezeService; 7 | 8 | @FunctionalInterface 9 | interface ContextServicePlayerHandler { 10 | void run(Context context, ISqueezeService service, Player player) throws Exception; 11 | } 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_keyboard_arrow_down.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/radio_talk.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_keyboard_arrow_right.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/bandcamp_emblem.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_view_as_grid.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_keyboard_arrow_left.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/apps.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_view_as_list.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_undobar_undo.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/add_circle.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/person.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_playlist.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_volume_down.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/location.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/icon_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_menu_playlist.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_menu_choose_player.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_power_settings_new.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/IRButton.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.service; 2 | 3 | public enum IRButton { 4 | playPreset_1("playPreset_1"), 5 | playPreset_2("playPreset_2"), 6 | playPreset_3("playPreset_3"), 7 | playPreset_4("playPreset_4"), 8 | playPreset_5("playPreset_5"), 9 | playPreset_6("playPreset_6"); 10 | 11 | private String function; 12 | 13 | IRButton(String function) { 14 | this.function = function; 15 | } 16 | 17 | public String getFunction() { 18 | return function; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/selector_checkbox_checked.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_volume_up_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /docs/Beta-testing.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: Beta Testing 3 | permalink: /beta/ 4 | --- 5 | 6 | Squeezer's beta test programme uses the normal Google mechanism for enrolling and managing beta testers (https://support.google.com/googleplay/android-developer/answer/3131213?hl=en). 7 | 8 | To join the Squeezer beta test programme: 9 | 10 | - Opt in to receive beta versions of Squeezer by going to https://play.google.com/apps/testing/uk.org.ngo.squeezer and clicking the "Become a tester" button. 11 | 12 | You will receive beta versions of Squeezer before they are released to the general population. -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/util/AfterTextChangedLister.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.util; 2 | 3 | import android.text.Editable; 4 | import android.text.TextWatcher; 5 | 6 | abstract public class AfterTextChangedLister implements TextWatcher { 7 | @Override 8 | public void beforeTextChanged(CharSequence s, int start, int count, int after) { 9 | } 10 | 11 | @Override 12 | public void onTextChanged(CharSequence s, int start, int before, int count) { 13 | } 14 | 15 | @Override 16 | abstract public void afterTextChanged(Editable editable); 17 | } 18 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/selector_checkbox_unchecked.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/radio_news.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/ServiceCallback.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.service; 2 | 3 | 4 | /** 5 | * Interface to enable automatic removal of callbacks without the need for the 6 | * programmer to manually unregister the callback. 7 | *

8 | * All callbacks must specify the context (usually Activity or Fragment in which 9 | * they run, so they can be unregistered via the Android life cycle methods. 10 | */ 11 | public interface ServiceCallback { 12 | 13 | /** 14 | * @return The context in which the callback runs 15 | */ 16 | Object getClient(); 17 | } 18 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/history.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_disconnect.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/power.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/rss.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/layout/context_menu_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_volume_up.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/rename.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/icon_album.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_theme_dark.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/framework/StateHolder.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.framework; 2 | 3 | import androidx.lifecycle.ViewModel; 4 | 5 | import java.util.Collections; 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | 9 | public class StateHolder extends ViewModel { 10 | private final Map state = Collections.synchronizedMap(new HashMap<>()); 11 | 12 | public void put(String key, T value) { 13 | state.put(key, value); 14 | } 15 | 16 | @SuppressWarnings("unchecked") 17 | public T get(String key) { 18 | return (T) state.get(key); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_theme_light.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_archive.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_archive.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/icon_line_in_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/settings_home.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/layout/continue_playback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 13 | 14 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/xml/squeezer_remote_control_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/earth.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/radio_sports.xml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/icon_line_in.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ml_artists_composer.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_menu_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/icon_popup_favorite.xml: -------------------------------------------------------------------------------- 1 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/tidal.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/favorites.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/emoticon_excited_outline.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/proguard-squeezer.cfg: -------------------------------------------------------------------------------- 1 | # No sense in obfuscating names since the code is freely available, 2 | # and it makes debugging a little trickier 3 | -keepnames class uk.org.ngo.squeezer.** { 4 | ; 5 | } 6 | 7 | # Explicitly keep the model class constructors. 8 | # Without this you get NoSuchMethodExceptions when creating model objects. 9 | -keep public class uk.org.ngo.squeezer.model.** { 10 | (java.lang.String); 11 | (java.util.Map); 12 | (android.os.Parcel); 13 | } 14 | 15 | # Needed to support the reflection in BaseItemView. 16 | -keepattributes Signature 17 | 18 | # Strip out certain logging calls. 19 | -assumenosideeffects class android.util.Log { 20 | public static *** d(...); 21 | public static *** v(...); 22 | } 23 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/search.xml: -------------------------------------------------------------------------------- 1 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/target.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_action_nowplaying.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_volume_off_white.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/widget/AnimationEndListener.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.widget; 2 | 3 | import android.view.animation.Animation; 4 | 5 | /** 6 | * {@link Animation.AnimationListener} with default empty implementations of 7 | * {@link Animation.AnimationListener#onAnimationRepeat(Animation)} and 8 | * {@link Animation.AnimationListener#onAnimationStart(Animation)}. 9 | *

10 | * This is just for a more convenient syntax if you only need to override the end action. 11 | */ 12 | public abstract class AnimationEndListener implements Animation.AnimationListener { 13 | @Override 14 | public void onAnimationStart(Animation animation) { 15 | } 16 | 17 | @Override 18 | public void onAnimationRepeat(Animation animation) { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/values-en-rGB/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/alarm_clock.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ml_new_music.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ic_volume_off.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/tidal_emblem.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 14 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/emoticon_sad_outline.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/folder.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/ml_genres.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/settings_brightness.xml: -------------------------------------------------------------------------------- 1 | 8 | 13 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/emoticon_cool_outline.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/podcasts.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/framework/EnumWithId.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Kurt Aaholst 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package uk.org.ngo.squeezer.framework; 18 | 19 | /** 20 | * Helper interface to associate an id with an enum value 21 | */ 22 | public interface EnumWithId { 23 | int getId(); 24 | } 25 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/values/constants.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | 20 | 512 21 | 9090 22 | 9000 23 | 24 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/service/event/PlayersChanged.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package uk.org.ngo.squeezer.service.event; 18 | 19 | /** 20 | * Event sent when the list of players connected to the server has changed. 21 | */ 22 | public class PlayersChanged { 23 | } 24 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/settings_advanced.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/toast_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/itemlist/dialog/ArtworkListLayout.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.itemlist.dialog; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.StringRes; 6 | 7 | import uk.org.ngo.squeezer.R; 8 | import uk.org.ngo.squeezer.framework.EnumWithText; 9 | 10 | /** 11 | * Supported list layouts. 12 | */ 13 | public enum ArtworkListLayout implements EnumWithText { 14 | grouped(R.string.settings_layout_grouped), 15 | grid(R.string.SWITCH_TO_GALLERY), 16 | list(R.string.SWITCH_TO_EXTENDED_LIST); 17 | 18 | /** 19 | * The text to use for this layout 20 | */ 21 | @StringRes 22 | private final int stringResource; 23 | 24 | @Override 25 | public String getText(Context context) { 26 | return context.getString(stringResource); 27 | } 28 | 29 | ArtworkListLayout(@StringRes int serverString) { 30 | this.stringResource = serverString; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/itemlist/IServiceItemListCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Kurt Aaholst 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package uk.org.ngo.squeezer.itemlist; 18 | 19 | import uk.org.ngo.squeezer.service.ServiceCallback; 20 | 21 | public interface IServiceItemListCallback extends ItemReceiver, ServiceCallback { 22 | } 23 | 24 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/nowplaying.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/layout/action_bar_custom_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 21 | 22 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/anim/slide_in_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/anim/slide_out_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/menu/player_group_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |

20 | 21 | 22 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/framework/EnumWithText.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Kurt Aaholst 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package uk.org.ngo.squeezer.framework; 18 | 19 | import android.content.Context; 20 | 21 | /** 22 | * Helper interface to associate a text suitable for display in the UI with an enum value. 23 | */ 24 | public interface EnumWithText { 25 | String getText(Context context); 26 | } 27 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/drawable/shuffle.xml: -------------------------------------------------------------------------------- 1 | 5 | 8 | 9 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Squeezer/src/main/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | Control your Lyrion Music Server and players. 2 | 3 | Features include: 4 | 5 | • Browse the library by album artist, all artists, composers, album, genre, year, playlist, favorites, or new music 6 | • Playlist control (now playing, shuffle, repeat, save/clear/modify playlists) 7 | • Manage players (names, synchronisation groups, sleep, alarms) 8 | • Full library search 9 | • Internet radio support (browse, staff picks, search) 10 | • Browse music folders 11 | • Supports Plugins/Apps 12 | • Library Views and Remote Music Libraries 13 | • Download of local music; track, album, artist, genre, year, playlist and music folder 14 | • Automatic discovery of local servers 15 | • Support for password protected servers 16 | • Control playback from your Android Wear device 17 | • Home Screen Widgets 18 | • Alarm Clock management 19 | • Add/remove music from favorites 20 | • Display lyrics 21 | 22 | Squeezer is free, and open source. 23 | -------------------------------------------------------------------------------- /Squeezer/src/main/java/uk/org/ngo/squeezer/widget/OnSwipeListener.java: -------------------------------------------------------------------------------- 1 | package uk.org.ngo.squeezer.widget; 2 | 3 | import android.view.GestureDetector; 4 | import android.view.MotionEvent; 5 | 6 | public class OnSwipeListener extends GestureDetector.SimpleOnGestureListener { 7 | 8 | public boolean onSwipeUp(){ 9 | return false; 10 | } 11 | 12 | public boolean onSwipeDown(){ 13 | return false; 14 | } 15 | 16 | public boolean onSwipeLeft(){ 17 | return false; 18 | } 19 | 20 | public boolean onSwipeRight(){ 21 | return false; 22 | } 23 | 24 | @Override 25 | public boolean onDown(MotionEvent e) { 26 | return true; 27 | } 28 | 29 | @Override 30 | public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 31 | if (Math.abs(velocityX) > Math.abs(velocityY)) { 32 | return velocityX < 0 ? onSwipeLeft() : onSwipeRight(); 33 | } else { 34 | return velocityY < 0 ? onSwipeUp() : onSwipeDown(); 35 | } 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /Squeezer/src/main/res/values-sw340dp-long/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /Squeezer/src/main/res/values-land/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 |