From: Saksham Grover Date: Wed, 26 Mar 2025 09:11:32 +0000 (+0530) Subject: Handle connection request from peer X-Git-Tag: accepted/tizen/unified/20250428.091732~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F46%2F321746%2F3;p=profile%2Fiot%2Fapps%2Fdotnet%2Fsetting-wifi-direct.git Handle connection request from peer This patch: - Updates popup functionality and adds logic for buttons on popup - Updates scan-stop button functionality - Adds logic during the process of disconnecting from a peer Change-Id: Ifd7925968c7869b6d80e5abaca1a83aaf41cecfe Signed-off-by: Saksham Grover --- diff --git a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs index 5f73134..05a2b28 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs @@ -18,7 +18,7 @@ namespace SettingWiFiDirect private CollectionView mScanList; private Button mScanButton; bool mNeedScanning; - public override string ProvideTitle() => NUIGadgetResourceManager.GetString(nameof(Resources.IDS_WIFI_BODY_WI_FI_DIRECT_ABB)); + public override string ProvideTitle() => GetText(nameof(Resources.IDS_WIFI_BODY_WI_FI_DIRECT_ABB)); protected override void OnCustomizationUpdate(IEnumerable items) { @@ -32,7 +32,7 @@ namespace SettingWiFiDirect mScanButton = new Button() { - Text = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(nameof(Resources.IDS_WIFI_SK_STOP)) + Text = GetText(nameof(Resources.IDS_WIFI_SK_STOP)) }; mScanButton.Clicked += OnScanStopButtonClicked; mScanButton.ApplyStyle(viewStyle); @@ -40,16 +40,6 @@ namespace SettingWiFiDirect return new View[] { mScanButton }; } - public string GetButtonText() - { - if(WiFiDirect.IsDiscoverable()) - { - return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(nameof - (Resources.IDS_WIFI_SK_STOP)); - } - return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(nameof(Resources.IDS_WIFI_SK4_SCAN)); - } - private ViewStyle GetButtonViewStyle() { ViewStyle viewStyle = new ViewStyle(); @@ -92,7 +82,6 @@ namespace SettingWiFiDirect protected override View OnCreate() { WiFiDirect.WFDStateChanged += OnWFDStateChanged; - WiFiDirect.WFDStatusChanged += OnConnectionStatusChanged; Debug("MainPage: " + this.GetHashCode()); base.OnCreate(); @@ -106,7 +95,6 @@ namespace SettingWiFiDirect { Debug("+"); WiFiDirect.WFDStateChanged -= OnWFDStateChanged; - WiFiDirect.WFDStatusChanged -= OnConnectionStatusChanged; base.OnDestroy(); } @@ -190,24 +178,32 @@ namespace SettingWiFiDirect switch (e.State) { case WFDState.Discovering: + UpdateScanButton(true); ChangeScanningState(true); + WiFiDirect.WFDStatusChanged += OnConnectionStatusChanged; break; case WFDState.Activated: if (mNeedScanning) { StartScan(); + UpdateScanButton(true); + ChangeScanningState(true); }else { UpdateDeviceList(); + UpdateScanButton(true); ChangeScanningState(false); } break; case WFDState.Connected: + UpdateScanButton(false); ChangeScanningState(false); ShowConnectedDevice(); break; case WFDState.Disconnecting: mNeedScanning = true; + mPeerSource.UpdateTitle(); + WiFiDirect.WFDStatusChanged -= OnConnectionStatusChanged; break; //TODO: update for further states. @@ -222,25 +218,33 @@ namespace SettingWiFiDirect { case WiFiDirectConnectionState.ConnectionRequest: - OnConnectionRequest(); - break; + var connectingPeer = WiFiDirect.GetConnectingPeer(); + if (connectingPeer != null) + { + Debug("Connecting Peer macAddress : " + connectingPeer.Address); + } + else + { + Debug("Connecting Peer is NULL"); + return; + } + OnConnectionRequest(connectingPeer); + break; default: break; } - } - private void OnConnectionRequest() + private void OnConnectionRequest(Peer connectingPeer) { try { - ConnectionPopup connectionPopup = new ConnectionPopup(); - var page = connectionPopup.ConnectionPopupPage(); + var page = new ConnectionPopup(connectingPeer); if (page != null) { NUIApplication.GetDefaultWindow().GetDefaultNavigator().Add(page); - connectionPopup.SetPopupPage(page); + page.SetPopupPage(page); } else { @@ -318,7 +322,6 @@ namespace SettingWiFiDirect Debug("Discovery started"); mNeedScanning = false; ChangeScanningState(true); - mScanButton.Text = GetButtonText(); } Debug("-"); } @@ -347,8 +350,7 @@ namespace SettingWiFiDirect private TextLabel GetHeader() { Debug("+"); - string headerString = NUIGadgetResourceManager.GetString( - nameof(Resources.IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES)); + string headerString = GetText(nameof(Resources.IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES)); string label = string.Format(headerString, WiFiDirect.getDeviceName()); TextLabel header = new TextLabel(label); @@ -388,15 +390,33 @@ namespace SettingWiFiDirect private void StopDiscovery() { Debug("+"); + WiFiDirect.WFDStatusChanged -= OnConnectionStatusChanged; bool discoveryStopped = WiFiDirect.StopDiscovery(); if (discoveryStopped) { Debug("Discovery stopped"); mNeedScanning = false; ChangeScanningState(false); - mScanButton.Text = GetButtonText(); } Debug("-"); } + + private void UpdateScanButton(bool visible) + { + mScanButton.IsEnabled = visible; + if (WiFiDirect.IsDiscoverable()) + { + mScanButton.Text = GetText(nameof(Resources.IDS_WIFI_SK_STOP)); + } + else + { + mScanButton.Text = GetText(nameof(Resources.IDS_WIFI_SK4_SCAN)); + } + } + + string GetText(string str) + { + return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(str); + } } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.csproj b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.csproj index fc91e74..3ab8bf2 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.csproj +++ b/SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.csproj @@ -14,7 +14,8 @@ - + + diff --git a/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs b/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs index fa9af63..77dae14 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs @@ -231,6 +231,48 @@ namespace SettingWiFiDirect return true; } + static public Peer GetConnectingPeer() + { + Debug("+"); + try + { + WiFiDirectPeer wfdpeer = WiFiDirectManager.GetConnectingPeer(); + Peer connectingPeer = CreatePeer(wfdpeer); + return connectingPeer; + } + catch (Exception e) + { + Error("Error: " + e.Message + "\n" + e.StackTrace); + } + + return null; + } + + static public void RejectConnection(string macAddress) + { + Debug("+"); + try + { + WiFiDirectManager.RejectConnection(macAddress); + } + catch (Exception e) + { + Error("Error: " + e.Message + "\n" + e.StackTrace); + } + } + + static public void AcceptConnection(string macAddress) + { + Debug("+"); + try + { + WiFiDirectManager.AcceptConnection(macAddress); + } + catch (Exception e) + { + Error("Error: " + e.Message + "\n" + e.StackTrace); + } + } } internal class WFDStateChangedEventArgs diff --git a/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml b/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml index d0594e5..2f1f9b7 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml +++ b/SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml @@ -1,6 +1,6 @@ diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs b/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs index a88e66e..892c150 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs @@ -6,14 +6,21 @@ using static SettingWiFiDirect.Logger; namespace SettingWiFiDirect { - internal class ConnectionPopup:ContentPage + internal class ConnectionPopup : DialogPage { private Timer mTimer; private Progress mProgress; - private ContentPage mContentPage = null; + private ConnectionPopup mAlertPage = null; private const int MaxDuration = 120; + private Peer mConnectingPeer = null; - internal ContentPage ConnectionPopupPage() + public ConnectionPopup(Peer connectingPeer) + { + mConnectingPeer = connectingPeer; + CreateComponents(); + } + + internal void CreateComponents() { var connectionRequestView = new View() { @@ -30,9 +37,8 @@ namespace SettingWiFiDirect connectionRequestView.Add(item); int timeout = 120; - string message = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString( - nameof(Resources.IDS_WIFI_POP_CONNECT_TO_PS_IN_PD_SECONDS)); - string label = string.Format(message, WiFiDirect.getDeviceName(), timeout); + string message = GetText(nameof(Resources.IDS_WIFI_POP_CONNECT_TO_PS_IN_PD_SECONDS)); + string label = string.Format(message, mConnectingPeer.Name, timeout); var messageItem = new TextLabel(label) { @@ -47,18 +53,12 @@ namespace SettingWiFiDirect var cancelButton = CreateCancelButton(); var okButton = CreateOkButton(); - ContentPage page = new ContentPage() + Content = new AlertDialog() { - Content = new AlertDialog() - { - Title = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString( - nameof(Resources.IDS_WIFI_HEADER_WI_FI_DIRECT_CONNECTION_ABB)), - Content = connectionRequestView, - Actions = new View[] { cancelButton, okButton }, - }, + Title = GetText(nameof(Resources.IDS_WIFI_HEADER_WI_FI_DIRECT_CONNECTION_ABB)), + Content = connectionRequestView, + Actions = new View[] { cancelButton, okButton }, }; - - return page; } private bool OnTimerTick() @@ -67,9 +67,9 @@ namespace SettingWiFiDirect if (mProgress.CurrentValue == MaxDuration) { - if (mContentPage != null) + if (mAlertPage != null) { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mContentPage); + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mAlertPage); } return false; } @@ -81,9 +81,11 @@ namespace SettingWiFiDirect { Debug("+"); mTimer.Stop(); - if (mContentPage != null) + string macAddress = mConnectingPeer.Address; + WiFiDirect.RejectConnection(macAddress); + if (mAlertPage != null) { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mContentPage); + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mAlertPage); } } @@ -91,8 +93,7 @@ namespace SettingWiFiDirect { var okButton = new Button() { - Text = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString( - nameof(Resources.IDS_WIFI_SK2_OK)), + Text = GetText(nameof(Resources.IDS_WIFI_SK2_OK)), WidthSpecification = 300, HeightSpecification = 80, }; @@ -104,8 +105,7 @@ namespace SettingWiFiDirect { var cancelButton = new Button() { - Text = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString( - nameof(Resources.IDS_WIFI_SK_CANCEL)), + Text = GetText(nameof(Resources.IDS_WIFI_SK_CANCEL)), WidthSpecification = 300, HeightSpecification = 80, }; @@ -134,16 +134,23 @@ namespace SettingWiFiDirect private void OnOkConfirmed(object source, ClickedEventArgs args) { Debug("+"); - if (mContentPage != null) + string macAddress = mConnectingPeer.Address; + WiFiDirect.AcceptConnection(macAddress); + if (mAlertPage != null) { - NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mContentPage); - } //TODO + NUIApplication.GetDefaultWindow().GetDefaultNavigator().Remove(mAlertPage); + } } - public void SetPopupPage(ContentPage page) + public void SetPopupPage(ConnectionPopup page) { Debug("+"); - mContentPage = page; + mAlertPage = page; + } + + string GetText(string str) + { + return ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(str); } } diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs b/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs index 2761e55..d8c20cc 100644 --- a/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs +++ b/SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs @@ -123,6 +123,12 @@ namespace SettingWiFiDirect } } + public void UpdateTitle() + { + Debug("+"); + mPeerCollection.Title = mAvailableGroupTitle; + } + private void AddConnectedDevice() { Debug("+"); diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk deleted file mode 100644 index 61482cf..0000000 Binary files a/packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk and /dev/null differ diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk new file mode 100644 index 0000000..c2d4b9e Binary files /dev/null and b/packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk differ diff --git a/packaging/org.tizen.setting-wifi-direct.spec b/packaging/org.tizen.setting-wifi-direct.spec index eed40b2..b54e636 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.3 +Version: 1.0.4 Release: 1 Provides: org.tizen.setting-wifi-direct = %{version}-%{release} Group: Applications/Security