diff --git a/Opus/Code/MainActivity.cs b/Opus/Code/MainActivity.cs index 583f609..8d5f57f 100644 --- a/Opus/Code/MainActivity.cs +++ b/Opus/Code/MainActivity.cs @@ -50,7 +50,7 @@ namespace Opus public class MainActivity : AppCompatActivity, GoogleApiClient.IOnConnectionFailedListener, IResultCallback, IMenuItemOnActionExpandListener, View.IOnFocusChangeListener, ISessionManagerListener { public static MainActivity instance; - public new static int Theme = 1; + //public new static int Theme = 1; public static int dialogTheme; public bool NoToolbarMenu = false; @@ -80,7 +80,7 @@ namespace Opus { base.OnCreate(savedInstanceState); - SwitchTheme(GetThemeID(this)); + LoadTheme(this); SetContentView(Resource.Layout.Main); instance = this; @@ -247,37 +247,23 @@ namespace Opus return pref.GetInt("theme", 0); } - public static void SetTheme(Context context) + public static void LoadTheme(Context context) { - int themeID; + int themeRes; switch (GetThemeID(context)) { case 0: default: - themeID = Resource.Style.Theme; + themeRes = Resource.Style.Theme; + dialogTheme = Resource.Style.AppCompatAlertDialogStyle; break; case 1: - themeID = Resource.Style.DarkTheme; + themeRes = Resource.Style.DarkTheme; + dialogTheme = Resource.Style.AppCompatDarkAlertDialogStyle; break; } - context.SetTheme(themeID); + context.SetTheme(themeRes); } - - public void SwitchTheme(int themeID) - { - Theme = themeID; - if (themeID == 0) - { - dialogTheme = Resource.Style.AppCompatAlertDialogStyle; - SetTheme(Resource.Style.Theme); - } - else - { - SetTheme(Resource.Style.DarkTheme); - dialogTheme = Resource.Style.AppCompatDarkAlertDialogStyle; - } - } - //UI PART #region Toolbar menu (right items) diff --git a/Opus/Code/UI/Adapter/PlaylistAdapter.cs b/Opus/Code/UI/Adapter/PlaylistAdapter.cs index 02a364e..a008ea9 100644 --- a/Opus/Code/UI/Adapter/PlaylistAdapter.cs +++ b/Opus/Code/UI/Adapter/PlaylistAdapter.cs @@ -3,6 +3,7 @@ using Android.Content.Res; using Android.Graphics; using Android.Support.V7.Widget; using Android.Text; +using Android.Util; using Android.Views; using Android.Widget; using Opus.Api.Services; @@ -146,10 +147,14 @@ namespace Opus.Adapter { holder.Owner.Text = playlist.Owner; holder.Owner.SetBackgroundColor(Color.Transparent); - if (MainActivity.Theme == 1) - holder.Owner.SetTextColor(Color.White); + + Color color; + TypedValue value = new TypedValue(); + if (MainActivity.instance.Theme.ResolveAttribute(Resource.Styleable.TextAppearance_android_textColor, value, true)) + color = Color.ParseColor("#" + Java.Lang.Integer.ToHexString(value.Data)); else - holder.Owner.SetTextColor(Color.Black); + color = Color.Black; + holder.Owner.SetTextColor(color); } if (playlist.HasWritePermission) diff --git a/Opus/Code/UI/Fragments/DownloadQueue.cs b/Opus/Code/UI/Fragments/DownloadQueue.cs index c940aaa..a6e6815 100644 --- a/Opus/Code/UI/Fragments/DownloadQueue.cs +++ b/Opus/Code/UI/Fragments/DownloadQueue.cs @@ -22,7 +22,7 @@ namespace Opus.Fragments { base.OnCreate(savedInstanceState); - MainActivity.SetTheme(this); + MainActivity.LoadTheme(this); instance = this; SetContentView(Resource.Layout.DownloadQueue); diff --git a/Opus/Code/UI/Fragments/EditMetaData.cs b/Opus/Code/UI/Fragments/EditMetaData.cs index b993a99..d129e2c 100644 --- a/Opus/Code/UI/Fragments/EditMetaData.cs +++ b/Opus/Code/UI/Fragments/EditMetaData.cs @@ -45,7 +45,7 @@ namespace Opus.Fragments { base.OnCreate(savedInstanceState); - MainActivity.SetTheme(this); + MainActivity.LoadTheme(this); SetContentView(Resource.Layout.EditMetaData); Window.SetStatusBarColor(Color.Argb(70, 00, 00, 00)); diff --git a/Opus/Code/UI/Fragments/Preferences.cs b/Opus/Code/UI/Fragments/Preferences.cs index 48284e0..66c9d84 100644 --- a/Opus/Code/UI/Fragments/Preferences.cs +++ b/Opus/Code/UI/Fragments/Preferences.cs @@ -34,7 +34,7 @@ namespace Opus.Fragments protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); - MainActivity.SetTheme(this); + MainActivity.LoadTheme(this); SetContentView(Resource.Layout.PreferenceRoot); toolbar = FindViewById(Resource.Id.toolbar); SetSupportActionBar(toolbar); @@ -317,7 +317,7 @@ namespace Opus.Fragments Preference prefButton = FindPreference("theme"); prefButton.Summary = args.Which == 0 ? Resources.GetString(Resource.String.white_theme) : Resources.GetString(Resource.String.dark_theme); - MainActivity.instance.SwitchTheme(args.Which); + MainActivity.LoadTheme(MainActivity.instance); MainActivity.instance.Recreate(); Activity.Recreate(); }); diff --git a/Opus/Code/UI/Fragments/SearchableActivity.cs b/Opus/Code/UI/Fragments/SearchableActivity.cs index 664fb1b..c4810c5 100644 --- a/Opus/Code/UI/Fragments/SearchableActivity.cs +++ b/Opus/Code/UI/Fragments/SearchableActivity.cs @@ -35,7 +35,7 @@ namespace Opus.Fragments instance = this; base.OnCreate(savedInstanceState); - MainActivity.SetTheme(this); + MainActivity.LoadTheme(this); SetContentView(Resource.Layout.SearchLayout); SetSupportActionBar(FindViewById(Resource.Id.toolbar)); diff --git a/Opus/Code/UI/Views/AccountPreference.cs b/Opus/Code/UI/Views/AccountPreference.cs index 5dd91cf..2af3fd1 100644 --- a/Opus/Code/UI/Views/AccountPreference.cs +++ b/Opus/Code/UI/Views/AccountPreference.cs @@ -9,6 +9,7 @@ using Android.Support.V7.Preferences; using Android.Util; using Android.Views; using Android.Widget; +using Java.Lang; //using Google.Apis.YouTube.v3; using Opus; //using Opus.Api; @@ -50,10 +51,15 @@ public class AccountPreference : Preference, IResultCallback log.Text = Preferences.instance.Resources.GetString(Resource.String.log_in); log.Click += logIn; - if (MainActivity.Theme == 1) - view.FindViewById(Android.Resource.Id.Icon).SetColorFilter(Color.White); + Color color; + TypedValue value = new TypedValue(); + if (Context.Theme.ResolveAttribute(Resource.Attribute.accountIconColor, value, true)) + color = Color.ParseColor("#" + Integer.ToHexString(value.Data)); else - view.FindViewById(Android.Resource.Id.Icon).SetColorFilter(Color.Gray); + color = Color.Black; + + view.FindViewById(Android.Resource.Id.Icon).SetColorFilter(color); + } else { @@ -137,10 +143,6 @@ public class AccountPreference : Preference, IResultCallback log.Text = Preferences.instance.Resources.GetString(Resource.String.log_in); Summary = ""; Picasso.With(Android.App.Application.Context).Load(Resource.Drawable.account).Into(view.FindViewById(Android.Resource.Id.Icon)); - if (MainActivity.Theme == 1) - view.FindViewById(Android.Resource.Id.Icon).SetColorFilter(Color.White); - else - view.FindViewById(Android.Resource.Id.Icon).SetColorFilter(Color.Gray); log.Click -= logOut; MainActivity.instance.InvalidateOptionsMenu(); } diff --git a/Opus/Opus.csproj b/Opus/Opus.csproj index 30429c8..6e9b52a 100644 --- a/Opus/Opus.csproj +++ b/Opus/Opus.csproj @@ -96,20 +96,20 @@ ..\packages\Xam.Plugins.Android.ExoPlayer.UI.2.8.8\lib\monoandroid81\ExoPlayer.UI.dll - - ..\packages\Google.Apis.1.40.0\lib\netstandard2.0\Google.Apis.dll + + ..\packages\Google.Apis.1.40.2\lib\netstandard2.0\Google.Apis.dll - - ..\packages\Google.Apis.Auth.1.40.0\lib\netstandard2.0\Google.Apis.Auth.dll + + ..\packages\Google.Apis.Auth.1.40.2\lib\netstandard2.0\Google.Apis.Auth.dll - - ..\packages\Google.Apis.Auth.1.40.0\lib\netstandard2.0\Google.Apis.Auth.PlatformServices.dll + + ..\packages\Google.Apis.Auth.1.40.2\lib\netstandard2.0\Google.Apis.Auth.PlatformServices.dll - - ..\packages\Google.Apis.Core.1.40.0\lib\netstandard2.0\Google.Apis.Core.dll + + ..\packages\Google.Apis.Core.1.40.2\lib\netstandard2.0\Google.Apis.Core.dll - - ..\packages\Google.Apis.YouTube.v3.1.40.0.1593\lib\netstandard2.0\Google.Apis.YouTube.v3.dll + + ..\packages\Google.Apis.YouTube.v3.1.40.2.1593\lib\netstandard2.0\Google.Apis.YouTube.v3.dll @@ -134,20 +134,20 @@ ..\packages\sqlite-net-pcl.1.5.231\lib\netstandard1.1\SQLite-net.dll - - ..\packages\SQLitePCLRaw.bundle_green.1.1.13\lib\MonoAndroid\SQLitePCLRaw.batteries_green.dll + + ..\packages\SQLitePCLRaw.bundle_green.1.1.14\lib\MonoAndroid\SQLitePCLRaw.batteries_green.dll - - ..\packages\SQLitePCLRaw.bundle_green.1.1.13\lib\MonoAndroid\SQLitePCLRaw.batteries_v2.dll + + ..\packages\SQLitePCLRaw.bundle_green.1.1.14\lib\MonoAndroid\SQLitePCLRaw.batteries_v2.dll - - ..\packages\SQLitePCLRaw.core.1.1.13\lib\MonoAndroid\SQLitePCLRaw.core.dll + + ..\packages\SQLitePCLRaw.core.1.1.14\lib\MonoAndroid\SQLitePCLRaw.core.dll - - ..\packages\SQLitePCLRaw.lib.e_sqlite3.android.1.1.13\lib\MonoAndroid\SQLitePCLRaw.lib.e_sqlite3.dll + + ..\packages\SQLitePCLRaw.lib.e_sqlite3.android.1.1.14\lib\MonoAndroid\SQLitePCLRaw.lib.e_sqlite3.dll - - ..\packages\SQLitePCLRaw.provider.e_sqlite3.android.1.1.13\lib\MonoAndroid\SQLitePCLRaw.provider.e_sqlite3.dll + + ..\packages\SQLitePCLRaw.provider.e_sqlite3.android.1.1.14\lib\MonoAndroid\SQLitePCLRaw.provider.e_sqlite3.dll ..\packages\Square.OkHttp.2.7.5.0\lib\MonoAndroid\Square.OkHttp.dll @@ -319,8 +319,8 @@ ..\packages\Xamarin.GooglePlayServices.Tasks.70.1501.0-preview2\lib\MonoAndroid80\Xamarin.GooglePlayServices.Tasks.dll - - ..\packages\YoutubeExplode.4.7.1\lib\netstandard2.0\YoutubeExplode.dll + + ..\packages\YoutubeExplode.4.7.3\lib\netstandard2.0\YoutubeExplode.dll diff --git a/Opus/Resources/Resource.Designer.cs b/Opus/Resources/Resource.Designer.cs index 94a6f05..44b6add 100644 --- a/Opus/Resources/Resource.Designer.cs +++ b/Opus/Resources/Resource.Designer.cs @@ -162,6 +162,9 @@ namespace Opus public partial class Attribute { + // aapt resource value: 0x7f010280 + public const int accountIconColor = 2130772608; + // aapt resource value: 0x7f0100d1 public const int actionBarDivider = 2130772177; diff --git a/Opus/Resources/values/attars.xml b/Opus/Resources/values/attars.xml index d0ed9df..03b77e4 100644 --- a/Opus/Resources/values/attars.xml +++ b/Opus/Resources/values/attars.xml @@ -3,4 +3,5 @@ + \ No newline at end of file diff --git a/Opus/Resources/values/styles.xml b/Opus/Resources/values/styles.xml index 57f80e9..9a1be66 100644 --- a/Opus/Resources/values/styles.xml +++ b/Opus/Resources/values/styles.xml @@ -62,6 +62,7 @@ #ffffff #000 #fafafa + #808080