Implemented NUI Context for Main Thread Invocationa and Updated Player ErrorOccurred... 78/265178/2
authoraman.jeph <aman.jeph@samsung.com>
Tue, 12 Oct 2021 12:25:24 +0000 (17:55 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Wed, 13 Oct 2021 10:22:44 +0000 (15:52 +0530)
Fixed theme issues for tabs

Change-Id: If764291eb9f819375f7482455e45230f0c532c7e
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
music-player/Common/NUISynchronizationContext.cs [new file with mode: 0755]
music-player/Core/ColorExtractor.cs [changed mode: 0644->0755]
music-player/Core/MusicPlayer.cs [changed mode: 0644->0755]
music-player/MusicPlayer.cs
music-player/ViewModels/PlayerViewModel.cs
music-player/Views/BaseView.cs
music-player/res/themes/dark.xaml
music-player/res/themes/light.xaml
packaging/org.tizen.MusicPlayer-1.0.0.tpk

diff --git a/music-player/Common/NUISynchronizationContext.cs b/music-player/Common/NUISynchronizationContext.cs
new file mode 100755 (executable)
index 0000000..074dd7a
--- /dev/null
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+
+namespace MusicPlayer.Common
+{
+    public static class NUISynchronizationContext
+    {
+        private static SynchronizationContext context;
+
+        public static void Initialize()
+        {
+            context = SynchronizationContext.Current;
+        }
+
+        public static void InvokeOnNUIThread(SendOrPostCallback callback, object arg)
+        {
+            context?.Post(callback, arg);
+        }
+    }
+}
old mode 100644 (file)
new mode 100755 (executable)
index db4a86d..0f32f94
@@ -15,7 +15,7 @@ namespace MusicPlayer.Core
 
         private static Palette GeneratePalette(string imagePath)
         {
-            PixelBuffer pixelBuffer = ImageLoading.LoadImageFromFile(imagePath);
+            PixelBuffer pixelBuffer = ImageLoader.LoadImageFromFile(imagePath);
             if(pixelBuffer == null)
             {
                 Tizen.Log.Error(AppConstants.LogTag, "Pixel buffer is null");
old mode 100644 (file)
new mode 100755 (executable)
index 30942d5..0237cb3
@@ -71,9 +71,10 @@ namespace MusicPlayer.Core
             {
                 Tizen.Log.Error("MusicPlayer", "InvalidOperationException: "+ex.Message);
             }
-            finally // TODO do we really need this
+            catch(Exception ex)
             {
-                //DisposePlayer();
+                Tizen.Log.Error(AppConstants.LogTag, "Exception : " + ex.Message);
+                EmitErrorEvent(ex.Message);
             }
         }
 
@@ -170,11 +171,44 @@ namespace MusicPlayer.Core
             Tizen.Log.Error(AppConstants.LogTag, "Playback completed");
         }
 
-        // TODO this event is called on a differnt thread..need to handle it
+        private void EmitErrorEvent(object o)
+        {
+            string error = (string)o;
+            PlayerEvent.Invoke(this, new PlayerEventArgs(EventType.Error, error));
+        }
+
         private void OnErrorOccurred(object sender, PlayerErrorOccurredEventArgs e)
         {
-            PlayerEvent.Invoke(this, new PlayerEventArgs(EventType.Error, e.Error.ToString()));
-            Tizen.Log.Error(AppConstants.LogTag, "Error Occurred: " + e.Error.ToString());
+            Tizen.Log.Debug(AppConstants.LogTag, "ThreadId: " + System.Threading.Thread.CurrentThread.ManagedThreadId+ "Error Occured: "+e.Error.ToString());
+            System.Threading.SendOrPostCallback errorEventCallback = new System.Threading.SendOrPostCallback(EmitErrorEvent);
+            NUISynchronizationContext.InvokeOnNUIThread(errorEventCallback, GetErrorDescription(e.Error));
+        }
+
+        private string GetErrorDescription(PlayerError error)
+        {
+            string errorDesc = "Unknown error encountered";
+            switch (error)
+            {
+                case PlayerError.NoSuchFile:
+                    errorDesc = "File doesn't exists or invalid file";
+                    break;
+                case PlayerError.InternalError:
+                    errorDesc = "Player internal error encountered";
+                    break;
+                case PlayerError.NoSpaceOnDevice:
+                    errorDesc = "Not enough space on device";
+                    break;
+                case PlayerError.NotSupportedFile:
+                    errorDesc = "File type not supported";
+                    break;
+                case PlayerError.InvalidUri:
+                    errorDesc = "File path is not valid";
+                    break;
+                case PlayerError.AudioCodecNotSupported:
+                    errorDesc = "Audio codec not supported";
+                    break;
+            }
+            return errorDesc;
         }
     }
 }
