From dbe832f4e893d37f36cb7896ac788901f22ac21d Mon Sep 17 00:00:00 2001 From: Jiyun Yang Date: Mon, 18 Mar 2024 20:13:14 +0900 Subject: [PATCH] [NUI] Move WeakEvent to public and remove unused WeakEventHandler class Signed-off-by: Jiyun Yang --- .../src/internal/Common/WeakEventHandler.cs | 48 ---------------------- .../src/{internal => public}/Common/WeakEvent.cs | 31 +++++++++++++- 2 files changed, 29 insertions(+), 50 deletions(-) delete mode 100755 src/Tizen.NUI/src/internal/Common/WeakEventHandler.cs rename src/Tizen.NUI/src/{internal => public}/Common/WeakEvent.cs (82%) diff --git a/src/Tizen.NUI/src/internal/Common/WeakEventHandler.cs b/src/Tizen.NUI/src/internal/Common/WeakEventHandler.cs deleted file mode 100755 index 016b8fd..0000000 --- a/src/Tizen.NUI/src/internal/Common/WeakEventHandler.cs +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -using System; -using System.Reflection; - -namespace Tizen.NUI -{ - internal sealed class WeakEventHandler where TEventArgs : EventArgs - { - private readonly WeakReference targetReference; - private readonly MethodInfo method; - - public WeakEventHandler(EventHandler callback) - { - method = callback.GetMethodInfo(); - targetReference = new WeakReference(callback.Target, true); - } - - public void Handler(object sender, TEventArgs e) - { - var target = targetReference.Target; - if (target != null) - { - var callback = (Action)method.CreateDelegate(typeof(Action), target); - if (callback != null) - { - callback(sender, e); - } - } - } - } -} - diff --git a/src/Tizen.NUI/src/internal/Common/WeakEvent.cs b/src/Tizen.NUI/src/public/Common/WeakEvent.cs similarity index 82% rename from src/Tizen.NUI/src/internal/Common/WeakEvent.cs rename to src/Tizen.NUI/src/public/Common/WeakEvent.cs index 1b12cef..dc84a0c 100755 --- a/src/Tizen.NUI/src/internal/Common/WeakEvent.cs +++ b/src/Tizen.NUI/src/public/Common/WeakEvent.cs @@ -16,20 +16,33 @@ */ using System; +using System.ComponentModel; using System.Collections.Generic; using System.Reflection; namespace Tizen.NUI { - internal class WeakEvent where T : Delegate + /// + /// The WeakEvent without holding strong reference of event handler. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public class WeakEvent where T : Delegate { private const int addThreshold = 1000; // Experimetal constant private const int listLengthThreshold = 1000; // Experimetal constant private int cleanUpAddCount = 0; private List> handlers = new List>(); + /// + /// The count of currently added event handlers. + /// + [EditorBrowsable(EditorBrowsableState.Never)] protected int Count => handlers.Count; + /// + /// Add an event handler. + /// + [EditorBrowsable(EditorBrowsableState.Never)] public virtual void Add(T handler) { handlers.Add(new WeakHandler(handler)); @@ -38,6 +51,10 @@ namespace Tizen.NUI CleanUpDeadHandlersIfNeeds(); } + /// + /// Remove last added event handler. + /// + [EditorBrowsable(EditorBrowsableState.Never)] public virtual void Remove(T handler) { int lastIndex = handlers.FindLastIndex(item => item.Equals(handler)); @@ -49,6 +66,10 @@ namespace Tizen.NUI } } + /// + /// Invoke event handlers. + /// + [EditorBrowsable(EditorBrowsableState.Never)] public void Invoke(object sender, EventArgs args) { // Iterate copied one to prevent addition/removal item in the handler call. @@ -62,11 +83,17 @@ namespace Tizen.NUI CleanUpDeadHandlers(); } + /// + /// Invoked when the event handler count is increased. + /// + [EditorBrowsable(EditorBrowsableState.Never)] protected virtual void OnCountIncreased() { } - + /// + /// Invoked when the event handler count is decreased. + /// protected virtual void OnCountDicreased() { } -- 2.7.4