From 150cbfa6297b345b65b650af7e56d2de771401c7 Mon Sep 17 00:00:00 2001 From: Anonymous Raccoon <32224410+AnonymusRaccoon@users.noreply.github.com> Date: Sun, 13 May 2018 23:23:26 +0200 Subject: [PATCH] Adding tooltips on player seekbar --- MusicApp/MusicApp.csproj | 4 + .../Resources/Portable Class/MusicPlayer.cs | 12 +- MusicApp/Resources/Portable Class/Player.cs | 6 +- .../Portable Class/TimerTransformer.cs | 32 ++ MusicApp/Resources/Resource.Designer.cs | 310 +++++++++++++----- MusicApp/Resources/layout/Preferences.xml | 6 +- MusicApp/Resources/layout/player.xml | 14 +- MusicApp/packages.config | 1 + 8 files changed, 297 insertions(+), 88 deletions(-) create mode 100644 MusicApp/Resources/Portable Class/TimerTransformer.cs diff --git a/MusicApp/MusicApp.csproj b/MusicApp/MusicApp.csproj index 7e6a10e..4a04004 100644 --- a/MusicApp/MusicApp.csproj +++ b/MusicApp/MusicApp.csproj @@ -75,6 +75,9 @@ ..\packages\AngleSharp.0.9.9.2\lib\portable-windows8+net45+windowsphone8+wpa+monoandroid+monotouch\AngleSharp.dll + + ..\packages\Karamunting.Android.AnderWeb.DiscreteSeekBar.1.0.1\lib\monoandroid80\DiscreteSeekBar.dll + ..\packages\Xam.Plugins.Android.ExoPlayer.2.7.3\lib\monoandroid81\ExoPlayer.dll @@ -264,6 +267,7 @@ + diff --git a/MusicApp/Resources/Portable Class/MusicPlayer.cs b/MusicApp/Resources/Portable Class/MusicPlayer.cs index c38d747..5708037 100644 --- a/MusicApp/Resources/Portable Class/MusicPlayer.cs +++ b/MusicApp/Resources/Portable Class/MusicPlayer.cs @@ -17,6 +17,7 @@ using Com.Google.Android.Exoplayer2.Source; using Com.Google.Android.Exoplayer2.Trackselection; using Com.Google.Android.Exoplayer2.Upstream; using MusicApp.Resources.values; +using Org.Adw.Library.Widgets.Discreteseekbar; using Square.Picasso; using System; using System.Collections.Generic; @@ -455,16 +456,19 @@ namespace MusicApp.Resources.Portable_Class return currentID; } - public static void SetSeekBar(SeekBar bar) + public static void SetSeekBar(DiscreteSeekBar bar) { bar.Max = (int) player.Duration; bar.Progress = (int) player.CurrentPosition; bar.ProgressChanged += (sender, e) => { - if (player != null && e.FromUser) - player.SeekTo(e.Progress); + bool FromUser = e.P2; + int Progress = e.P1; - if (player != null && player.Duration - e.Progress <= 1500 && player.Duration - e.Progress > 0) + if (player != null && FromUser) + player.SeekTo(Progress); + + if (player != null && player.Duration - Progress <= 1500 && player.Duration - Progress > 0) ParseNextSong(); }; } diff --git a/MusicApp/Resources/Portable Class/Player.cs b/MusicApp/Resources/Portable Class/Player.cs index 64bdbcc..5a92e9f 100644 --- a/MusicApp/Resources/Portable Class/Player.cs +++ b/MusicApp/Resources/Portable Class/Player.cs @@ -8,6 +8,7 @@ using Android.Support.V4.Widget; using Android.Views; using Android.Widget; using MusicApp.Resources.values; +using Org.Adw.Library.Widgets.Discreteseekbar; using Square.Picasso; using System; using System.Threading.Tasks; @@ -20,7 +21,7 @@ namespace MusicApp.Resources.Portable_Class public View playerView; public Handler handler = new Handler(); - private SeekBar bar; + private DiscreteSeekBar bar; private ImageView imgView; private readonly int[] timers = new int[] { 0, 1, 10, 30, 60, 120 }; private readonly string[] items = new string[] { "Off", "1 minute", "10 minutes", "30 minutes", "1 hour", "2 hours" }; @@ -175,7 +176,8 @@ namespace MusicApp.Resources.Portable_Class while (MusicPlayer.player == null || MusicPlayer.player.Duration == 0) await Task.Delay(100); - bar = playerView.FindViewById(Resource.Id.songTimer); + bar = playerView.FindViewById(Resource.Id.songTimer); + bar.SetNumericTransformer(new TimerTransformer()); MusicPlayer.SetSeekBar(bar); handler.PostDelayed(UpdateSeekBar, 1000); diff --git a/MusicApp/Resources/Portable Class/TimerTransformer.cs b/MusicApp/Resources/Portable Class/TimerTransformer.cs new file mode 100644 index 0000000..d1e53b6 --- /dev/null +++ b/MusicApp/Resources/Portable Class/TimerTransformer.cs @@ -0,0 +1,32 @@ +using Org.Adw.Library.Widgets.Discreteseekbar; + +namespace MusicApp.Resources.Portable_Class +{ + public class TimerTransformer : DiscreteSeekBar.NumericTransformer + { + public override int Transform(int value) + { + return value; + } + + public override string TransformToString(int value) + { + int minutes = value / 60000; + int seconds = value / 1000 % 60; + + string min = minutes.ToString(); + string sec = seconds.ToString(); + if (min.Length == 1) + min = "0" + min; + if (sec.Length == 1) + sec = "0" + sec; + + return min + ":" + sec; + } + + public override bool UseStringTransform() + { + return true; + } + } +} \ No newline at end of file diff --git a/MusicApp/Resources/Resource.Designer.cs b/MusicApp/Resources/Resource.Designer.cs index c39f426..b8a7ab0 100644 --- a/MusicApp/Resources/Resource.Designer.cs +++ b/MusicApp/Resources/Resource.Designer.cs @@ -518,8 +518,8 @@ namespace MusicApp // aapt resource value: 0x7f010064 public const int customNavigationLayout = 2130772068; - // aapt resource value: 0x7f0101c3 - public const int defaultColor = 2130772419; + // aapt resource value: 0x7f0101d5 + public const int defaultColor = 2130772437; // aapt resource value: 0x7f010120 public const int defaultQueryHint = 2130772256; @@ -557,6 +557,9 @@ namespace MusicApp // aapt resource value: 0x7f010011 public const int disableDependentsState = 2130771985; + // aapt resource value: 0x7f0101d4 + public const int discreteSeekBarStyle = 2130772436; + // aapt resource value: 0x7f01005a public const int displayOptions = 2130772058; @@ -587,6 +590,57 @@ namespace MusicApp // aapt resource value: 0x7f01003a public const int dropdownPreferenceStyle = 2130772026; + // aapt resource value: 0x7f0101c7 + public const int dsb_allowTrackClickToDrag = 2130772423; + + // aapt resource value: 0x7f0101cb + public const int dsb_indicatorColor = 2130772427; + + // aapt resource value: 0x7f0101cc + public const int dsb_indicatorElevation = 2130772428; + + // aapt resource value: 0x7f0101cd + public const int dsb_indicatorFormatter = 2130772429; + + // aapt resource value: 0x7f0101cf + public const int dsb_indicatorPopupEnabled = 2130772431; + + // aapt resource value: 0x7f0101d3 + public const int dsb_indicatorSeparation = 2130772435; + + // aapt resource value: 0x7f0101ca + public const int dsb_indicatorTextAppearance = 2130772426; + + // aapt resource value: 0x7f0101c4 + public const int dsb_max = 2130772420; + + // aapt resource value: 0x7f0101c3 + public const int dsb_min = 2130772419; + + // aapt resource value: 0x7f0101c6 + public const int dsb_mirrorForRtl = 2130772422; + + // aapt resource value: 0x7f0101c8 + public const int dsb_progressColor = 2130772424; + + // aapt resource value: 0x7f0101ce + public const int dsb_rippleColor = 2130772430; + + // aapt resource value: 0x7f0101d1 + public const int dsb_scrubberHeight = 2130772433; + + // aapt resource value: 0x7f0101d2 + public const int dsb_thumbSize = 2130772434; + + // aapt resource value: 0x7f0101c9 + public const int dsb_trackColor = 2130772425; + + // aapt resource value: 0x7f0101d0 + public const int dsb_trackHeight = 2130772432; + + // aapt resource value: 0x7f0101c5 + public const int dsb_value = 2130772421; + // aapt resource value: 0x7f0100c7 public const int editTextBackground = 2130772167; @@ -1513,44 +1567,44 @@ namespace MusicApp public partial class Color { - // aapt resource value: 0x7f080054 - public const int abc_background_cache_hint_selector_material_dark = 2131230804; - - // aapt resource value: 0x7f080055 - public const int abc_background_cache_hint_selector_material_light = 2131230805; - - // aapt resource value: 0x7f080056 - public const int abc_btn_colored_borderless_text_material = 2131230806; - - // aapt resource value: 0x7f080057 - public const int abc_btn_colored_text_material = 2131230807; - - // aapt resource value: 0x7f080058 - public const int abc_color_highlight_material = 2131230808; - // aapt resource value: 0x7f080059 - public const int abc_hint_foreground_material_dark = 2131230809; + public const int abc_background_cache_hint_selector_material_dark = 2131230809; // aapt resource value: 0x7f08005a - public const int abc_hint_foreground_material_light = 2131230810; + public const int abc_background_cache_hint_selector_material_light = 2131230810; + + // aapt resource value: 0x7f08005b + public const int abc_btn_colored_borderless_text_material = 2131230811; + + // aapt resource value: 0x7f08005c + public const int abc_btn_colored_text_material = 2131230812; + + // aapt resource value: 0x7f08005d + public const int abc_color_highlight_material = 2131230813; + + // aapt resource value: 0x7f08005e + public const int abc_hint_foreground_material_dark = 2131230814; + + // aapt resource value: 0x7f08005f + public const int abc_hint_foreground_material_light = 2131230815; // aapt resource value: 0x7f08000c public const int abc_input_method_navigation_guard = 2131230732; - // aapt resource value: 0x7f08005b - public const int abc_primary_text_disable_only_material_dark = 2131230811; + // aapt resource value: 0x7f080060 + public const int abc_primary_text_disable_only_material_dark = 2131230816; - // aapt resource value: 0x7f08005c - public const int abc_primary_text_disable_only_material_light = 2131230812; + // aapt resource value: 0x7f080061 + public const int abc_primary_text_disable_only_material_light = 2131230817; - // aapt resource value: 0x7f08005d - public const int abc_primary_text_material_dark = 2131230813; + // aapt resource value: 0x7f080062 + public const int abc_primary_text_material_dark = 2131230818; - // aapt resource value: 0x7f08005e - public const int abc_primary_text_material_light = 2131230814; + // aapt resource value: 0x7f080063 + public const int abc_primary_text_material_light = 2131230819; - // aapt resource value: 0x7f08005f - public const int abc_search_url_text = 2131230815; + // aapt resource value: 0x7f080064 + public const int abc_search_url_text = 2131230820; // aapt resource value: 0x7f08000d public const int abc_search_url_text_normal = 2131230733; @@ -1561,29 +1615,29 @@ namespace MusicApp // aapt resource value: 0x7f08000f public const int abc_search_url_text_selected = 2131230735; - // aapt resource value: 0x7f080060 - public const int abc_secondary_text_material_dark = 2131230816; - - // aapt resource value: 0x7f080061 - public const int abc_secondary_text_material_light = 2131230817; - - // aapt resource value: 0x7f080062 - public const int abc_tint_btn_checkable = 2131230818; - - // aapt resource value: 0x7f080063 - public const int abc_tint_default = 2131230819; - - // aapt resource value: 0x7f080064 - public const int abc_tint_edittext = 2131230820; - // aapt resource value: 0x7f080065 - public const int abc_tint_seek_thumb = 2131230821; + public const int abc_secondary_text_material_dark = 2131230821; // aapt resource value: 0x7f080066 - public const int abc_tint_spinner = 2131230822; + public const int abc_secondary_text_material_light = 2131230822; // aapt resource value: 0x7f080067 - public const int abc_tint_switch_track = 2131230823; + public const int abc_tint_btn_checkable = 2131230823; + + // aapt resource value: 0x7f080068 + public const int abc_tint_default = 2131230824; + + // aapt resource value: 0x7f080069 + public const int abc_tint_edittext = 2131230825; + + // aapt resource value: 0x7f08006a + public const int abc_tint_seek_thumb = 2131230826; + + // aapt resource value: 0x7f08006b + public const int abc_tint_spinner = 2131230827; + + // aapt resource value: 0x7f08006c + public const int abc_tint_switch_track = 2131230828; // aapt resource value: 0x7f080010 public const int accent_material_dark = 2131230736; @@ -1639,8 +1693,8 @@ namespace MusicApp // aapt resource value: 0x7f08000b public const int cardview_shadow_start_color = 2131230731; - // aapt resource value: 0x7f080068 - public const int common_google_signin_btn_text_dark = 2131230824; + // aapt resource value: 0x7f08006d + public const int common_google_signin_btn_text_dark = 2131230829; // aapt resource value: 0x7f080000 public const int common_google_signin_btn_text_dark_default = 2131230720; @@ -1654,8 +1708,8 @@ namespace MusicApp // aapt resource value: 0x7f080003 public const int common_google_signin_btn_text_dark_pressed = 2131230723; - // aapt resource value: 0x7f080069 - public const int common_google_signin_btn_text_light = 2131230825; + // aapt resource value: 0x7f08006e + public const int common_google_signin_btn_text_light = 2131230830; // aapt resource value: 0x7f080004 public const int common_google_signin_btn_text_light_default = 2131230724; @@ -1669,14 +1723,14 @@ namespace MusicApp // aapt resource value: 0x7f080007 public const int common_google_signin_btn_text_light_pressed = 2131230727; - // aapt resource value: 0x7f08006a - public const int common_google_signin_btn_tint = 2131230826; + // aapt resource value: 0x7f08006f + public const int common_google_signin_btn_tint = 2131230831; // aapt resource value: 0x7f080048 public const int design_bottom_navigation_shadow_color = 2131230792; - // aapt resource value: 0x7f08006b - public const int design_error = 2131230827; + // aapt resource value: 0x7f080070 + public const int design_error = 2131230832; // aapt resource value: 0x7f080049 public const int design_fab_shadow_end_color = 2131230793; @@ -1702,8 +1756,8 @@ namespace MusicApp // aapt resource value: 0x7f080050 public const int design_snackbar_background_color = 2131230800; - // aapt resource value: 0x7f08006c - public const int design_tint_password_toggle = 2131230828; + // aapt resource value: 0x7f080071 + public const int design_tint_password_toggle = 2131230833; // aapt resource value: 0x7f08001e public const int dim_foreground_disabled_material_dark = 2131230750; @@ -1717,6 +1771,30 @@ namespace MusicApp // aapt resource value: 0x7f080021 public const int dim_foreground_material_light = 2131230753; + // aapt resource value: 0x7f080054 + public const int dsb_disabled_color = 2131230804; + + // aapt resource value: 0x7f080055 + public const int dsb_progress_color = 2131230805; + + // aapt resource value: 0x7f080072 + public const int dsb_progress_color_list = 2131230834; + + // aapt resource value: 0x7f080056 + public const int dsb_ripple_color_focused = 2131230806; + + // aapt resource value: 0x7f080073 + public const int dsb_ripple_color_list = 2131230835; + + // aapt resource value: 0x7f080057 + public const int dsb_ripple_color_pressed = 2131230807; + + // aapt resource value: 0x7f080058 + public const int dsb_track_color = 2131230808; + + // aapt resource value: 0x7f080074 + public const int dsb_track_color_list = 2131230836; + // aapt resource value: 0x7f080022 public const int error_color_material = 2131230754; @@ -1828,11 +1906,11 @@ namespace MusicApp // aapt resource value: 0x7f080042 public const int switch_thumb_disabled_material_light = 2131230786; - // aapt resource value: 0x7f08006d - public const int switch_thumb_material_dark = 2131230829; + // aapt resource value: 0x7f080075 + public const int switch_thumb_material_dark = 2131230837; - // aapt resource value: 0x7f08006e - public const int switch_thumb_material_light = 2131230830; + // aapt resource value: 0x7f080076 + public const int switch_thumb_material_light = 2131230838; // aapt resource value: 0x7f080043 public const int switch_thumb_normal_material_dark = 2131230787; @@ -4467,11 +4545,11 @@ namespace MusicApp // aapt resource value: 0x7f0b0170 public const int Animation_Design_BottomSheetDialog = 2131427696; - // aapt resource value: 0x7f0b019d - public const int AppCompatAlertDialogStyle = 2131427741; + // aapt resource value: 0x7f0b019f + public const int AppCompatAlertDialogStyle = 2131427743; - // aapt resource value: 0x7f0b019e - public const int AppCompatDarkAlertDialogStyle = 2131427742; + // aapt resource value: 0x7f0b01a0 + public const int AppCompatDarkAlertDialogStyle = 2131427744; // aapt resource value: 0x7f0b00ab public const int Base_AlertDialog_AppCompat = 2131427499; @@ -4974,14 +5052,14 @@ namespace MusicApp // aapt resource value: 0x7f0b0010 public const int CardView_Light = 2131427344; - // aapt resource value: 0x7f0b019c - public const int DarkPopup = 2131427740; + // aapt resource value: 0x7f0b019e + public const int DarkPopup = 2131427742; - // aapt resource value: 0x7f0b019f - public const int DarkPreferences = 2131427743; + // aapt resource value: 0x7f0b01a1 + public const int DarkPreferences = 2131427745; - // aapt resource value: 0x7f0b019b - public const int DarkTheme = 2131427739; + // aapt resource value: 0x7f0b019d + public const int DarkTheme = 2131427741; // aapt resource value: 0x7f0b0191 public const int ExoMediaButton = 2131427729; @@ -5334,8 +5412,8 @@ namespace MusicApp // aapt resource value: 0x7f0b0109 public const int TextAppearance_Widget_AppCompat_Toolbar_Title = 2131427593; - // aapt resource value: 0x7f0b0199 - public const int Theme = 2131427737; + // aapt resource value: 0x7f0b019b + public const int Theme = 2131427739; // aapt resource value: 0x7f0b010a public const int Theme_AppCompat = 2131427594; @@ -5400,8 +5478,8 @@ namespace MusicApp // aapt resource value: 0x7f0b0117 public const int Theme_AppCompat_NoActionBar = 2131427607; - // aapt resource value: 0x7f0b019a - public const int Theme_Base = 2131427738; + // aapt resource value: 0x7f0b019c + public const int Theme_Base = 2131427740; // aapt resource value: 0x7f0b017a public const int Theme_Design = 2131427706; @@ -5697,6 +5775,12 @@ namespace MusicApp // aapt resource value: 0x7f0b0189 public const int Widget_Design_TextInputLayout = 2131427721; + // aapt resource value: 0x7f0b0199 + public const int Widget_DiscreteIndicatorTextAppearance = 2131427737; + + // aapt resource value: 0x7f0b019a + public const int Widget_DiscreteSeekBar = 2131427738; + static Style() { global::Android.Runtime.ResourceIdManager.UpdateIdValues(); @@ -6928,6 +7012,76 @@ namespace MusicApp // aapt resource value: 9 public const int DialogPreference_positiveButtonText = 9; + public static int[] DiscreteSeekBar = new int[] { + 2130772419, + 2130772420, + 2130772421, + 2130772422, + 2130772423, + 2130772424, + 2130772425, + 2130772426, + 2130772427, + 2130772428, + 2130772429, + 2130772430, + 2130772431, + 2130772432, + 2130772433, + 2130772434, + 2130772435}; + + // aapt resource value: 4 + public const int DiscreteSeekBar_dsb_allowTrackClickToDrag = 4; + + // aapt resource value: 8 + public const int DiscreteSeekBar_dsb_indicatorColor = 8; + + // aapt resource value: 9 + public const int DiscreteSeekBar_dsb_indicatorElevation = 9; + + // aapt resource value: 10 + public const int DiscreteSeekBar_dsb_indicatorFormatter = 10; + + // aapt resource value: 12 + public const int DiscreteSeekBar_dsb_indicatorPopupEnabled = 12; + + // aapt resource value: 16 + public const int DiscreteSeekBar_dsb_indicatorSeparation = 16; + + // aapt resource value: 7 + public const int DiscreteSeekBar_dsb_indicatorTextAppearance = 7; + + // aapt resource value: 1 + public const int DiscreteSeekBar_dsb_max = 1; + + // aapt resource value: 0 + public const int DiscreteSeekBar_dsb_min = 0; + + // aapt resource value: 3 + public const int DiscreteSeekBar_dsb_mirrorForRtl = 3; + + // aapt resource value: 5 + public const int DiscreteSeekBar_dsb_progressColor = 5; + + // aapt resource value: 11 + public const int DiscreteSeekBar_dsb_rippleColor = 11; + + // aapt resource value: 14 + public const int DiscreteSeekBar_dsb_scrubberHeight = 14; + + // aapt resource value: 15 + public const int DiscreteSeekBar_dsb_thumbSize = 15; + + // aapt resource value: 6 + public const int DiscreteSeekBar_dsb_trackColor = 6; + + // aapt resource value: 13 + public const int DiscreteSeekBar_dsb_trackHeight = 13; + + // aapt resource value: 2 + public const int DiscreteSeekBar_dsb_value = 2; + public static int[] DrawerArrowToggle = new int[] { 2130772226, 2130772227, @@ -8288,6 +8442,12 @@ namespace MusicApp // aapt resource value: 15 public const int TextInputLayout_passwordToggleTintMode = 15; + public static int[] Theme = new int[] { + 2130772436}; + + // aapt resource value: 0 + public const int Theme_discreteSeekBarStyle = 0; + public static int[] Toolbar = new int[] { 16842927, 16843072, diff --git a/MusicApp/Resources/layout/Preferences.xml b/MusicApp/Resources/layout/Preferences.xml index 227f5df..3080574 100644 --- a/MusicApp/Resources/layout/Preferences.xml +++ b/MusicApp/Resources/layout/Preferences.xml @@ -1,6 +1,7 @@  - - + +