index 4bcbccd09a3f928b5ff8b3a58a7d33f2f632671e..92fdad5fd9418c4b34073bc6bfd59a9a9b2e039f 100755 (executable)
@@ -17,6 +17,10 @@ namespace MusicPlayer
         {
             Tizen.Log.Info(AppConstants.LogTag, "OnCreate statrted");
             base.OnCreate();
+
+            //Initlize NUISynchronizationContext
+            NUISynchronizationContext.Initialize();
+
             Window window = Window.Instance;
             window.BackgroundColor = Color.White;
             Size2D size = window.Size;
index 4f062bbf244fc583bad93b2b33f04dbfaf124203..6541b40f1c4ffd76939e324c76e650134ca257c9 100755 (executable)
@@ -336,6 +336,10 @@ namespace MusicPlayer.ViewModels
             {
                 PlayNext();
             }
+            else if(e.Type == EventType.Error)
+            {
+                Tizen.Log.Error(AppConstants.LogTag, "ThreadId: " + System.Threading.Thread.CurrentThread.ManagedThreadId + ", Error Occured: " + e.Description);
+            }
         }
 
         private void PlayNext()
index b78f12098a91229f8de530a25668db54b134911b..8b4daae045ff114fc55c6ad926bd553efdc2b654 100755 (executable)
@@ -82,21 +82,12 @@ namespace MusicPlayer.Views
             FlexLayout.SetFlexGrow(contentView, 1);
             FlexLayout.SetFlexShrink(contentView, 1);
 
-            tabs = new Tab()
+            tabs = new Tab("Tabs")
             {
                 ThemeChangeSensitive = true,
                 Size2D = new Size2D(Window.Instance.Size.Width, 84),
                 WidthSpecification = LayoutParamPolicies.MatchParent,
                 HeightSpecification = 84,
-                UnderLineBackgroundColor = Color.Blue,
-                UnderLineSize = new Size2D(1, 3),
-                PointSize = 25,
-                BackgroundColor = Color.White,
-            };
-            tabs.TextColorSelector = new ColorSelector
-            {
-                Normal = Color.Black,
-                Selected = Color.Magenta,
             };
             base.Add(tabs);
             for(int i = 0; i<4; ++i)
index c2e9b7e9221a3a141128f1a7da4b17694685e645..07bf468e4dec8d6058f8ea0bdd17fcce9b600a98 100755 (executable)
@@ -181,4 +181,13 @@ Id="LightTheme">
       </c:ButtonStyle.Icon>
   </c:ButtonStyle>
 
+  <c:TabStyle x:Key="Tabs" BackgroundColor="#000209">
+    <c:TabStyle.Text>
+      <TextLabelStyle TextColor="#FFFFFF" FontFamily="BreezeSans" PixelSize="28"/>
+    </c:TabStyle.Text>
+    <c:TabStyle.UnderLine>
+      <ViewStyle BackgroundColor="#FFFFFF" SizeHeight="8"/>
+    </c:TabStyle.UnderLine>
+  </c:TabStyle>
+
 </Theme>
\ No newline at end of file
index b8c681ba23b877110ced24eb0ec226f04ef357ef..5b9c38c134f8ebce288fdca3b0e6e36ee17148fc 100755 (executable)
@@ -181,4 +181,13 @@ Id="LightTheme">
       </c:ButtonStyle.Icon>
   </c:ButtonStyle>
 
+  <c:TabStyle x:Key="Tabs" BackgroundColor="White">
+    <c:TabStyle.Text>
+      <TextLabelStyle TextColor="#000C2B" FontFamily="BreezeSans" PixelSize="28"/>
+    </c:TabStyle.Text>
+    <c:TabStyle.UnderLine>
+      <ViewStyle BackgroundColor="#0A0E4A" SizeHeight="8"/>
+    </c:TabStyle.UnderLine>
+  </c:TabStyle>
+
 </Theme>
\ No newline at end of file
index ed28e152785f380dc01c561a7ba73095d48cb96f..4803830e4e3dfad4e0b82086a6fe31dbcf34c265 100755 (executable)
Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