Implementation of cancel connection popup 14/322514/2
authorSaksham Grover <s.grover@partner.samsung.com>
Mon, 7 Apr 2025 06:02:32 +0000 (11:32 +0530)
committerSaksham Grover <s.grover@partner.samsung.com>
Thu, 10 Apr 2025 09:28:28 +0000 (14:58 +0530)
This patch:
- Implements cancel connection popup and functionality
- Resolves issue in connection request popup
Change-Id: Ie2d77c7585ac0a85a5f1cf45b93f2d2f2d1619bd
Signed-off-by: Saksham Grover <s.grover@partner.samsung.com>
14 files changed:
SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx
SettingWiFiDirect/SettingWiFiDirect/controller/WiFiDirect.cs
SettingWiFiDirect/SettingWiFiDirect/model/Peer.cs
SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml
SettingWiFiDirect/SettingWiFiDirect/view/CancelConnectionPopup.cs [new file with mode: 0644]
SettingWiFiDirect/SettingWiFiDirect/view/ConnectionPopup.cs
SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs
packaging/org.tizen.cssetting-wifi-direct-1.0.4.rpk [deleted file]
packaging/org.tizen.cssetting-wifi-direct-1.0.5.rpk [new file with mode: 0644]
packaging/org.tizen.setting-wifi-direct.spec

index 05a2b28f833d8dcc7756dacb1633855a8b66eb4b..05863d7e1a9ad60448971b423966efe5b2dc8717 100644 (file)
@@ -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;
+        }
     }
 }
index e6f08877a4b61dbd58b952322d86d937c1f4be0d..e69f3df59d4928b1a351ed6a2d206c7f6c69b68a 100644 (file)
@@ -180,6 +180,15 @@ namespace SettingWiFiDirect.TextResources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to This Wi-Fi Direct connection will be canceled..
+        /// </summary>
+        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);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Cancel.
         /// </summary>
index a183863db6e22b6f97c9333a0c88b12073966702..ad0e3b69cf5a0965d17ca7f60b7e84d8ce8d6274 100644 (file)
     <value>Connect to ({0}) in ({1}) seconds.
 </value>
   </data>
+  <data name="IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED" xml:space="preserve">
+    <value>This Wi-Fi Direct connection will be canceled.</value>
+  </data>
   <data name="IDS_WIFI_SK2_OK" xml:space="preserve">
     <value>OK</value>
   </data>
index 8dc425c6f6fc9f2b55ce1e614c188d03b577b08f..857a135ed763356d1cdc8396a67b52d71afa0165 100644 (file)
   <data name="IDS_WIFI_POP_CONNECT_TO_PS_IN_PD_SECONDS" xml:space="preserve">
     <value>({1})에 ({0})초 이내에 연결됩니다.</value>
   </data>
+  <data name="IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED" xml:space="preserve">
+    <value>Wi-Fi 다이렉트 연결을 취소합니다.</value>
+  </data>
   <data name="IDS_WIFI_SK2_OK" xml:space="preserve">
     <value>확인</value>
   </data>
index 2c5afe83499c24edfbec70aaf552898321739d10..5cf191c35af6d82603c7ac969b9c72a35fe5f6fa 100644 (file)
   <data name="IDS_WIFI_POP_CONNECT_TO_PS_IN_PD_SECONDS" xml:space="preserve">
     <value>Connect to ({0}) in ({1}) seconds.</value>
   </data>
+  <data name="IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED" xml:space="preserve">
+    <value>This Wi-Fi Direct connection will be canceled.</value>
+  </data>
   <data name="IDS_WIFI_SK2_OK" xml:space="preserve">
     <value>ok</value>
   </data>
index 77dae14ed10ae2910c461354622f307e93c9a2ae..05556f003c0186ae1756163ca081cf3b2e24aea7 100644 (file)
@@ -273,6 +273,11 @@ namespace SettingWiFiDirect
                 Error("Error: " + e.Message + "\n" + e.StackTrace);
             }
         }
+
+        static public WiFiDirectState GetState()
+        {
+            return WiFiDirectManager.State;
+        }
     }
 
     internal class WFDStateChangedEventArgs
index 97c256f93be873f46206d408e3c182f71842b51c..c766b010bc4cf24697be390129a6c760d1957dcb 100644 (file)
@@ -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);
+            }
+        }
+
     }
 }
index 2f1f9b793dbb98b2a843227f0beea494b070f37b..55d077228d118a957cf1a6e4c40c174a237835c5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns="http://tizen.org/ns/packages" api-version="7.0"
-  package="org.tizen.cssetting-wifi-direct" version="1.0.4"
+  package="org.tizen.cssetting-wifi-direct" version="1.0.5"
   res-type="org.tizen.appfw.gadget.setting-wifi-direct" res-version="1.0.0">
        <allowed-package id="org.tizen.*">
                <required-privileges>
diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/CancelConnectionPopup.cs b/SettingWiFiDirect/SettingWiFiDirect/view/CancelConnectionPopup.cs
new file mode 100644 (file)
index 0000000..cdd56d8
--- /dev/null
@@ -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);
+        }
+    }
+}
index 892c15000ebeef058883bffa6198493515ce7894..32ad27bc3d463a1adb578bc6e483faec3e497f3d 100644 (file)
@@ -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);
+            }
+        }
     }
 }
index d8c20ccf1403d387b4ba770e5c03cf575712e696..dbb1edbbda43ab1545a91986bce9f2146fffb00c 100644 (file)
@@ -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 (file)
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 (file)
index 0000000..3d134cf
Binary files /dev/null and b/packaging/org.tizen.cssetting-wifi-direct-1.0.5.rpk differ
index b54e636ae31b4057c89e4f3680a1b38014df2077..ddb0f1fcfa7b0a4c15665977774e6aaa8a03fb66 100644 (file)
@@ -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