diff --git a/Opus/Opus.csproj b/Opus/Opus.csproj index c945a09..ecbbaab 100644 --- a/Opus/Opus.csproj +++ b/Opus/Opus.csproj @@ -357,7 +357,7 @@ - + @@ -885,6 +885,9 @@ + + + diff --git a/Opus/Resources/Portable Class/CollapsingToolbar.cs b/Opus/Resources/Portable Class/CollapsingToolbar.cs index a324544..44c5f94 100644 --- a/Opus/Resources/Portable Class/CollapsingToolbar.cs +++ b/Opus/Resources/Portable Class/CollapsingToolbar.cs @@ -15,7 +15,7 @@ public class CollapsingToolbar : CollapsingToolbarLayout protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec) { - if (PlaylistTracks.instance != null) + if (PlaylistTracks.instance != null && PlaylistTracks.instance.useHeader) heightMeasureSpec = widthMeasureSpec; diff --git a/Opus/Resources/Portable Class/Home.cs b/Opus/Resources/Portable Class/Home.cs index 75733ca..9eaa0bd 100644 --- a/Opus/Resources/Portable Class/Home.cs +++ b/Opus/Resources/Portable Class/Home.cs @@ -61,7 +61,7 @@ namespace Opus.Resources.Portable_Class } #pragma warning restore CS4014 - private /*async Task */ void PopulateView() + private async Task PopulateView() { if (!populating) { @@ -74,7 +74,7 @@ namespace Opus.Resources.Portable_Class adapterItems.Add(queue); } - HomeSection shuffle = new HomeSection(Resources.GetString(Resource.String.shuffle), SectionType.Shuffle, null); + HomeSection shuffle = new HomeSection(Resources.GetString(Resource.String.shuffle), SectionType.Shuffle); adapterItems.Add(shuffle); if (MainActivity.instance.HasReadPermission()) @@ -128,247 +128,15 @@ namespace Opus.Resources.Portable_Class adapter.ItemClick += ListView_ItemClick; ListView.SetItemAnimator(new DefaultItemAnimator()); - //ConnectivityManager connectivityManager = (ConnectivityManager)MainActivity.instance.GetSystemService(Context.ConnectivityService); - //NetworkInfo activeNetworkInfo = connectivityManager.ActiveNetworkInfo; - //if (activeNetworkInfo == null || !activeNetworkInfo.IsConnected) - // return; + (List playlists, string error) = await Playlist.GetLocalPlaylists(false); + if(playlists != null) + { + (List pl, List sp) = await Playlist.ProcessSyncedPlaylists(playlists); + sp.AddRange(pl); + adapterItems.Add(new HomeSection(GetString(Resource.String.playlists), SectionType.PlaylistList, sp)); + adapter.NotifyItemInserted(adapterItems.Count - 1); + } - //ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(Activity); - //List topics = prefManager.GetStringSet("selectedTopics", new string[] { }).ToList(); - //foreach (string topic in topics) - //{ - // selectedTopics.Add(topic.Substring(0, topic.IndexOf("/#-#/"))); - // selectedTopicsID.Add(topic.Substring(topic.IndexOf("/#-#/") + 5)); - //} - - //if (!await MainActivity.instance.WaitForYoutube()) - // return; - - //if (instance == null) - // return; - - //if (selectedTopicsID.Count > 0) - //{ - // List Items = new List(); - // foreach (string topic in selectedTopicsID) - // { - // try - // { - // YouTubeService youtube = YoutubeEngine.youtubeService; - // ChannelSectionsResource.ListRequest request = youtube.ChannelSections.List("snippet, contentDetails"); - // request.ChannelId = topic; - - // ChannelSectionListResponse response = await request.ExecuteAsync(); - - // foreach (var section in response.Items) - // { - // if (section.Snippet.Type == "channelsectionTypeUndefined") - // continue; - - // string title = section.Snippet.Title; - // if (title == null || title == "") - // title = selectedTopics[selectedTopicsID.IndexOf(topic)]; - - // if (title == "Popular Artists" || title == "Featured channels") - // title = (selectedTopics[selectedTopicsID.IndexOf(topic)].Contains(" Music") ? selectedTopics[selectedTopicsID.IndexOf(topic)].Substring(0, selectedTopics[selectedTopicsID.IndexOf(topic)].IndexOf(" Music")) : selectedTopics[selectedTopicsID.IndexOf(topic)]) + "'s " + title; - - // if (title == "Popular Channels") - // continue; - - // if (Items.Exists(x => x.SectionTitle == title)) - // continue; - - // SectionType type = SectionType.None; - // List contentValue = null; - // switch (section.Snippet.Type) - // { - // case "multipleChannels": - // type = SectionType.ChannelList; - // contentValue = section.ContentDetails.Channels.ToList(); - // break; - // case "multiplePlaylists": - // contentValue = section.ContentDetails.Playlists.ToList(); - // type = SectionType.PlaylistList; - // break; - // case "singlePlaylist": - // contentValue = section.ContentDetails.Playlists.ToList(); - // type = SectionType.SinglePlaylist; - // break; - // default: - // contentValue = new List(); - // break; - // } - - // HomeItem item = new HomeItem(title, type, contentValue); - // Items.Add(item); - // } - // } - // catch (System.Net.Http.HttpRequestException) - // { - // MainActivity.instance.Timout(); - // } - // } - // List playlistList = Items.FindAll(x => x.contentType == SectionType.PlaylistList); - // Items.RemoveAll(x => x.contentType == SectionType.PlaylistList); - // Random r = new Random(); - // Items = Items.OrderBy(x => r.Next()).ToList(); - // Items.AddRange(playlistList); - - // foreach (HomeItem item in Items) - // { - // List contentValue = new List(); - // switch (item.contentType) - // { - // case SectionType.SinglePlaylist: - // try - // { - // YouTubeService youtube = YoutubeEngine.youtubeService; - - // PlaylistItemsResource.ListRequest request = youtube.PlaylistItems.List("snippet, contentDetails"); - // request.PlaylistId = item.contentValue[0]; - // request.MaxResults = 25; - // request.PageToken = ""; - - // PlaylistItemListResponse response = await request.ExecuteAsync(); - - // if (response.Items.Count < 10) - // break; - - // foreach (var ytItem in response.Items) - // { - // if (ytItem.Snippet.Title != "[Deleted video]" && ytItem.Snippet.Title != "Private video" && ytItem.Snippet.Title != "Deleted video") - // { - // Song song = new Song(ytItem.Snippet.Title, ytItem.Snippet.ChannelTitle, ytItem.Snippet.Thumbnails.High.Url, ytItem.ContentDetails.VideoId, -1, -1, ytItem.ContentDetails.VideoId, true, false); - // contentValue.Add(song); - - // if (instance == null) - // return; - // } - // } - // } - // catch (System.Net.Http.HttpRequestException) - // { - // MainActivity.instance.Timout(); - // } - - // HomeSection section = new HomeSection(item.SectionTitle, item.contentType, contentValue); - // adapter.AddToList(new List() { section }); - // break; - // case SectionType.ChannelList: - // foreach (string channelID in item.contentValue) - // { - // try - // { - // YouTubeService youtube = YoutubeEngine.youtubeService; - - // ChannelsResource.ListRequest req = youtube.Channels.List("snippet"); - // req.Id = channelID; - - // ChannelListResponse resp = await req.ExecuteAsync(); - - // foreach (var ytItem in resp.Items) - // { - // Song channel = new Song(ytItem.Snippet.Title.Contains(" - Topic") ? ytItem.Snippet.Title.Substring(0, ytItem.Snippet.Title.IndexOf(" - Topic")) : ytItem.Snippet.Title, null, ytItem.Snippet.Thumbnails.Default__.Url, channelID, -1, -1, null, true); - // contentValue.Add(channel); - - // if (instance == null) - // return; - // } - // } - // catch (System.Net.Http.HttpRequestException) - // { - // MainActivity.instance.Timout(); - // } - // } - - // section = new HomeSection(item.SectionTitle, item.contentType, contentValue); - // adapter.AddToList(new List() { section }); - // break; - // case SectionType.PlaylistList: - // foreach (string playlistID in item.contentValue) - // { - // try - // { - // YouTubeService youtube = YoutubeEngine.youtubeService; - - // PlaylistsResource.ListRequest request = youtube.Playlists.List("snippet, contentDetails"); - // request.Id = playlistID; - - // PlaylistListResponse response = await request.ExecuteAsync(); - - - // foreach (var playlist in response.Items) - // { - // Song song = new Song(playlist.Snippet.Title, playlist.Snippet.ChannelTitle, playlist.Snippet.Thumbnails.Default__.Url, playlist.Id, -1, -1, playlist.Id, true); - // contentValue.Add(song); - - // if (instance == null) - // return; - // } - // } - // catch (System.Net.Http.HttpRequestException) - // { - // MainActivity.instance.Timout(); - // } - // } - - // section = new HomeSection(item.SectionTitle, item.contentType, contentValue); - // List removedValues = new List(); - // for (int i = 0; i < adapter.ItemCount; i++) - // { - // if (adapter.items[i].contentType == SectionType.ChannelList) - // { - // for (int j = 0; j < adapter.items[i].contentValue.Count; j++) - // { - // if (section.contentValue.Exists(x => x.Title.Contains(adapter.items[i].contentValue[j].Title))) - // { - // adapter.items[i].contentValue[j].Artist = section.contentValue.Find(x => x.Title.Contains(adapter.items[i].contentValue[j].Title)).YoutubeID; - // removedValues.Add(section.contentValue.Find(x => x.Title.Contains(adapter.items[i].contentValue[j].Title))); - // if (j < 4 && adapter.items[i].recycler != null) - // { - // RecyclerHolder holder = (RecyclerHolder)adapter.items[i].recycler.GetChildViewHolder(adapter.items[i].recycler.GetLayoutManager().FindViewByPosition(j)); - // holder.action.Text = "Mix"; - // } - // } - // } - // } - // } - // //section.contentValue = section.contentValue.Except(removedValues).ToList(); - // //if(section.contentValue.Count > 0) - // // adapter.AddToList(new List() { section }); - // break; - // default: - // break; - // } - // } - - // r = new Random(); - // if (r.Next(0, 100) > 90) - // await AddHomeTopics(); - - // for (int i = 0; i < adapter.items.Count; i++) - // { - // if (adapter.items[i].contentType == SectionType.ChannelList) - // { - // for (int j = 0; j < adapter.items[i].contentValue.Count; j++) - // { - // if (adapter.items[i].contentValue[j].Artist == null) - // { - // adapter.items[i].contentValue[j].Artist = "Follow"; - // if (j < 4 && adapter.items[i].recycler != null) - // { - // RecyclerHolder holder = (RecyclerHolder)adapter.items[i].recycler.GetChildViewHolder(adapter.items[i].recycler.GetLayoutManager().FindViewByPosition(j)); - // holder.action.Text = "Follow"; - // } - // } - // } - // } - // } - //} - //else - //{ - // await AddHomeTopics(); - //} populating = false; } } @@ -379,7 +147,7 @@ namespace Opus.Resources.Portable_Class { HomeSection queue = new HomeSection("Queue", SectionType.SinglePlaylist, MusicPlayer.queue); adapterItems.Insert(0, queue); - adapter?.Insert(0, queue); + adapter?.NotifyItemInserted(0); } } @@ -398,8 +166,7 @@ namespace Opus.Resources.Portable_Class public async Task Refresh() { - /*await*/ PopulateView(); - await Task.Delay(0); //WE DONT NEED TO TALK ABOUT THIS + await PopulateView(); } public void LoadMore() diff --git a/Opus/Resources/Portable Class/HomeAdapter.cs b/Opus/Resources/Portable Class/HomeAdapter.cs index f28db87..f082f1b 100644 --- a/Opus/Resources/Portable Class/HomeAdapter.cs +++ b/Opus/Resources/Portable Class/HomeAdapter.cs @@ -1,6 +1,7 @@ using Android.Content; using Android.Graphics; using Android.Graphics.Drawables; +using Android.Support.Design.Widget; using Android.Support.V7.Widget; using Android.Util; using Android.Views; @@ -25,25 +26,6 @@ namespace Opus.Resources.Portable_Class this.items = items; } - public void UpdateList(List items) - { - this.items = items; - NotifyDataSetChanged(); - } - - public void AddToList(List items) - { - int positionStart = this.items.Count; - this.items.AddRange(items); - NotifyItemRangeInserted(positionStart, items.Count); - } - - public void Insert(int position, HomeSection item) - { - //items.Insert(0, item); - NotifyItemInserted(0); - } - public override int ItemCount { get { return items.Count; } } public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) @@ -58,11 +40,11 @@ namespace Opus.Resources.Portable_Class View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomeChannels, parent, false); return new LineSongHolder(itemView, OnClick, OnLongClick); } - //else if(viewType == 2) - //{ - // View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomePlaylists, parent, false); - // return new LineSongHolder(itemView, OnClick, OnLongClick); - //} + else if (viewType == 2) + { + View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomePlaylists, parent, false); + return new LineSongHolder(itemView, OnClick, OnLongClick); + } else { View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.ShuffleButton, parent, false); @@ -99,9 +81,6 @@ namespace Opus.Resources.Portable_Class holder.more.Click += (sender, e) => { position = holder.AdapterPosition; - MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(true); - MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true); - MainActivity.instance.SupportActionBar.Title = items[position].SectionTitle; MainActivity.instance.contentRefresh.Refresh -= Home.instance.OnRefresh; Home.instance = null; MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(items[position].contentValue, items[position].SectionTitle)).AddToBackStack(null).Commit(); @@ -118,24 +97,24 @@ namespace Opus.Resources.Portable_Class holder.title.Text = items[position].SectionTitle; holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false)); - holder.recycler.SetAdapter(new HomeChannelAdapter(items[position].contentValue.GetRange(0, items[position].contentValue.Count > 4 ? 4 : items[position].contentValue.Count), holder.recycler) { allItems = items[position].contentValue.GetRange(4, items[position].contentValue.Count - 4) }); + holder.recycler.SetAdapter(new HomeListAdapter(items[position].contentValue.GetRange(0, items[position].contentValue.Count > 4 ? 4 : items[position].contentValue.Count), holder.recycler) { allItems = items[position].contentValue.GetRange(4, items[position].contentValue.Count - 4) }); ((GradientDrawable)holder.more.Background).SetStroke(5, Android.Content.Res.ColorStateList.ValueOf(Color.Argb(255, 21, 183, 237))); holder.more.SetTextColor(Color.Argb(255, 21, 183, 237)); - holder.more.Text = ((HomeChannelAdapter)holder.recycler.GetAdapter()).songList.Count > 4 ? "View Less" : "View More"; + holder.more.Text = ((HomeListAdapter)holder.recycler.GetAdapter()).channels.Count > 4 ? "View Less" : "View More"; holder.more.Click += (sender, e) => { - HomeChannelAdapter adapter = (HomeChannelAdapter)holder.recycler.GetAdapter(); + HomeListAdapter adapter = (HomeListAdapter)holder.recycler.GetAdapter(); if(adapter.ItemCount == 4) { - adapter.songList.AddRange(items[position].contentValue.GetRange(4, items[position].contentValue.Count - 4)); + adapter.channels.AddRange(items[position].contentValue.GetRange(4, items[position].contentValue.Count - 4)); adapter.NotifyItemRangeInserted(4, items[position].contentValue.Count - 4); holder.more.Text = "View Less"; } else { - int count = adapter.songList.Count - 4; - adapter.songList.RemoveRange(4, count); + int count = adapter.channels.Count - 4; + adapter.channels.RemoveRange(4, count); adapter.NotifyItemRangeRemoved(4, count); holder.more.Text = "View More"; } @@ -144,33 +123,35 @@ namespace Opus.Resources.Portable_Class if (MainActivity.Theme == 1) holder.ItemView.SetBackgroundColor(Color.Argb(255, 62, 62, 62)); } - //else if (items[position].contentType == SectionType.PlaylistList) - //{ - // LineSongHolder holder = (LineSongHolder)viewHolder; - // holder.title.Text = items[position].SectionTitle; - // holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false)); - // holder.recycler.SetAdapter(new HomeChannelAdapter(items[position].contentValue.GetRange(0, items[position].contentValue.Count > 4 ? 4 : items[position].contentValue.Count), holder.recycler)); - - // if (MainActivity.Theme == 1) - // holder.ItemView.SetBackgroundColor(Color.Argb(255, 62, 62, 62)); - //} - else if(items[position].contentType == SectionType.TopicSelector) + else if (items[position].contentType == SectionType.PlaylistList) { LineSongHolder holder = (LineSongHolder)viewHolder; - items[position].recycler = holder.recycler; - holder.title.Text = items[position].SectionTitle; holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false)); - holder.recycler.SetAdapter(new HomeChannelAdapter(items[position].contentValue)); - holder.more.Click += (sender, e) => - { - Intent intent = new Intent(MainActivity.instance, typeof(Preferences)); - MainActivity.instance.StartActivity(intent); - }; + holder.recycler.SetAdapter(new HomeListAdapter(items[position].playlistContent.GetRange(0, items[position].playlistContent.Count > 4 ? 4 : items[position].playlistContent.Count), holder.recycler)); + holder.more.Click += (sender, e) => { MainActivity.instance.FindViewById(Resource.Id.bottomView).SelectedItemId = Resource.Id.playlistLayout; }; + if (MainActivity.Theme == 1) holder.ItemView.SetBackgroundColor(Color.Argb(255, 62, 62, 62)); } + //else if(items[position].contentType == SectionType.TopicSelector) + //{ + // LineSongHolder holder = (LineSongHolder)viewHolder; + // items[position].recycler = holder.recycler; + + // holder.title.Text = items[position].SectionTitle; + // holder.recycler.SetLayoutManager(new LinearLayoutManager(MainActivity.instance, LinearLayoutManager.Vertical, false)); + // holder.recycler.SetAdapter(new HomeListAdapter(items[position].contentValue)); + // holder.more.Click += (sender, e) => + // { + // Intent intent = new Intent(MainActivity.instance, typeof(Preferences)); + // MainActivity.instance.StartActivity(intent); + // }; + + // if (MainActivity.Theme == 1) + // holder.ItemView.SetBackgroundColor(Color.Argb(255, 62, 62, 62)); + //} else if (items[position].contentType == SectionType.Shuffle) { if (MainActivity.Theme == 1) diff --git a/Opus/Resources/Portable Class/HomeChannelAdapter.cs b/Opus/Resources/Portable Class/HomeChannelAdapter.cs deleted file mode 100644 index e6d5183..0000000 --- a/Opus/Resources/Portable Class/HomeChannelAdapter.cs +++ /dev/null @@ -1,180 +0,0 @@ -using Android.App; -using Android.Content; -using Android.Support.V7.Preferences; -using Android.Support.V7.Widget; -using Android.Views; -using Android.Widget; -using Opus.Resources.values; -using Square.Picasso; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Opus.Resources.Portable_Class -{ - public class HomeChannelAdapter : RecyclerView.Adapter - { - public RecyclerView recycler; - public int listPadding = 0; - public List songList; - public List allItems; - private bool useTopic = false; - - public override int ItemCount => useTopic ? 3 : songList.Count; - - public HomeChannelAdapter(List songList, RecyclerView recycler) - { - this.recycler = recycler; - this.songList = songList; - } - - public HomeChannelAdapter(List songList) - { - this.songList = songList; - useTopic = true; - } - - public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) - { - RecyclerHolder holder = (RecyclerHolder)viewHolder; - - holder.Title.Text = songList[position].Title; - var songAlbumArtUri = Android.Net.Uri.Parse(songList[position].Album); - Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.background_material_dark).Resize(400, 400).CenterCrop().Transform(new CircleTransformation()).Into(holder.AlbumArt); - - if (!useTopic) - { - if (songList[position].Artist == "Follow") - { - if(Home.instance.selectedTopicsID.Contains(songList[position].YoutubeID)) - holder.action.Text = "Unfollow"; - else - holder.action.Text = "Follow"; - } - else if (songList[position].Artist != null) - holder.action.Text = "Mix"; - - if (!holder.action.HasOnClickListeners) - { - holder.action.Click += async (sender, e) => - { - if(holder.action.Text == "Following") - { - holder.action.Text = "Unfollowed"; - ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(MainActivity.instance); - List topics = prefManager.GetStringSet("selectedTopics", new string[] { }).ToList(); - - ISharedPreferencesEditor editor = prefManager.Edit(); - topics.Remove(songList[position].Title + "/#-#/" + songList[position].YoutubeID); - editor.PutStringSet("selectedTopics", topics); - editor.Apply(); - Home.instance.selectedTopics.Remove(songList[position].Title); - Home.instance.selectedTopicsID.Remove(songList[position].YoutubeID); - - await Task.Delay(1000); - holder.action.Text = "Follow"; - } - else if (songList[position].Artist == "Follow") - { - ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(MainActivity.instance); - List topics = prefManager.GetStringSet("selectedTopics", new string[] { }).ToList(); - - ISharedPreferencesEditor editor = prefManager.Edit(); - topics.Add(songList[position].Title + "/#-#/" + songList[position].YoutubeID); - editor.PutStringSet("selectedTopics", topics); - editor.Apply(); - Home.instance.selectedTopics.Add(songList[position].Title); - Home.instance.selectedTopicsID.Add(songList[position].YoutubeID); - - holder.action.Text = "Following"; - await Task.Delay(1000); - - if(holder.action.Text != "Unfollowed") - { - if (allItems.Count > 0 && songList.Count < 5) - { - songList[position] = allItems[allItems.Count - 1]; - NotifyItemChanged(position); - allItems.RemoveAt(allItems.Count - 1); - } - else - { - songList.RemoveAt(position); - allItems.RemoveAt(position); - NotifyItemRemoved(position); - } - } - } - else if (songList[position].Artist != null) - Playlist.PlayInOrder(songList[position].Artist); - }; - } - } - else - { - holder.action.Text = "Follow"; - - if (!holder.action.HasOnClickListeners) - { - holder.action.Click += async (sender, e) => - { - if (holder.action.Text == "Following") - { - holder.action.Text = "Unfollowed"; - ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(MainActivity.instance); - List topics = prefManager.GetStringSet("selectedTopics", new string[] { }).ToList(); - - ISharedPreferencesEditor editor = prefManager.Edit(); - topics.Remove(songList[position].Title + "/#-#/" + songList[position].YoutubeID); - editor.PutStringSet("selectedTopics", topics); - editor.Apply(); - - await Task.Delay(1000); - holder.action.Text = "Follow"; - } - else - { - ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(MainActivity.instance); - List topics = prefManager.GetStringSet("selectedTopics", new string[] { }).ToList(); - - ISharedPreferencesEditor editor = prefManager.Edit(); - topics.Add(songList[position].Title + "/#-#/" + songList[position].YoutubeID); - editor.PutStringSet("selectedTopics", topics); - editor.Apply(); - - holder.action.Text = "Following"; - await Task.Delay(1000); - - if (holder.action.Text != "Unfollowed") - { - if (position == 0 || position == 1) - { - if (songList.Count < 4) - return; - - songList[position] = songList[songList.Count - 1]; - songList.RemoveAt(songList.Count - 1); - } - else - songList.RemoveAt(position); - - NotifyItemChanged(position); - } - } - }; - } - holder.ItemView.SetPadding(4, 1, 4, 1); - } - } - - public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) - { - View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomeChannel, parent, false); - return new RecyclerHolder(itemView, OnClick, OnLongClick); - } - - void OnClick(int position) { } - - void OnLongClick(int position) { } - } -} \ No newline at end of file diff --git a/Opus/Resources/Portable Class/HomeListAdapter.cs b/Opus/Resources/Portable Class/HomeListAdapter.cs new file mode 100644 index 0000000..57f6948 --- /dev/null +++ b/Opus/Resources/Portable Class/HomeListAdapter.cs @@ -0,0 +1,115 @@ +using Android.App; +using Android.Content; +using Android.Content.Res; +using Android.Graphics; +using Android.Support.V7.Preferences; +using Android.Support.V7.Widget; +using Android.Views; +using Android.Widget; +using Opus.Resources.values; +using Square.Picasso; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Opus.Resources.Portable_Class +{ + public class HomeListAdapter : RecyclerView.Adapter + { + public RecyclerView recycler; + public int listPadding = 0; + public List channels; + public List playlists; + public List allItems; + private readonly bool UseChannel; + public bool expanded = false; + + public override int ItemCount => UseChannel ? (expanded ? (channels.Count > 3 ? 3 : channels.Count) : channels.Count) : + expanded ? (playlists.Count > 3 ? 3 : playlists.Count) : playlists.Count; + + public HomeListAdapter(List channels, RecyclerView recycler) + { + this.recycler = recycler; + this.channels = channels; + UseChannel = true; + } + + public HomeListAdapter(List playlists, RecyclerView recycler) + { + this.recycler = recycler; + this.playlists = playlists; + UseChannel = false; + } + + public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) + { + RecyclerHolder holder = (RecyclerHolder)viewHolder; + + if(UseChannel) + { + holder.Title.Text = channels[position].Title; + Picasso.With(Application.Context).Load(channels[position].Album).Placeholder(Resource.Color.background_material_dark).Transform(new CircleTransformation()).Into(holder.AlbumArt); + holder.ItemView.SetPadding(4, 1, 4, 1); + } + else + { + holder.Title.Text = playlists[position].Name; + Picasso.With(Application.Context).Load(playlists[position].ImageURL).Placeholder(Resource.Color.background_material_dark).Resize(400, 400).CenterCrop().Into(holder.AlbumArt); + if(!holder.RightButtons.FindViewById(Resource.Id.play).HasOnClickListeners) + { + //Only support local playlists for now. + holder.RightButtons.FindViewById(Resource.Id.play).Click += (sender, e) => { Playlist.PlayInOrder(playlists[position].LocalID); }; + holder.RightButtons.FindViewById(Resource.Id.shuffle).Click += (sender, e) => { Playlist.RandomPlay(playlists[position].LocalID, MainActivity.instance); }; + } + + if(MainActivity.Theme == 1) + { + holder.RightButtons.FindViewById(Resource.Id.play).ImageTintList = ColorStateList.ValueOf(Color.White); + holder.RightButtons.FindViewById(Resource.Id.shuffle).ImageTintList = ColorStateList.ValueOf(Color.White); + } + else + { + holder.RightButtons.FindViewById(Resource.Id.play).ImageTintList = ColorStateList.ValueOf(Color.Black); + holder.RightButtons.FindViewById(Resource.Id.shuffle).ImageTintList = ColorStateList.ValueOf(Color.Black); + } + } + } + + public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) + { + if(UseChannel) + { + View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomeChannel, parent, false); + return new RecyclerHolder(itemView, OnClick, OnLongClick); + } + else + { + View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.HomePlaylist, parent, false); + return new RecyclerHolder(itemView, OnClick, OnLongClick); + } + } + + void OnClick(int position) + { + if(UseChannel) + { + //Open a channel view + } + else + { + MainActivity.instance.contentRefresh.Refresh -= Home.instance.OnRefresh; + Home.instance = null; + PlaylistItem playlist = playlists[position]; + + if (playlist.SyncState == SyncState.True || playlist.SyncState == SyncState.Loading) + MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.YoutubeID, playlist.LocalID, playlist.Name, playlist.HasWritePermission, true, playlist.Owner, playlist.Count, playlist.ImageURL)).AddToBackStack("Playlist Track").Commit(); + else if (playlist.LocalID != 0 && playlist.LocalID != -1) + MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.LocalID, playlist.Name)).AddToBackStack("Playlist Track").Commit(); + else + MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.YoutubeID, playlist.Name, playlist.HasWritePermission, true, playlist.Owner, playlist.Count, playlist.ImageURL)).AddToBackStack("Playlist Track").Commit(); + } + } + + void OnLongClick(int position) { } + } +} \ No newline at end of file diff --git a/Opus/Resources/Portable Class/HomeSection.cs b/Opus/Resources/Portable Class/HomeSection.cs index 1655bb3..24fdf79 100644 --- a/Opus/Resources/Portable Class/HomeSection.cs +++ b/Opus/Resources/Portable Class/HomeSection.cs @@ -1,4 +1,5 @@ using Android.Support.V7.Widget; +using Opus.Resources.Portable_Class; using System.Collections.Generic; namespace Opus.Resources.values @@ -9,14 +10,28 @@ namespace Opus.Resources.values public string SectionTitle; public SectionType contentType; public List contentValue; + public List playlistContent; public RecyclerView recycler; + public HomeSection(string sectionTitle, SectionType contentType) + { + SectionTitle = sectionTitle; + this.contentType = contentType; + } + public HomeSection(string sectionTitle, SectionType contentType, List contentValue) { SectionTitle = sectionTitle; this.contentType = contentType; this.contentValue = contentValue; } + + public HomeSection(string sectionTitle, SectionType contentType, List playlistContent) + { + SectionTitle = sectionTitle; + this.contentType = contentType; + this.playlistContent = playlistContent; + } } public enum SectionType diff --git a/Opus/Resources/Portable Class/Playlist.cs b/Opus/Resources/Portable Class/Playlist.cs index f8acc86..dab9c7e 100644 --- a/Opus/Resources/Portable Class/Playlist.cs +++ b/Opus/Resources/Portable Class/Playlist.cs @@ -191,10 +191,18 @@ namespace Opus.Resources.Portable_Class /* This method will return all playlists available on the local storage in the array "playlists". * If there is an error, the Task will return an error message to display to the user. */ - public static async Task<(List, string)> GetLocalPlaylists() + public static async Task<(List, string)> GetLocalPlaylists(bool askForPermission = true) { - if (!await MainActivity.instance.GetReadPermission()) - return (null, Application.Context.GetString(Resource.String.no_permission)); + if(askForPermission) + { + if (!await MainActivity.instance.GetReadPermission()) + return (null, Application.Context.GetString(Resource.String.no_permission)); + } + else + { + if (!MainActivity.instance.HasReadPermission()) + return (null, Application.Context.GetString(Resource.String.no_permission)); + } List playlists = new List(); diff --git a/Opus/Resources/Portable Class/PlaylistItem.cs b/Opus/Resources/Portable Class/PlaylistItem.cs index 99f969a..0658e18 100644 --- a/Opus/Resources/Portable Class/PlaylistItem.cs +++ b/Opus/Resources/Portable Class/PlaylistItem.cs @@ -1,4 +1,5 @@ -using SQLite; +using Opus.Resources.values; +using SQLite; using System; namespace Opus.Resources.Portable_Class @@ -41,6 +42,16 @@ namespace Opus.Resources.Portable_Class this.LocalID = LocalID; this.YoutubeID = YoutubeID; } + + public Song ToSong() + { + return new Song(Name, Owner, ImageURL, YoutubeID, -1, LocalID, null, false, HasWritePermission); + } + + public static Song ToSong(PlaylistItem item) + { + return new Song(item.Name, item.Owner, item.ImageURL, item.YoutubeID, -1, item.LocalID, null, false, item.HasWritePermission); + } } public enum SyncState diff --git a/Opus/Resources/Portable Class/PlaylistTracks.cs b/Opus/Resources/Portable Class/PlaylistTracks.cs index 269f0f2..69ccafa 100644 --- a/Opus/Resources/Portable Class/PlaylistTracks.cs +++ b/Opus/Resources/Portable Class/PlaylistTracks.cs @@ -61,6 +61,102 @@ namespace Opus.Resources.Portable_Class MainActivity.instance.SupportActionBar.Title = playlistName; } + public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + View view = inflater.Inflate(Resource.Layout.RecyclerFragment, container, false); + ListView = view.FindViewById(Resource.Id.recycler); + ListView.SetLayoutManager(new Android.Support.V7.Widget.LinearLayoutManager(MainActivity.instance)); + ListView.SetAdapter(new PlaylistTrackAdapter(new List())); + ListView.ScrollChange += ListView_ScrollChange; + +#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed + PopulateList(); +#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed + if(useHeader) + CreateHeader(); + return view; + } + + private void ListView_ScrollChange(object sender, View.ScrollChangeEventArgs e) + { + if (((Android.Support.V7.Widget.LinearLayoutManager)ListView?.GetLayoutManager())?.FindLastVisibleItemPosition() == adapter?.ItemCount - 1) +#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed + LoadMore(); +#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed + } + + void CreateHeader() + { + Activity.FindViewById(Resource.Id.playlistHeader).Visibility = ViewStates.Visible; + ((AppBarLayout.LayoutParams)Activity.FindViewById(Resource.Id.collapsingToolbar).LayoutParameters).ScrollFlags = AppBarLayout.LayoutParams.ScrollFlagScroll | AppBarLayout.LayoutParams.ScrollFlagExitUntilCollapsed; + Activity.FindViewById(Resource.Id.appbar).AddOnOffsetChangedListener(this); + Activity.FindViewById(Resource.Id.headerTitle).Text = playlistName; + + if (!Activity.FindViewById(Resource.Id.headerPlay).HasOnClickListeners) + Activity.FindViewById(Resource.Id.headerPlay).Click += (sender, e0) => { PlayInOrder(0); }; + if (!Activity.FindViewById(Resource.Id.headerShuffle).HasOnClickListeners) + Activity.FindViewById(Resource.Id.headerShuffle).Click += (sender, e0) => { RandomPlay(); }; + if (!Activity.FindViewById(Resource.Id.headerMore).HasOnClickListeners) + Activity.FindViewById(Resource.Id.headerMore).Click += PlaylistMore; + + if (LocalID != 0 && thumnailURI == null) + { + Activity.FindViewById(Resource.Id.headerAuthor).Text = MainActivity.account == null ? "by me" : "by " + MainActivity.account.DisplayName; + } + else if (YoutubeID != null && YoutubeID != "") + { + Activity.FindViewById(Resource.Id.headerAuthor).Text = author; + Activity.FindViewById(Resource.Id.headerNumber).Text = count.ToString() + " " + GetString(Resource.String.songs); + if (count == -1) + Activity.FindViewById(Resource.Id.headerNumber).Text = "NaN" + " " + GetString(Resource.String.songs); + + Picasso.With(Android.App.Application.Context).Load(thumnailURI).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(Activity.FindViewById(Resource.Id.headerArt)); + } + Activity.FindViewById(Resource.Id.collapsingToolbar).RequestLayout(); + } + + public override void OnDestroyView() + { + Activity.FindViewById(Resource.Id.headerMore).Click -= PlaylistMore; + + if (!MainActivity.instance.Paused) + { + Activity.FindViewById(Resource.Id.playlistHeader).Visibility = ViewStates.Gone; + + MainActivity.instance.HideSearch(); + MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false); + MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false); + MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(true); + MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false); + MainActivity.instance.FindViewById(Resource.Id.toolbarLogo).Visibility = ViewStates.Visible; + + MainActivity.instance.contentRefresh.Refresh -= OnRefresh; + Activity.FindViewById(Resource.Id.appbar).RemoveOnOffsetChangedListener(this); + + + if (YoutubeEngine.instances != null) + { + MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Visible; + Android.Support.V7.Widget.SearchView searchView = (Android.Support.V7.Widget.SearchView)MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView; + searchView.Focusable = false; + MainActivity.instance.menu.FindItem(Resource.Id.search).ExpandActionView(); + searchView.SetQuery(YoutubeEngine.instances[0].Query, false); + searchView.ClearFocus(); + + int selectedTab = 0; + for (int i = 0; i < YoutubeEngine.instances.Length; i++) + { + if (YoutubeEngine.instances[i].IsFocused) + selectedTab = i; + } + } + instance = null; + } + base.OnDestroyView(); + } + + + //Header more click public bool OnMenuItemClick(IMenuItem item) { switch (item.ItemId) @@ -239,46 +335,6 @@ namespace Opus.Resources.Portable_Class dialog.Show(); } - public override void OnDestroyView() - { - Activity.FindViewById(Resource.Id.headerMore).Click -= PlaylistMore; - - if (!MainActivity.instance.Paused) - { - Activity.FindViewById(Resource.Id.playlistHeader).Visibility = ViewStates.Gone; - - MainActivity.instance.HideSearch(); - MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false); - MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false); - MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(true); - MainActivity.instance.SupportActionBar.SetDisplayShowTitleEnabled(false); - MainActivity.instance.FindViewById(Resource.Id.toolbarLogo).Visibility = ViewStates.Visible; - - MainActivity.instance.contentRefresh.Refresh -= OnRefresh; - Activity.FindViewById(Resource.Id.appbar).RemoveOnOffsetChangedListener(this); - - - if (YoutubeEngine.instances != null) - { - MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Visible; - Android.Support.V7.Widget.SearchView searchView = (Android.Support.V7.Widget.SearchView)MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView; - searchView.Focusable = false; - MainActivity.instance.menu.FindItem(Resource.Id.search).ExpandActionView(); - searchView.SetQuery(YoutubeEngine.instances[0].Query, false); - searchView.ClearFocus(); - - int selectedTab = 0; - for (int i = 0; i < YoutubeEngine.instances.Length; i++) - { - if (YoutubeEngine.instances[i].IsFocused) - selectedTab = i; - } - } - instance = null; - } - base.OnDestroyView(); - } - public static async Task CompleteItem(Song song, string YoutubeID) { if (song.YoutubeID == null) @@ -308,58 +364,6 @@ namespace Opus.Resources.Portable_Class return song; } - public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - View view = inflater.Inflate(Resource.Layout.RecyclerFragment, container, false); - ListView = view.FindViewById(Resource.Id.recycler); - ListView.SetLayoutManager(new Android.Support.V7.Widget.LinearLayoutManager(MainActivity.instance)); - ListView.SetAdapter(new PlaylistTrackAdapter(new List())); - ListView.ScrollChange += ListView_ScrollChange; - - PopulateList(); - CreateHeader(); - return view; - } - - private void ListView_ScrollChange(object sender, View.ScrollChangeEventArgs e) - { - if (((Android.Support.V7.Widget.LinearLayoutManager)ListView?.GetLayoutManager())?.FindLastVisibleItemPosition() == adapter?.ItemCount - 1) - LoadMore(); - } - - void CreateHeader() - { - if (useHeader) - { - Activity.FindViewById(Resource.Id.playlistHeader).Visibility = ViewStates.Visible; - ((AppBarLayout.LayoutParams)Activity.FindViewById(Resource.Id.collapsingToolbar).LayoutParameters).ScrollFlags = AppBarLayout.LayoutParams.ScrollFlagScroll | AppBarLayout.LayoutParams.ScrollFlagExitUntilCollapsed; - Activity.FindViewById(Resource.Id.appbar).AddOnOffsetChangedListener(this); - Activity.FindViewById(Resource.Id.headerTitle).Text = playlistName; - - if(!Activity.FindViewById(Resource.Id.headerPlay).HasOnClickListeners) - Activity.FindViewById(Resource.Id.headerPlay).Click += (sender, e0) => { PlayInOrder(0); }; - if(!Activity.FindViewById(Resource.Id.headerShuffle).HasOnClickListeners) - Activity.FindViewById(Resource.Id.headerShuffle).Click += (sender, e0) => { RandomPlay(); }; - if (!Activity.FindViewById(Resource.Id.headerMore).HasOnClickListeners) - Activity.FindViewById(Resource.Id.headerMore).Click += PlaylistMore; - - if (LocalID != 0 && thumnailURI == null) - { - Activity.FindViewById(Resource.Id.headerAuthor).Text = MainActivity.account == null ? "by me" : "by " + MainActivity.account.DisplayName; - } - else if (YoutubeID != null && YoutubeID != "") - { - Activity.FindViewById(Resource.Id.headerAuthor).Text = author; - Activity.FindViewById(Resource.Id.headerNumber).Text = count.ToString() + " " + GetString(Resource.String.songs); - if (count == -1) - Activity.FindViewById(Resource.Id.headerNumber).Text = "NaN" + " " + GetString(Resource.String.songs); - - Picasso.With(Android.App.Application.Context).Load(thumnailURI).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(Activity.FindViewById(Resource.Id.headerArt)); - } - Activity.FindViewById(Resource.Id.collapsingToolbar).RequestLayout(); - } - } - void RandomPlay() { if (instance.LocalID != 0) @@ -811,12 +815,15 @@ namespace Opus.Resources.Portable_Class base.OnResume(); instance = this; - if (!Activity.FindViewById(Resource.Id.headerPlay).HasOnClickListeners) - Activity.FindViewById(Resource.Id.headerPlay).Click += (sender, e0) => { instance.PlayInOrder(0); }; - if (!Activity.FindViewById(Resource.Id.headerShuffle).HasOnClickListeners) - Activity.FindViewById(Resource.Id.headerShuffle).Click += (sender, e0) => { RandomPlay(); }; - if (!Activity.FindViewById(Resource.Id.headerMore).HasOnClickListeners) - Activity.FindViewById(Resource.Id.headerMore).Click += PlaylistMore; + if(useHeader) + { + if (!Activity.FindViewById(Resource.Id.headerPlay).HasOnClickListeners) + Activity.FindViewById(Resource.Id.headerPlay).Click += (sender, e0) => { instance.PlayInOrder(0); }; + if (!Activity.FindViewById(Resource.Id.headerShuffle).HasOnClickListeners) + Activity.FindViewById(Resource.Id.headerShuffle).Click += (sender, e0) => { RandomPlay(); }; + if (!Activity.FindViewById(Resource.Id.headerMore).HasOnClickListeners) + Activity.FindViewById(Resource.Id.headerMore).Click += PlaylistMore; + } } public void OnOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) diff --git a/Opus/Resources/Resource.Designer.cs b/Opus/Resources/Resource.Designer.cs index 2dc3ea1..a543395 100644 --- a/Opus/Resources/Resource.Designer.cs +++ b/Opus/Resources/Resource.Designer.cs @@ -4982,11 +4982,11 @@ namespace Opus // aapt resource value: 0x7f0b0065 public const int META = 2131427429; - // aapt resource value: 0x7f0b01af - public const int PreferenceFragment = 2131427759; + // aapt resource value: 0x7f0b01b1 + public const int PreferenceFragment = 2131427761; - // aapt resource value: 0x7f0b01b0 - public const int PreferenceScreen = 2131427760; + // aapt resource value: 0x7f0b01b2 + public const int PreferenceScreen = 2131427762; // aapt resource value: 0x7f0b0066 public const int SHIFT = 2131427430; @@ -4994,14 +4994,14 @@ namespace Opus // aapt resource value: 0x7f0b0067 public const int SYM = 2131427431; - // aapt resource value: 0x7f0b01b2 - public const int accountPreference = 2131427762; + // aapt resource value: 0x7f0b01b4 + public const int accountPreference = 2131427764; // aapt resource value: 0x7f0b00fd public const int action = 2131427581; - // aapt resource value: 0x7f0b0179 - public const int action0 = 2131427705; + // aapt resource value: 0x7f0b017c + public const int action0 = 2131427708; // aapt resource value: 0x7f0b00bc public const int action_bar = 2131427516; @@ -5024,17 +5024,17 @@ namespace Opus // aapt resource value: 0x7f0b0098 public const int action_bar_title = 2131427480; - // aapt resource value: 0x7f0b0176 - public const int action_container = 2131427702; + // aapt resource value: 0x7f0b0179 + public const int action_container = 2131427705; // aapt resource value: 0x7f0b00bd public const int action_context_bar = 2131427517; - // aapt resource value: 0x7f0b017d - public const int action_divider = 2131427709; + // aapt resource value: 0x7f0b0180 + public const int action_divider = 2131427712; - // aapt resource value: 0x7f0b0177 - public const int action_image = 2131427703; + // aapt resource value: 0x7f0b017a + public const int action_image = 2131427706; // aapt resource value: 0x7f0b0010 public const int action_menu_divider = 2131427344; @@ -5051,11 +5051,11 @@ namespace Opus // aapt resource value: 0x7f0b009a public const int action_mode_close_button = 2131427482; - // aapt resource value: 0x7f0b0178 - public const int action_text = 2131427704; + // aapt resource value: 0x7f0b017b + public const int action_text = 2131427707; - // aapt resource value: 0x7f0b0186 - public const int actions = 2131427718; + // aapt resource value: 0x7f0b0189 + public const int actions = 2131427721; // aapt resource value: 0x7f0b009b public const int activity_chooser_view_content = 2131427483; @@ -5081,8 +5081,8 @@ namespace Opus // aapt resource value: 0x7f0b0057 public const int add = 2131427415; - // aapt resource value: 0x7f0b01d1 - public const int addToQueue = 2131427793; + // aapt resource value: 0x7f0b01d2 + public const int addToQueue = 2131427794; // aapt resource value: 0x7f0b00cc public const int added = 2131427532; @@ -5105,17 +5105,17 @@ namespace Opus // aapt resource value: 0x7f0b0068 public const int always = 2131427432; - // aapt resource value: 0x7f0b01ba - public const int apAlbum = 2131427770; - // aapt resource value: 0x7f0b01bc - public const int apTitle = 2131427772; + public const int apAlbum = 2131427772; + + // aapt resource value: 0x7f0b01be + public const int apTitle = 2131427774; // aapt resource value: 0x7f0b0119 public const int appbar = 2131427609; - // aapt resource value: 0x7f0b01a7 - public const int artist = 2131427751; + // aapt resource value: 0x7f0b01a9 + public const int artist = 2131427753; // aapt resource value: 0x7f0b008d public const int async = 2131427469; @@ -5126,8 +5126,8 @@ namespace Opus // aapt resource value: 0x7f0b004b public const int auto = 2131427403; - // aapt resource value: 0x7f0b01b9 - public const int autoplay = 2131427769; + // aapt resource value: 0x7f0b01bb + public const int autoplay = 2131427771; // aapt resource value: 0x7f0b011d public const int backToolbar = 2131427613; @@ -5141,8 +5141,8 @@ namespace Opus // aapt resource value: 0x7f0b005f public const int beginning = 2131427423; - // aapt resource value: 0x7f0b01b1 - public const int behavior = 2131427761; + // aapt resource value: 0x7f0b01b3 + public const int behavior = 2131427763; // aapt resource value: 0x7f0b008e public const int blocking = 2131427470; @@ -5153,14 +5153,14 @@ namespace Opus // aapt resource value: 0x7f0b006d public const int bottom = 2131427437; - // aapt resource value: 0x7f0b01b7 - public const int bottomDivider = 2131427767; + // aapt resource value: 0x7f0b01b9 + public const int bottomDivider = 2131427769; - // aapt resource value: 0x7f0b0135 - public const int bottomView = 2131427637; + // aapt resource value: 0x7f0b0138 + public const int bottomView = 2131427640; - // aapt resource value: 0x7f0b01cc - public const int browseLayout = 2131427788; + // aapt resource value: 0x7f0b01cd + public const int browseLayout = 2131427789; // aapt resource value: 0x7f0b00d7 public const int browseList = 2131427543; @@ -5198,14 +5198,14 @@ namespace Opus // aapt resource value: 0x7f0b00ee public const int button_play_pause_toggle = 2131427566; - // aapt resource value: 0x7f0b018d - public const int buttonsRight = 2131427725; + // aapt resource value: 0x7f0b0190 + public const int buttonsRight = 2131427728; - // aapt resource value: 0x7f0b017a - public const int cancel_action = 2131427706; + // aapt resource value: 0x7f0b017d + public const int cancel_action = 2131427709; - // aapt resource value: 0x7f0b018e - public const int castButton = 2131427726; + // aapt resource value: 0x7f0b0191 + public const int castButton = 2131427729; // aapt resource value: 0x7f0b0000 public const int cast_button_type_closed_caption = 2131427328; @@ -5264,8 +5264,8 @@ namespace Opus // aapt resource value: 0x7f0b00b5 public const int checkbox = 2131427509; - // aapt resource value: 0x7f0b0182 - public const int chronometer = 2131427714; + // aapt resource value: 0x7f0b0185 + public const int chronometer = 2131427717; // aapt resource value: 0x7f0b0089 public const int clip_horizontal = 2131427465; @@ -5291,17 +5291,17 @@ namespace Opus // aapt resource value: 0x7f0b00b1 public const int content = 2131427505; - // aapt resource value: 0x7f0b012e - public const int contentLayout = 2131427630; + // aapt resource value: 0x7f0b0131 + public const int contentLayout = 2131427633; // aapt resource value: 0x7f0b00a4 public const int contentPanel = 2131427492; - // aapt resource value: 0x7f0b0133 - public const int contentRefresh = 2131427635; + // aapt resource value: 0x7f0b0136 + public const int contentRefresh = 2131427638; - // aapt resource value: 0x7f0b0134 - public const int contentView = 2131427636; + // aapt resource value: 0x7f0b0137 + public const int contentView = 2131427639; // aapt resource value: 0x7f0b00dc public const int controllers = 2131427548; @@ -5324,8 +5324,8 @@ namespace Opus // aapt resource value: 0x7f0b009e public const int default_activity_button = 2131427486; - // aapt resource value: 0x7f0b01ce - public const int delete = 2131427790; + // aapt resource value: 0x7f0b01cf + public const int delete = 2131427791; // aapt resource value: 0x7f0b010e public const int design_bottom_sheet = 2131427598; @@ -5348,20 +5348,20 @@ namespace Opus // aapt resource value: 0x7f0b00d0 public const int divider = 2131427536; - // aapt resource value: 0x7f0b018f - public const int downButton = 2131427727; + // aapt resource value: 0x7f0b0192 + public const int downButton = 2131427730; - // aapt resource value: 0x7f0b01d7 - public const int download = 2131427799; + // aapt resource value: 0x7f0b01d8 + public const int download = 2131427800; - // aapt resource value: 0x7f0b01cf - public const int downloadMDfromYT = 2131427791; + // aapt resource value: 0x7f0b01d0 + public const int downloadMDfromYT = 2131427792; // aapt resource value: 0x7f0b0116 public const int downloadStatus = 2131427606; - // aapt resource value: 0x7f0b01a8 - public const int edit = 2131427752; + // aapt resource value: 0x7f0b01aa + public const int edit = 2131427754; // aapt resource value: 0x7f0b00be public const int edit_query = 2131427518; @@ -5375,8 +5375,8 @@ namespace Opus // aapt resource value: 0x7f0b0060 public const int end = 2131427424; - // aapt resource value: 0x7f0b0188 - public const int end_padder = 2131427720; + // aapt resource value: 0x7f0b018b + public const int end_padder = 2131427723; // aapt resource value: 0x7f0b00e8 public const int end_text = 2131427560; @@ -5480,8 +5480,8 @@ namespace Opus // aapt resource value: 0x7f0b0087 public const int filled = 2131427463; - // aapt resource value: 0x7f0b01d4 - public const int filter = 2131427796; + // aapt resource value: 0x7f0b01d5 + public const int filter = 2131427797; // aapt resource value: 0x7f0b0092 public const int fit = 2131427474; @@ -5507,8 +5507,8 @@ namespace Opus // aapt resource value: 0x7f0b008f public const int forever = 2131427471; - // aapt resource value: 0x7f0b01d8 - public const int fork = 2131427800; + // aapt resource value: 0x7f0b01d9 + public const int fork = 2131427801; // aapt resource value: 0x7f0b0017 public const int ghost_view = 2131427351; @@ -5516,26 +5516,26 @@ namespace Opus // aapt resource value: 0x7f0b00b0 public const int group_divider = 2131427504; - // aapt resource value: 0x7f0b019e - public const int headerArt = 2131427742; - - // aapt resource value: 0x7f0b01a0 - public const int headerAuthor = 2131427744; - - // aapt resource value: 0x7f0b01a4 - public const int headerMore = 2131427748; - // aapt resource value: 0x7f0b01a1 - public const int headerNumber = 2131427745; - - // aapt resource value: 0x7f0b01a2 - public const int headerPlay = 2131427746; + public const int headerArt = 2131427745; // aapt resource value: 0x7f0b01a3 - public const int headerShuffle = 2131427747; + public const int headerAuthor = 2131427747; - // aapt resource value: 0x7f0b019f - public const int headerTitle = 2131427743; + // aapt resource value: 0x7f0b01a7 + public const int headerMore = 2131427751; + + // aapt resource value: 0x7f0b01a4 + public const int headerNumber = 2131427748; + + // aapt resource value: 0x7f0b01a5 + public const int headerPlay = 2131427749; + + // aapt resource value: 0x7f0b01a6 + public const int headerShuffle = 2131427750; + + // aapt resource value: 0x7f0b01a2 + public const int headerTitle = 2131427746; // aapt resource value: 0x7f0b0012 public const int home = 2131427346; @@ -5546,14 +5546,14 @@ namespace Opus // aapt resource value: 0x7f0b00a0 public const int icon = 2131427488; - // aapt resource value: 0x7f0b01c5 - public const int icon1 = 2131427781; + // aapt resource value: 0x7f0b01c6 + public const int icon1 = 2131427782; // aapt resource value: 0x7f0b0126 public const int icon_frame = 2131427622; - // aapt resource value: 0x7f0b0187 - public const int icon_group = 2131427719; + // aapt resource value: 0x7f0b018a + public const int icon_group = 2131427722; // aapt resource value: 0x7f0b0048 public const int icon_only = 2131427400; @@ -5567,14 +5567,14 @@ namespace Opus // aapt resource value: 0x7f0b009d public const int image = 2131427485; - // aapt resource value: 0x7f0b0183 - public const int info = 2131427715; + // aapt resource value: 0x7f0b0186 + public const int info = 2131427718; - // aapt resource value: 0x7f0b019d - public const int infoPanel = 2131427741; + // aapt resource value: 0x7f0b01a0 + public const int infoPanel = 2131427744; - // aapt resource value: 0x7f0b01b5 - public const int isLive = 2131427765; + // aapt resource value: 0x7f0b01b7 + public const int isLive = 2131427767; // aapt resource value: 0x7f0b0090 public const int italic = 2131427472; @@ -5588,8 +5588,8 @@ namespace Opus // aapt resource value: 0x7f0b010a public const int largeLabel = 2131427594; - // aapt resource value: 0x7f0b0196 - public const int lastButton = 2131427734; + // aapt resource value: 0x7f0b0199 + public const int lastButton = 2131427737; // aapt resource value: 0x7f0b007c public const int left = 2131427452; @@ -5603,8 +5603,8 @@ namespace Opus // aapt resource value: 0x7f0b0029 public const int line1 = 2131427369; - // aapt resource value: 0x7f0b01c8 - public const int line2 = 2131427784; + // aapt resource value: 0x7f0b01c9 + public const int line2 = 2131427785; // aapt resource value: 0x7f0b002a public const int line3 = 2131427370; @@ -5633,23 +5633,23 @@ namespace Opus // aapt resource value: 0x7f0b00e4 public const int loading_indicator = 2131427556; - // aapt resource value: 0x7f0b012d - public const int logButton = 2131427629; + // aapt resource value: 0x7f0b0130 + public const int logButton = 2131427632; // aapt resource value: 0x7f0b0100 public const int logo = 2131427584; - // aapt resource value: 0x7f0b01ca - public const int masked = 2131427786; + // aapt resource value: 0x7f0b01cb + public const int masked = 2131427787; - // aapt resource value: 0x7f0b01c3 - public const int maxValue = 2131427779; + // aapt resource value: 0x7f0b01c4 + public const int maxValue = 2131427780; - // aapt resource value: 0x7f0b017c - public const int media_actions = 2131427708; + // aapt resource value: 0x7f0b017f + public const int media_actions = 2131427711; - // aapt resource value: 0x7f0b01d5 - public const int media_route_menu_item = 2131427797; + // aapt resource value: 0x7f0b01d6 + public const int media_route_menu_item = 2131427798; // aapt resource value: 0x7f0b00cb public const int message = 2131427531; @@ -5678,8 +5678,8 @@ namespace Opus // aapt resource value: 0x7f0b0061 public const int middle = 2131427425; - // aapt resource value: 0x7f0b01c2 - public const int minValue = 2131427778; + // aapt resource value: 0x7f0b01c3 + public const int minValue = 2131427779; // aapt resource value: 0x7f0b0081 public const int mini = 2131427457; @@ -5696,146 +5696,146 @@ namespace Opus // aapt resource value: 0x7f0b0115 public const int more = 2131427605; - // aapt resource value: 0x7f0b0194 - public const int moreButton = 2131427732; - - // aapt resource value: 0x7f0b0161 - public const int mr_art = 2131427681; - - // aapt resource value: 0x7f0b0152 - public const int mr_cast_checkbox = 2131427666; - - // aapt resource value: 0x7f0b014b - public const int mr_cast_close_button = 2131427659; - - // aapt resource value: 0x7f0b0146 - public const int mr_cast_group_icon = 2131427654; - - // aapt resource value: 0x7f0b0147 - public const int mr_cast_group_name = 2131427655; - - // aapt resource value: 0x7f0b0145 - public const int mr_cast_list = 2131427653; - - // aapt resource value: 0x7f0b014a - public const int mr_cast_meta = 2131427658; - - // aapt resource value: 0x7f0b014c - public const int mr_cast_meta_art = 2131427660; - - // aapt resource value: 0x7f0b014e - public const int mr_cast_meta_subtitle = 2131427662; - - // aapt resource value: 0x7f0b014d - public const int mr_cast_meta_title = 2131427661; - - // aapt resource value: 0x7f0b0150 - public const int mr_cast_route_icon = 2131427664; - - // aapt resource value: 0x7f0b0151 - public const int mr_cast_route_name = 2131427665; - - // aapt resource value: 0x7f0b014f - public const int mr_cast_stop_button = 2131427663; - - // aapt resource value: 0x7f0b0153 - public const int mr_cast_volume_layout = 2131427667; - - // aapt resource value: 0x7f0b0154 - public const int mr_cast_volume_slider = 2131427668; - - // aapt resource value: 0x7f0b0156 - public const int mr_chooser_list = 2131427670; - - // aapt resource value: 0x7f0b0159 - public const int mr_chooser_route_desc = 2131427673; - - // aapt resource value: 0x7f0b0157 - public const int mr_chooser_route_icon = 2131427671; - - // aapt resource value: 0x7f0b0158 - public const int mr_chooser_route_name = 2131427672; - - // aapt resource value: 0x7f0b0155 - public const int mr_chooser_title = 2131427669; - - // aapt resource value: 0x7f0b015e - public const int mr_close = 2131427678; + // aapt resource value: 0x7f0b0197 + public const int moreButton = 2131427735; // aapt resource value: 0x7f0b0164 - public const int mr_control_divider = 2131427684; + public const int mr_art = 2131427684; - // aapt resource value: 0x7f0b016f - public const int mr_control_playback_ctrl = 2131427695; + // aapt resource value: 0x7f0b0155 + public const int mr_cast_checkbox = 2131427669; - // aapt resource value: 0x7f0b0172 - public const int mr_control_subtitle = 2131427698; - - // aapt resource value: 0x7f0b0171 - public const int mr_control_title = 2131427697; - - // aapt resource value: 0x7f0b0170 - public const int mr_control_title_container = 2131427696; - - // aapt resource value: 0x7f0b015f - public const int mr_custom_control = 2131427679; - - // aapt resource value: 0x7f0b0160 - public const int mr_default_control = 2131427680; - - // aapt resource value: 0x7f0b015b - public const int mr_dialog_area = 2131427675; - - // aapt resource value: 0x7f0b016a - public const int mr_dialog_header_name = 2131427690; - - // aapt resource value: 0x7f0b015a - public const int mr_expandable_area = 2131427674; - - // aapt resource value: 0x7f0b0173 - public const int mr_group_expand_collapse = 2131427699; - - // aapt resource value: 0x7f0b0148 - public const int mr_group_volume_route_name = 2131427656; + // aapt resource value: 0x7f0b014e + public const int mr_cast_close_button = 2131427662; // aapt resource value: 0x7f0b0149 - public const int mr_group_volume_slider = 2131427657; + public const int mr_cast_group_icon = 2131427657; - // aapt resource value: 0x7f0b0162 - public const int mr_media_main_control = 2131427682; + // aapt resource value: 0x7f0b014a + public const int mr_cast_group_name = 2131427658; - // aapt resource value: 0x7f0b015d - public const int mr_name = 2131427677; + // aapt resource value: 0x7f0b0148 + public const int mr_cast_list = 2131427656; - // aapt resource value: 0x7f0b016b - public const int mr_picker_close_button = 2131427691; + // aapt resource value: 0x7f0b014d + public const int mr_cast_meta = 2131427661; - // aapt resource value: 0x7f0b016c - public const int mr_picker_list = 2131427692; + // aapt resource value: 0x7f0b014f + public const int mr_cast_meta_art = 2131427663; - // aapt resource value: 0x7f0b016d - public const int mr_picker_route_icon = 2131427693; + // aapt resource value: 0x7f0b0151 + public const int mr_cast_meta_subtitle = 2131427665; - // aapt resource value: 0x7f0b016e - public const int mr_picker_route_name = 2131427694; + // aapt resource value: 0x7f0b0150 + public const int mr_cast_meta_title = 2131427664; - // aapt resource value: 0x7f0b0163 - public const int mr_playback_control = 2131427683; + // aapt resource value: 0x7f0b0153 + public const int mr_cast_route_icon = 2131427667; + + // aapt resource value: 0x7f0b0154 + public const int mr_cast_route_name = 2131427668; + + // aapt resource value: 0x7f0b0152 + public const int mr_cast_stop_button = 2131427666; + + // aapt resource value: 0x7f0b0156 + public const int mr_cast_volume_layout = 2131427670; + + // aapt resource value: 0x7f0b0157 + public const int mr_cast_volume_slider = 2131427671; + + // aapt resource value: 0x7f0b0159 + public const int mr_chooser_list = 2131427673; // aapt resource value: 0x7f0b015c - public const int mr_title_bar = 2131427676; + public const int mr_chooser_route_desc = 2131427676; + + // aapt resource value: 0x7f0b015a + public const int mr_chooser_route_icon = 2131427674; + + // aapt resource value: 0x7f0b015b + public const int mr_chooser_route_name = 2131427675; + + // aapt resource value: 0x7f0b0158 + public const int mr_chooser_title = 2131427672; + + // aapt resource value: 0x7f0b0161 + public const int mr_close = 2131427681; + + // aapt resource value: 0x7f0b0167 + public const int mr_control_divider = 2131427687; + + // aapt resource value: 0x7f0b0172 + public const int mr_control_playback_ctrl = 2131427698; + + // aapt resource value: 0x7f0b0175 + public const int mr_control_subtitle = 2131427701; + + // aapt resource value: 0x7f0b0174 + public const int mr_control_title = 2131427700; + + // aapt resource value: 0x7f0b0173 + public const int mr_control_title_container = 2131427699; + + // aapt resource value: 0x7f0b0162 + public const int mr_custom_control = 2131427682; + + // aapt resource value: 0x7f0b0163 + public const int mr_default_control = 2131427683; + + // aapt resource value: 0x7f0b015e + public const int mr_dialog_area = 2131427678; + + // aapt resource value: 0x7f0b016d + public const int mr_dialog_header_name = 2131427693; + + // aapt resource value: 0x7f0b015d + public const int mr_expandable_area = 2131427677; + + // aapt resource value: 0x7f0b0176 + public const int mr_group_expand_collapse = 2131427702; + + // aapt resource value: 0x7f0b014b + public const int mr_group_volume_route_name = 2131427659; + + // aapt resource value: 0x7f0b014c + public const int mr_group_volume_slider = 2131427660; // aapt resource value: 0x7f0b0165 - public const int mr_volume_control = 2131427685; + public const int mr_media_main_control = 2131427685; + + // aapt resource value: 0x7f0b0160 + public const int mr_name = 2131427680; + + // aapt resource value: 0x7f0b016e + public const int mr_picker_close_button = 2131427694; + + // aapt resource value: 0x7f0b016f + public const int mr_picker_list = 2131427695; + + // aapt resource value: 0x7f0b0170 + public const int mr_picker_route_icon = 2131427696; + + // aapt resource value: 0x7f0b0171 + public const int mr_picker_route_name = 2131427697; // aapt resource value: 0x7f0b0166 - public const int mr_volume_group_list = 2131427686; + public const int mr_playback_control = 2131427686; + + // aapt resource value: 0x7f0b015f + public const int mr_title_bar = 2131427679; // aapt resource value: 0x7f0b0168 - public const int mr_volume_item_icon = 2131427688; + public const int mr_volume_control = 2131427688; // aapt resource value: 0x7f0b0169 - public const int mr_volume_slider = 2131427689; + public const int mr_volume_group_list = 2131427689; + + // aapt resource value: 0x7f0b016b + public const int mr_volume_item_icon = 2131427691; + + // aapt resource value: 0x7f0b016c + public const int mr_volume_slider = 2131427692; // aapt resource value: 0x7f0b0021 public const int mtrl_child_content_container = 2131427361; @@ -5846,8 +5846,8 @@ namespace Opus // aapt resource value: 0x7f0b0058 public const int multiply = 2131427416; - // aapt resource value: 0x7f0b01cb - public const int musicLayout = 2131427787; + // aapt resource value: 0x7f0b01cc + public const int musicLayout = 2131427788; // aapt resource value: 0x7f0b00ff public const int name = 2131427583; @@ -5858,11 +5858,11 @@ namespace Opus // aapt resource value: 0x7f0b006b public const int never = 2131427435; - // aapt resource value: 0x7f0b0199 - public const int nextButton = 2131427737; + // aapt resource value: 0x7f0b019c + public const int nextButton = 2131427740; - // aapt resource value: 0x7f0b0175 - public const int noPlaylist = 2131427701; + // aapt resource value: 0x7f0b0178 + public const int noPlaylist = 2131427704; // aapt resource value: 0x7f0b0047 public const int none = 2131427399; @@ -5870,17 +5870,17 @@ namespace Opus // aapt resource value: 0x7f0b004f public const int normal = 2131427407; - // aapt resource value: 0x7f0b0185 - public const int notification_background = 2131427717; + // aapt resource value: 0x7f0b0188 + public const int notification_background = 2131427720; - // aapt resource value: 0x7f0b017f - public const int notification_main_column = 2131427711; + // aapt resource value: 0x7f0b0182 + public const int notification_main_column = 2131427714; - // aapt resource value: 0x7f0b017e - public const int notification_main_column_container = 2131427710; + // aapt resource value: 0x7f0b0181 + public const int notification_main_column_container = 2131427713; - // aapt resource value: 0x7f0b0189 - public const int numberPicker = 2131427721; + // aapt resource value: 0x7f0b018c + public const int numberPicker = 2131427724; // aapt resource value: 0x7f0b0091 public const int one = 2131427473; @@ -5888,8 +5888,8 @@ namespace Opus // aapt resource value: 0x7f0b0088 public const int outline = 2131427464; - // aapt resource value: 0x7f0b01c7 - public const int pager = 2131427783; + // aapt resource value: 0x7f0b01c8 + public const int pager = 2131427784; // aapt resource value: 0x7f0b007f public const int parallax = 2131427455; @@ -5903,38 +5903,41 @@ namespace Opus // aapt resource value: 0x7f0b0080 public const int pin = 2131427456; - // aapt resource value: 0x7f0b0197 - public const int playButton = 2131427735; + // aapt resource value: 0x7f0b012e + public const int play = 2131427630; - // aapt resource value: 0x7f0b018c - public const int playerAlbum = 2131427724; + // aapt resource value: 0x7f0b019a + public const int playButton = 2131427738; - // aapt resource value: 0x7f0b0191 - public const int playerArtist = 2131427729; + // aapt resource value: 0x7f0b018f + public const int playerAlbum = 2131427727; - // aapt resource value: 0x7f0b0198 - public const int playerBuffer = 2131427736; + // aapt resource value: 0x7f0b0194 + public const int playerArtist = 2131427732; - // aapt resource value: 0x7f0b0143 - public const int playerContainer = 2131427651; + // aapt resource value: 0x7f0b019b + public const int playerBuffer = 2131427739; - // aapt resource value: 0x7f0b0136 - public const int playerSheet = 2131427638; + // aapt resource value: 0x7f0b0146 + public const int playerContainer = 2131427654; - // aapt resource value: 0x7f0b0190 - public const int playerTitle = 2131427728; + // aapt resource value: 0x7f0b0139 + public const int playerSheet = 2131427641; - // aapt resource value: 0x7f0b018b - public const int playerView = 2131427723; + // aapt resource value: 0x7f0b0193 + public const int playerTitle = 2131427731; - // aapt resource value: 0x7f0b0137 - public const int playersHolder = 2131427639; + // aapt resource value: 0x7f0b018e + public const int playerView = 2131427726; - // aapt resource value: 0x7f0b012f - public const int playlistHeader = 2131427631; + // aapt resource value: 0x7f0b013a + public const int playersHolder = 2131427642; - // aapt resource value: 0x7f0b01cd - public const int playlistLayout = 2131427789; + // aapt resource value: 0x7f0b0132 + public const int playlistHeader = 2131427634; + + // aapt resource value: 0x7f0b01ce + public const int playlistLayout = 2131427790; // aapt resource value: 0x7f0b0108 public const int playlistLocation = 2131427592; @@ -5942,8 +5945,8 @@ namespace Opus // aapt resource value: 0x7f0b0107 public const int playlistName = 2131427591; - // aapt resource value: 0x7f0b01bf - public const int playlistURL = 2131427775; + // aapt resource value: 0x7f0b01c0 + public const int playlistURL = 2131427776; // aapt resource value: 0x7f0b0118 public const int progress = 2131427608; @@ -5957,20 +5960,20 @@ namespace Opus // aapt resource value: 0x7f0b0014 public const int progress_horizontal = 2131427348; - // aapt resource value: 0x7f0b019c - public const int queue = 2131427740; + // aapt resource value: 0x7f0b019f + public const int queue = 2131427743; - // aapt resource value: 0x7f0b019b - public const int queueBackground = 2131427739; + // aapt resource value: 0x7f0b019e + public const int queueBackground = 2131427742; - // aapt resource value: 0x7f0b018a - public const int queueDrawer = 2131427722; + // aapt resource value: 0x7f0b018d + public const int queueDrawer = 2131427725; - // aapt resource value: 0x7f0b019a - public const int queueParent = 2131427738; + // aapt resource value: 0x7f0b019d + public const int queueParent = 2131427741; - // aapt resource value: 0x7f0b01b8 - public const int queueSwitch = 2131427768; + // aapt resource value: 0x7f0b01ba + public const int queueSwitch = 2131427770; // aapt resource value: 0x7f0b00b6 public const int radio = 2131427510; @@ -5978,38 +5981,38 @@ namespace Opus // aapt resource value: 0x7f0b00cf public const int recycler = 2131427535; - // aapt resource value: 0x7f0b01ab - public const int recycler_view = 2131427755; + // aapt resource value: 0x7f0b01ad + public const int recycler_view = 2131427757; - // aapt resource value: 0x7f0b01c6 - public const int refine = 2131427782; + // aapt resource value: 0x7f0b01c7 + public const int refine = 2131427783; - // aapt resource value: 0x7f0b01d2 - public const int rename = 2131427794; + // aapt resource value: 0x7f0b01d3 + public const int rename = 2131427795; - // aapt resource value: 0x7f0b01c4 - public const int reorder = 2131427780; + // aapt resource value: 0x7f0b01c5 + public const int reorder = 2131427781; - // aapt resource value: 0x7f0b01be - public const int repeat = 2131427774; + // aapt resource value: 0x7f0b01bf + public const int repeat = 2131427775; // aapt resource value: 0x7f0b007d public const int right = 2131427453; - // aapt resource value: 0x7f0b01a6 - public const int rightButtons = 2131427750; + // aapt resource value: 0x7f0b012d + public const int rightButtons = 2131427629; - // aapt resource value: 0x7f0b01bb - public const int rightIcon = 2131427771; + // aapt resource value: 0x7f0b01bd + public const int rightIcon = 2131427773; - // aapt resource value: 0x7f0b0184 - public const int right_icon = 2131427716; + // aapt resource value: 0x7f0b0187 + public const int right_icon = 2131427719; - // aapt resource value: 0x7f0b0180 - public const int right_side = 2131427712; + // aapt resource value: 0x7f0b0183 + public const int right_side = 2131427715; - // aapt resource value: 0x7f0b01d3 - public const int saveAsPlaylist = 2131427795; + // aapt resource value: 0x7f0b01d4 + public const int saveAsPlaylist = 2131427796; // aapt resource value: 0x7f0b0019 public const int save_image_matrix = 2131427353; @@ -6038,11 +6041,11 @@ namespace Opus // aapt resource value: 0x7f0b0085 public const int scrollable = 2131427461; - // aapt resource value: 0x7f0b01c0 - public const int search = 2131427776; - // aapt resource value: 0x7f0b01c1 - public const int searchSuggestions = 2131427777; + public const int search = 2131427777; + + // aapt resource value: 0x7f0b01c2 + public const int searchSuggestions = 2131427778; // aapt resource value: 0x7f0b00c0 public const int search_badge = 2131427520; @@ -6080,11 +6083,11 @@ namespace Opus // aapt resource value: 0x7f0b00e6 public const int seek_bar_controls = 2131427558; - // aapt resource value: 0x7f0b01ac - public const int seekbar = 2131427756; + // aapt resource value: 0x7f0b01ae + public const int seekbar = 2131427758; - // aapt resource value: 0x7f0b01ad - public const int seekbar_value = 2131427757; + // aapt resource value: 0x7f0b01af + public const int seekbar_value = 2131427759; // aapt resource value: 0x7f0b00ca public const int select_dialog_listview = 2131427530; @@ -6092,8 +6095,8 @@ namespace Opus // aapt resource value: 0x7f0b0077 public const int selected = 2131427447; - // aapt resource value: 0x7f0b01d6 - public const int settings = 2131427798; + // aapt resource value: 0x7f0b01d7 + public const int settings = 2131427799; // aapt resource value: 0x7f0b00b2 public const int shortcut = 2131427506; @@ -6104,23 +6107,23 @@ namespace Opus // aapt resource value: 0x7f0b0054 public const int showHome = 2131427412; - // aapt resource value: 0x7f0b0192 - public const int showQueue = 2131427730; + // aapt resource value: 0x7f0b0195 + public const int showQueue = 2131427733; // aapt resource value: 0x7f0b0055 public const int showTitle = 2131427413; - // aapt resource value: 0x7f0b01bd - public const int shuffle = 2131427773; + // aapt resource value: 0x7f0b012f + public const int shuffle = 2131427631; // aapt resource value: 0x7f0b0109 public const int smallLabel = 2131427593; - // aapt resource value: 0x7f0b0138 - public const int smallPlayer = 2131427640; + // aapt resource value: 0x7f0b013b + public const int smallPlayer = 2131427643; - // aapt resource value: 0x7f0b0144 - public const int snackBar = 2131427652; + // aapt resource value: 0x7f0b0147 + public const int snackBar = 2131427655; // aapt resource value: 0x7f0b0023 public const int snackbar_action = 2131427363; @@ -6134,47 +6137,47 @@ namespace Opus // aapt resource value: 0x7f0b0074 public const int snapMargins = 2131427444; - // aapt resource value: 0x7f0b0195 - public const int songTimer = 2131427733; + // aapt resource value: 0x7f0b0198 + public const int songTimer = 2131427736; - // aapt resource value: 0x7f0b01b4 - public const int songView = 2131427764; - - // aapt resource value: 0x7f0b013b - public const int spArt = 2131427643; - - // aapt resource value: 0x7f0b013d - public const int spArtist = 2131427645; - - // aapt resource value: 0x7f0b0140 - public const int spBuffer = 2131427648; - - // aapt resource value: 0x7f0b013a - public const int spContainer = 2131427642; - - // aapt resource value: 0x7f0b0141 - public const int spLast = 2131427649; + // aapt resource value: 0x7f0b01b6 + public const int songView = 2131427766; // aapt resource value: 0x7f0b013e - public const int spNext = 2131427646; + public const int spArt = 2131427646; - // aapt resource value: 0x7f0b013f - public const int spPlay = 2131427647; + // aapt resource value: 0x7f0b0140 + public const int spArtist = 2131427648; + + // aapt resource value: 0x7f0b0143 + public const int spBuffer = 2131427651; + + // aapt resource value: 0x7f0b013d + public const int spContainer = 2131427645; + + // aapt resource value: 0x7f0b0144 + public const int spLast = 2131427652; + + // aapt resource value: 0x7f0b0141 + public const int spNext = 2131427649; // aapt resource value: 0x7f0b0142 - public const int spProgress = 2131427650; + public const int spPlay = 2131427650; - // aapt resource value: 0x7f0b0139 - public const int spReveal = 2131427641; + // aapt resource value: 0x7f0b0145 + public const int spProgress = 2131427653; // aapt resource value: 0x7f0b013c - public const int spTitle = 2131427644; + public const int spReveal = 2131427644; + + // aapt resource value: 0x7f0b013f + public const int spTitle = 2131427647; // aapt resource value: 0x7f0b00a2 public const int spacer = 2131427490; - // aapt resource value: 0x7f0b01aa - public const int spinner = 2131427754; + // aapt resource value: 0x7f0b01ac + public const int spinner = 2131427756; // aapt resource value: 0x7f0b0015 public const int split_action_bar = 2131427349; @@ -6200,8 +6203,8 @@ namespace Opus // aapt resource value: 0x7f0b00cd public const int status = 2131427533; - // aapt resource value: 0x7f0b017b - public const int status_bar_latest_event_content = 2131427707; + // aapt resource value: 0x7f0b017e + public const int status_bar_latest_event_content = 2131427710; // aapt resource value: 0x7f0b00e5 public const int status_text = 2131427557; @@ -6221,11 +6224,11 @@ namespace Opus // aapt resource value: 0x7f0b0096 public const int surface_view = 2131427478; - // aapt resource value: 0x7f0b01ae - public const int switchWidget = 2131427758; + // aapt resource value: 0x7f0b01b0 + public const int switchWidget = 2131427760; - // aapt resource value: 0x7f0b01a9 - public const int sync = 2131427753; + // aapt resource value: 0x7f0b01ab + public const int sync = 2131427755; // aapt resource value: 0x7f0b00ce public const int syncLoading = 2131427534; @@ -6236,8 +6239,8 @@ namespace Opus // aapt resource value: 0x7f0b00f9 public const int tab_host = 2131427577; - // aapt resource value: 0x7f0b0131 - public const int tabs = 2131427633; + // aapt resource value: 0x7f0b0134 + public const int tabs = 2131427636; // aapt resource value: 0x7f0b002b public const int tag_transition_group = 2131427371; @@ -6251,14 +6254,14 @@ namespace Opus // aapt resource value: 0x7f0b002e public const int text = 2131427374; - // aapt resource value: 0x7f0b0174 - public const int text1 = 2131427700; + // aapt resource value: 0x7f0b0177 + public const int text1 = 2131427703; // aapt resource value: 0x7f0b002f public const int text2 = 2131427375; - // aapt resource value: 0x7f0b01a5 - public const int textLayout = 2131427749; + // aapt resource value: 0x7f0b01a8 + public const int textLayout = 2131427752; // aapt resource value: 0x7f0b00a8 public const int textSpacerNoButtons = 2131427496; @@ -6290,11 +6293,11 @@ namespace Opus // aapt resource value: 0x7f0b0097 public const int texture_view = 2131427479; - // aapt resource value: 0x7f0b0181 - public const int time = 2131427713; + // aapt resource value: 0x7f0b0184 + public const int time = 2131427716; - // aapt resource value: 0x7f0b0193 - public const int timer = 2131427731; + // aapt resource value: 0x7f0b0196 + public const int timer = 2131427734; // aapt resource value: 0x7f0b0030 public const int title = 2131427376; @@ -6311,14 +6314,14 @@ namespace Opus // aapt resource value: 0x7f0b00db public const int toolbar = 2131427547; - // aapt resource value: 0x7f0b0130 - public const int toolbarLogo = 2131427632; + // aapt resource value: 0x7f0b0133 + public const int toolbarLogo = 2131427635; // aapt resource value: 0x7f0b006e public const int top = 2131427438; - // aapt resource value: 0x7f0b01b3 - public const int topDivider = 2131427763; + // aapt resource value: 0x7f0b01b5 + public const int topDivider = 2131427765; // aapt resource value: 0x7f0b00ac public const int topPanel = 2131427500; @@ -6341,8 +6344,8 @@ namespace Opus // aapt resource value: 0x7f0b0020 public const int transition_transform = 2131427360; - // aapt resource value: 0x7f0b01d0 - public const int undoChange = 2131427792; + // aapt resource value: 0x7f0b01d1 + public const int undoChange = 2131427793; // aapt resource value: 0x7f0b005d public const int uniform = 2131427421; @@ -6362,11 +6365,11 @@ namespace Opus // aapt resource value: 0x7f0b0028 public const int view_offset_helper = 2131427368; - // aapt resource value: 0x7f0b01c9 - public const int visible = 2131427785; + // aapt resource value: 0x7f0b01ca + public const int visible = 2131427786; - // aapt resource value: 0x7f0b0167 - public const int volume_item_container = 2131427687; + // aapt resource value: 0x7f0b016a + public const int volume_item_container = 2131427690; // aapt resource value: 0x7f0b004a public const int wide = 2131427402; @@ -6377,11 +6380,11 @@ namespace Opus // aapt resource value: 0x7f0b005e public const int wrap_content = 2131427422; - // aapt resource value: 0x7f0b01b6 - public const int youtubeIcon = 2131427766; + // aapt resource value: 0x7f0b01b8 + public const int youtubeIcon = 2131427768; - // aapt resource value: 0x7f0b0132 - public const int ytProgress = 2131427634; + // aapt resource value: 0x7f0b0135 + public const int ytProgress = 2131427637; // aapt resource value: 0x7f0b0095 public const int zoom = 2131427477; @@ -6726,265 +6729,268 @@ namespace Opus public const int HomeChannels = 2130903112; // aapt resource value: 0x7f030049 - public const int HomePlaylists = 2130903113; + public const int HomePlaylist = 2130903113; // aapt resource value: 0x7f03004a - public const int LineSong = 2130903114; + public const int HomePlaylists = 2130903114; // aapt resource value: 0x7f03004b - public const int LineSongs = 2130903115; + public const int LineSong = 2130903115; // aapt resource value: 0x7f03004c - public const int LogOutButton = 2130903116; + public const int LineSongs = 2130903116; // aapt resource value: 0x7f03004d - public const int Main = 2130903117; + public const int LogOutButton = 2130903117; // aapt resource value: 0x7f03004e - public const int mr_cast_dialog = 2130903118; + public const int Main = 2130903118; // aapt resource value: 0x7f03004f - public const int mr_cast_group_item = 2130903119; + public const int mr_cast_dialog = 2130903119; // aapt resource value: 0x7f030050 - public const int mr_cast_group_volume_item = 2130903120; + public const int mr_cast_group_item = 2130903120; // aapt resource value: 0x7f030051 - public const int mr_cast_media_metadata = 2130903121; + public const int mr_cast_group_volume_item = 2130903121; // aapt resource value: 0x7f030052 - public const int mr_cast_route_item = 2130903122; + public const int mr_cast_media_metadata = 2130903122; // aapt resource value: 0x7f030053 - public const int mr_chooser_dialog = 2130903123; + public const int mr_cast_route_item = 2130903123; // aapt resource value: 0x7f030054 - public const int mr_chooser_list_item = 2130903124; + public const int mr_chooser_dialog = 2130903124; // aapt resource value: 0x7f030055 - public const int mr_controller_material_dialog_b = 2130903125; + public const int mr_chooser_list_item = 2130903125; // aapt resource value: 0x7f030056 - public const int mr_controller_volume_item = 2130903126; + public const int mr_controller_material_dialog_b = 2130903126; // aapt resource value: 0x7f030057 - public const int mr_dialog_header_item = 2130903127; + public const int mr_controller_volume_item = 2130903127; // aapt resource value: 0x7f030058 - public const int mr_picker_dialog = 2130903128; + public const int mr_dialog_header_item = 2130903128; // aapt resource value: 0x7f030059 - public const int mr_picker_route_item = 2130903129; + public const int mr_picker_dialog = 2130903129; // aapt resource value: 0x7f03005a - public const int mr_playback_control = 2130903130; + public const int mr_picker_route_item = 2130903130; // aapt resource value: 0x7f03005b - public const int mr_volume_control = 2130903131; + public const int mr_playback_control = 2130903131; // aapt resource value: 0x7f03005c - public const int mtrl_layout_snackbar = 2130903132; + public const int mr_volume_control = 2130903132; // aapt resource value: 0x7f03005d - public const int mtrl_layout_snackbar_include = 2130903133; + public const int mtrl_layout_snackbar = 2130903133; // aapt resource value: 0x7f03005e - public const int MusicLayout = 2130903134; + public const int mtrl_layout_snackbar_include = 2130903134; // aapt resource value: 0x7f03005f - public const int NoSong = 2130903135; + public const int MusicLayout = 2130903135; // aapt resource value: 0x7f030060 - public const int notification_action = 2130903136; + public const int NoSong = 2130903136; // aapt resource value: 0x7f030061 - public const int notification_action_tombstone = 2130903137; + public const int notification_action = 2130903137; // aapt resource value: 0x7f030062 - public const int notification_media_action = 2130903138; + public const int notification_action_tombstone = 2130903138; // aapt resource value: 0x7f030063 - public const int notification_media_cancel_action = 2130903139; + public const int notification_media_action = 2130903139; // aapt resource value: 0x7f030064 - public const int notification_template_big_media = 2130903140; + public const int notification_media_cancel_action = 2130903140; // aapt resource value: 0x7f030065 - public const int notification_template_big_media_custom = 2130903141; + public const int notification_template_big_media = 2130903141; // aapt resource value: 0x7f030066 - public const int notification_template_big_media_narrow = 2130903142; + public const int notification_template_big_media_custom = 2130903142; // aapt resource value: 0x7f030067 - public const int notification_template_big_media_narrow_custom = 2130903143; + public const int notification_template_big_media_narrow = 2130903143; // aapt resource value: 0x7f030068 - public const int notification_template_custom_big = 2130903144; + public const int notification_template_big_media_narrow_custom = 2130903144; // aapt resource value: 0x7f030069 - public const int notification_template_icon_group = 2130903145; + public const int notification_template_custom_big = 2130903145; // aapt resource value: 0x7f03006a - public const int notification_template_lines_media = 2130903146; + public const int notification_template_icon_group = 2130903146; // aapt resource value: 0x7f03006b - public const int notification_template_media = 2130903147; + public const int notification_template_lines_media = 2130903147; // aapt resource value: 0x7f03006c - public const int notification_template_media_custom = 2130903148; + public const int notification_template_media = 2130903148; // aapt resource value: 0x7f03006d - public const int notification_template_part_chronometer = 2130903149; + public const int notification_template_media_custom = 2130903149; // aapt resource value: 0x7f03006e - public const int notification_template_part_time = 2130903150; + public const int notification_template_part_chronometer = 2130903150; // aapt resource value: 0x7f03006f - public const int NoYtPlaylist = 2130903151; + public const int notification_template_part_time = 2130903151; // aapt resource value: 0x7f030070 - public const int NumberPicker = 2130903152; + public const int NoYtPlaylist = 2130903152; // aapt resource value: 0x7f030071 - public const int player = 2130903153; + public const int NumberPicker = 2130903153; // aapt resource value: 0x7f030072 - public const int playerInfo = 2130903154; + public const int player = 2130903154; // aapt resource value: 0x7f030073 - public const int PlaylistHeader = 2130903155; + public const int playerInfo = 2130903155; // aapt resource value: 0x7f030074 - public const int PlaylistItem = 2130903156; + public const int PlaylistHeader = 2130903156; // aapt resource value: 0x7f030075 - public const int PlaylistList = 2130903157; + public const int PlaylistItem = 2130903157; // aapt resource value: 0x7f030076 - public const int PlaylistSmallHeader = 2130903158; + public const int PlaylistList = 2130903158; // aapt resource value: 0x7f030077 - public const int preference = 2130903159; + public const int PlaylistSmallHeader = 2130903159; // aapt resource value: 0x7f030078 - public const int preference_category = 2130903160; + public const int preference = 2130903160; // aapt resource value: 0x7f030079 - public const int preference_category_material = 2130903161; + public const int preference_category = 2130903161; // aapt resource value: 0x7f03007a - public const int preference_dialog_edittext = 2130903162; + public const int preference_category_material = 2130903162; // aapt resource value: 0x7f03007b - public const int preference_dropdown = 2130903163; + public const int preference_dialog_edittext = 2130903163; // aapt resource value: 0x7f03007c - public const int preference_dropdown_material = 2130903164; + public const int preference_dropdown = 2130903164; // aapt resource value: 0x7f03007d - public const int preference_information = 2130903165; + public const int preference_dropdown_material = 2130903165; // aapt resource value: 0x7f03007e - public const int preference_information_material = 2130903166; + public const int preference_information = 2130903166; // aapt resource value: 0x7f03007f - public const int preference_list_fragment = 2130903167; + public const int preference_information_material = 2130903167; // aapt resource value: 0x7f030080 - public const int preference_material = 2130903168; + public const int preference_list_fragment = 2130903168; // aapt resource value: 0x7f030081 - public const int preference_recyclerview = 2130903169; + public const int preference_material = 2130903169; // aapt resource value: 0x7f030082 - public const int preference_widget_checkbox = 2130903170; + public const int preference_recyclerview = 2130903170; // aapt resource value: 0x7f030083 - public const int preference_widget_seekbar = 2130903171; + public const int preference_widget_checkbox = 2130903171; // aapt resource value: 0x7f030084 - public const int preference_widget_seekbar_material = 2130903172; + public const int preference_widget_seekbar = 2130903172; // aapt resource value: 0x7f030085 - public const int preference_widget_switch = 2130903173; + public const int preference_widget_seekbar_material = 2130903173; // aapt resource value: 0x7f030086 - public const int preference_widget_switch_compat = 2130903174; + public const int preference_widget_switch = 2130903174; // aapt resource value: 0x7f030087 - public const int PreferenceCategory = 2130903175; + public const int preference_widget_switch_compat = 2130903175; // aapt resource value: 0x7f030088 - public const int PreferenceRoot = 2130903176; + public const int PreferenceCategory = 2130903176; // aapt resource value: 0x7f030089 - public const int Preferences = 2130903177; + public const int PreferenceRoot = 2130903177; // aapt resource value: 0x7f03008a - public const int QueueCurrent = 2130903178; + public const int Preferences = 2130903178; // aapt resource value: 0x7f03008b - public const int QueueFooter = 2130903179; + public const int QueueCurrent = 2130903179; // aapt resource value: 0x7f03008c - public const int QueueHeader = 2130903180; + public const int QueueFooter = 2130903180; // aapt resource value: 0x7f03008d - public const int RecyclerFragment = 2130903181; + public const int QueueHeader = 2130903181; // aapt resource value: 0x7f03008e - public const int SaveAPlaylist = 2130903182; + public const int RecyclerFragment = 2130903182; // aapt resource value: 0x7f03008f - public const int search_layout = 2130903183; + public const int SaveAPlaylist = 2130903183; // aapt resource value: 0x7f030090 - public const int SearchLayout = 2130903184; + public const int search_layout = 2130903184; // aapt resource value: 0x7f030091 - public const int SeekbarPreference = 2130903185; + public const int SearchLayout = 2130903185; // aapt resource value: 0x7f030092 - public const int select_dialog_item_material = 2130903186; + public const int SeekbarPreference = 2130903186; // aapt resource value: 0x7f030093 - public const int select_dialog_multichoice_material = 2130903187; + public const int select_dialog_item_material = 2130903187; // aapt resource value: 0x7f030094 - public const int select_dialog_singlechoice_material = 2130903188; + public const int select_dialog_multichoice_material = 2130903188; // aapt resource value: 0x7f030095 - public const int ShuffleButton = 2130903189; + public const int select_dialog_singlechoice_material = 2130903189; // aapt resource value: 0x7f030096 - public const int SmallEmptyView = 2130903190; + public const int ShuffleButton = 2130903190; // aapt resource value: 0x7f030097 - public const int smallLoading = 2130903191; + public const int SmallEmptyView = 2130903191; // aapt resource value: 0x7f030098 - public const int SongList = 2130903192; + public const int smallLoading = 2130903192; // aapt resource value: 0x7f030099 - public const int SuggestionLayout = 2130903193; + public const int SongList = 2130903193; // aapt resource value: 0x7f03009a - public const int support_simple_spinner_dropdown_item = 2130903194; + public const int SuggestionLayout = 2130903194; // aapt resource value: 0x7f03009b - public const int tabs = 2130903195; + public const int support_simple_spinner_dropdown_item = 2130903195; // aapt resource value: 0x7f03009c - public const int TimerLayout = 2130903196; + public const int tabs = 2130903196; // aapt resource value: 0x7f03009d - public const int TwoLineLayout = 2130903197; + public const int TimerLayout = 2130903197; // aapt resource value: 0x7f03009e - public const int ViewPager = 2130903198; + public const int TwoLineLayout = 2130903198; // aapt resource value: 0x7f03009f - public const int YtList = 2130903199; + public const int ViewPager = 2130903199; + + // aapt resource value: 0x7f0300a0 + public const int YtList = 2130903200; static Layout() { diff --git a/Opus/Resources/layout/HomeChannel.xml b/Opus/Resources/layout/HomeChannel.xml index 5fcc6eb..9a2390a 100644 --- a/Opus/Resources/layout/HomeChannel.xml +++ b/Opus/Resources/layout/HomeChannel.xml @@ -7,10 +7,10 @@ android:padding="4dp" >