From: Saksham Grover Date: Mon, 7 Apr 2025 06:02:32 +0000 (+0530) Subject: Implementation of cancel connection popup X-Git-Tag: accepted/tizen/unified/20250428.091732~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2fce8df26f76e869ec85900faf880e9f5b4e7113;p=profile%2Fiot%2Fapps%2Fdotnet%2Fsetting-wifi-direct.git Implementation of cancel connection popup This patch: - Implements cancel connection popup and functionality - Resolves issue in connection request popup Change-Id: Ie2d77c7585ac0a85a5f1cf45b93f2d2f2d1619bd Signed-off-by: Saksham Grover --- diff --git a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs index 05a2b28..05863d7 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs @@ -82,6 +82,7 @@ namespace SettingWiFiDirect protected override View OnCreate() { WiFiDirect.WFDStateChanged += OnWFDStateChanged; + WiFiDirect.WFDStatusChanged += OnConnectionStatusChanged; Debug("MainPage: " + this.GetHashCode()); base.OnCreate(); @@ -95,6 +96,7 @@ namespace SettingWiFiDirect { Debug("+"); WiFiDirect.WFDStateChanged -= OnWFDStateChanged; + WiFiDirect.WFDStatusChanged -= OnConnectionStatusChanged; base.OnDestroy(); } @@ -180,11 +182,11 @@ namespace SettingWiFiDirect case WFDState.Discovering: UpdateScanButton(true); ChangeScanningState(true); - WiFiDirect.WFDStatusChanged += OnConnectionStatusChanged; break; case WFDState.Activated: if (mNeedScanning) { + mPeerSource.ClearList(); StartScan(); UpdateScanButton(true); ChangeScanningState(true); @@ -202,10 +204,11 @@ namespace SettingWiFiDirect break; case WFDState.Disconnecting: mNeedScanning = true; - mPeerSource.UpdateTitle(); - WiFiDirect.WFDStatusChanged -= OnConnectionStatusChanged; + mPeerSource.ClearList(); + break; + case WFDState.Connecting: + UpdateScanButton(true); break; - //TODO: update for further states. } } @@ -228,35 +231,14 @@ namespace SettingWiFiDirect Debug("Connecting Peer is NULL"); return; } - - OnConnectionRequest(connectingPeer); + var page = new ConnectionPopup(connectingPeer); + page.ShowPopup(); break; default: break; } } - private void OnConnectionRequest(Peer connectingPeer) - { - try - { - var page = new ConnectionPopup(connectingPeer); - if (page != null) - { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Add(page); - page.SetPopupPage(page); - } - else - { - Debug("Page is NULL"); - } - } - catch (Exception e) - { - Debug("An error occurred: " + e.Message); - } - } - private void ChangeScanningState(bool isScanning) { if(mPeerSource != null) @@ -377,20 +359,24 @@ namespace SettingWiFiDirect private void OnScanStopButtonClicked(object sender, ClickedEventArgs e) { - if (WiFiDirect.IsDiscoverable()) + Debug("+"); + if (WiFiDirect.GetState() == WiFiDirectState.Discovering) { StopDiscovery(); } - else + else if (WiFiDirect.GetState() == WiFiDirectState.Activated) { StartScan(); } + else if (WiFiDirect.GetState() == WiFiDirectState.Connecting) + { + EnableCancelButton(); + } } private void StopDiscovery() { Debug("+"); - WiFiDirect.WFDStatusChanged -= OnConnectionStatusChanged; bool discoveryStopped = WiFiDirect.StopDiscovery(); if (discoveryStopped) { @@ -404,19 +390,34 @@ namespace SettingWiFiDirect private void UpdateScanButton(bool visible) { mScanButton.IsEnabled = visible; - if (WiFiDirect.IsDiscoverable()) + if (WiFiDirect.GetState() == WiFiDirectState.Discovering) { mScanButton.Text = GetText(nameof(Resources.IDS_WIFI_SK_STOP)); } - else + else if (WiFiDirect.GetState() == WiFiDirectState.Activated) { mScanButton.Text = GetText(nameof(Resources.IDS_WIFI_SK4_SCAN)); } + else if (WiFiDirect.GetState() == WiFiDirectState.Connecting) + { + mScanButton.Text = GetText(nameof(Resources.IDS_WIFI_SK_CANCEL)); + } } string GetText(string str) { return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(str); } + + private void EnableCancelButton() + { + Debug("+"); + var page = new CancelConnectionPopup(); + if (page != null) + { + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Add(page); + } + mNeedScanning = true; + } } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs index e6f0887..e69f3df 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs @@ -180,6 +180,15 @@ namespace SettingWiFiDirect.TextResources { } } + /// + /// Looks up a localized string similar to This Wi-Fi Direct connection will be canceled.. + /// + public static string IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED { + get { + return ResourceManager.GetString("IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED", resourceCulture); + } + } + /// /// Looks up a localized string similar to Cancel. /// diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx index a183863..ad0e3b6 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx +++ b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx @@ -154,6 +154,9 @@ Connect to ({0}) in ({1}) seconds. + + This Wi-Fi Direct connection will be canceled. + OK diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx index 8dc425c..857a135 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx +++ b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx @@ -153,6 +153,9 @@ ({1})에 ({0})초 이내에 연결됩니다. + + Wi-Fi 다이렉트 연결을 취소합니다. + 확인 diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx index 2c5afe8..5cf191c 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx +++ b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx @@ -153,6 +153,9 @@ Connect to ({0}) in ({1}) seconds. + + This Wi-Fi Direct connection will be canceled. + ok diff --git a/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs b/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs index 77dae14..05556f0 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs @@ -273,6 +273,11 @@ namespace SettingWiFiDirect Error("Error: " + e.Message + "\n" + e.StackTrace); } } + + static public WiFiDirectState GetState() + { + return WiFiDirectManager.State; + } } internal class WFDStateChangedEventArgs diff --git a/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs b/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs index 97c256f..c766b01 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs @@ -39,7 +39,6 @@ namespace SettingWiFiDirect ~Peer() { Debug("+"); - mWfdPeer.ConnectionStateChanged -= ConnectionStateChanged; } private void ConnectionStateChanged(object sender, ConnectionStateChangedEventArgs e) @@ -61,6 +60,11 @@ namespace SettingWiFiDirect case WiFiDirectConnectionState.DisconnectInd: State = PeerState.Disconnected; break; + case WiFiDirectConnectionState.ConnectionRequest: + var page = new ConnectionPopup(this); + page.ShowPopup(); + State = PeerState.Connecting; + break; } } Debug("StateInfo " + StateInfo); @@ -185,5 +189,19 @@ namespace SettingWiFiDirect Debug ("Connected?: " + mWfdPeer.IsConnected); return mState == PeerState.Connected; } + + public void CancelConnection() + { + Debug("+"); + try + { + mWfdPeer.CancelConnection(); + } + catch (Exception e) + { + Error("Error in cancelling connection " + e.Message); + } + } + } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml b/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml index 2f1f9b7..55d0772 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml +++ b/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml @@ -1,6 +1,6 @@ diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/CancelConnectionPopup.cs b/SettingWiFiDirect/SettingWiFiDirect/view/CancelConnectionPopup.cs new file mode 100644 index 0000000..cdd56d8 --- /dev/null +++ b/SettingWiFiDirect/SettingWiFiDirect/view/CancelConnectionPopup.cs @@ -0,0 +1,99 @@ +using Tizen.NUI.BaseComponents; +using Tizen.NUI; +using Tizen.NUI.Components; +using SettingWiFiDirect.TextResources; +using static SettingWiFiDirect.Logger; + +namespace SettingWiFiDirect +{ + internal class CancelConnectionPopup : DialogPage + { + public CancelConnectionPopup() + { + Debug("+"); + CreateComponents(); + } + + internal void CreateComponents() + { + var cancelConnectionView = new View() + { + Layout = new LinearLayout() + { + LinearOrientation = LinearLayout.Orientation.Vertical, + HorizontalAlignment = HorizontalAlignment.Center, + }, + WidthSpecification = 200, + HeightSpecification = 100, + }; + + var item = new DefaultLinearItem(); + cancelConnectionView.Add(item); + + string message = GetText(nameof(Resources.IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED)); + var messageItem = new TextLabel(message) + { + HorizontalAlignment = HorizontalAlignment.Center, + }; + + cancelConnectionView.Add(messageItem); + + var cancelButton = CreateCancelButton(); + var stopButton = CreateStopButton(); + + Content = new AlertDialog() + { + Title = GetText(nameof(Resources.IDS_WIFI_HEADER_WI_FI_DIRECT_CONNECTION_ABB)), + Content = cancelConnectionView, + Actions = new View[] { cancelButton, stopButton }, + }; + } + + private Button CreateCancelButton() + { + var cancelButton = new Button() + { + Text = GetText(nameof(Resources.IDS_WIFI_SK_CANCEL)), + WidthSpecification = 300, + HeightSpecification = 80, + }; + cancelButton.Clicked += OnCancelButtonClicked; + return cancelButton; + } + + private Button CreateStopButton() + { + var stopButton = new Button() + { + Text = GetText(nameof(Resources.IDS_WIFI_SK_STOP)), + WidthSpecification = 300, + HeightSpecification = 80, + }; + stopButton.Clicked += OnStopButtonClicked; + return stopButton; + } + + private void OnCancelButtonClicked(object sender, ClickedEventArgs e) + { + Debug("+"); + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(this); + } + + private void OnStopButtonClicked(object source, ClickedEventArgs args) + { + Debug("+"); + var connectingPeer = WiFiDirect.GetConnectingPeer(); + if (connectingPeer != null) + { + connectingPeer.CancelConnection(); + } + + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(this); + } + + string GetText(string str) + { + return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(str); + } + } +} diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs b/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs index 892c150..32ad27b 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs @@ -3,6 +3,7 @@ using Tizen.NUI; using Tizen.NUI.Components; using SettingWiFiDirect.TextResources; using static SettingWiFiDirect.Logger; +using System; namespace SettingWiFiDirect { @@ -10,7 +11,6 @@ namespace SettingWiFiDirect { private Timer mTimer; private Progress mProgress; - private ConnectionPopup mAlertPage = null; private const int MaxDuration = 120; private Peer mConnectingPeer = null; @@ -67,10 +67,7 @@ namespace SettingWiFiDirect if (mProgress.CurrentValue == MaxDuration) { - if (mAlertPage != null) - { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mAlertPage); - } + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(this); return false; } @@ -83,10 +80,7 @@ namespace SettingWiFiDirect mTimer.Stop(); string macAddress = mConnectingPeer.Address; WiFiDirect.RejectConnection(macAddress); - if (mAlertPage != null) - { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mAlertPage); - } + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(this); } private Button CreateOkButton() @@ -136,16 +130,7 @@ namespace SettingWiFiDirect Debug("+"); string macAddress = mConnectingPeer.Address; WiFiDirect.AcceptConnection(macAddress); - if (mAlertPage != null) - { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mAlertPage); - } - } - - public void SetPopupPage(ConnectionPopup page) - { - Debug("+"); - mAlertPage = page; + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(this); } string GetText(string str) @@ -153,5 +138,17 @@ namespace SettingWiFiDirect return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(str); } + public void ShowPopup() + { + Debug("+"); + try + { + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Add(this); + } + catch (Exception e) + { + Debug("Error in showing popup.." + e.Message); + } + } } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs b/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs index d8c20cc..dbb1edb 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs @@ -123,10 +123,12 @@ namespace SettingWiFiDirect } } - public void UpdateTitle() + public void ClearList() { Debug("+"); - mPeerCollection.Title = mAvailableGroupTitle; + this.Clear(); + mPeerCollection = new DeviceCollection(mAvailableGroupTitle); + this.Add(mPeerCollection); } private void AddConnectedDevice() diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk deleted file mode 100644 index c2d4b9e..0000000 Binary files a/packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk and /dev/null differ diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.5.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.5.rpk new file mode 100644 index 0000000..3d134cf Binary files /dev/null and b/packaging/org.tizen.cssetting-wifi-direct-1.0.5.rpk differ diff --git a/packaging/org.tizen.setting-wifi-direct.spec b/packaging/org.tizen.setting-wifi-direct.spec index b54e636..ddb0f1f 100644 --- a/packaging/org.tizen.setting-wifi-direct.spec +++ b/packaging/org.tizen.setting-wifi-direct.spec @@ -1,6 +1,6 @@ Name: org.tizen.setting-wifi-direct summary: NUI wifi-direct setting application -Version: 1.0.4 +Version: 1.0.5 Release: 1 Provides: org.tizen.setting-wifi-direct = %{version}-%{release} Group: Applications/Security