protected override View OnCreate()
{
- Debug("+");
+ Debug("MainPage: " + this.GetHashCode());
base.OnCreate();
ResourceManager.TextResourceManager = this;
mPeerSource = new PeerSource();
return CreateComponents();
}
+ protected override void OnDestroy()
+ {
+ Debug("+");
+ base.OnDestroy();
+ }
+
+ ~MainPage()
+ {
+ Debug("+");
+ }
+
internal View CreateLoadingIcon()
{
var lottieAnimationView = new LottieAnimationView()
private void OnWFDStateChanged(Object sender, WFDStateChangedEventArgs e)
{
- Debug("State: " + e.State);
+ Debug("State: " + e.State + " MainPage addrees: " + this.GetHashCode());
switch (e.State)
{
case WFDState.Discovering:
UpdateDeviceList();
mPeerSource.SetScanningState(false);
break;
+ case WFDState.Connected:
+ ShowConnectedDevice();
+ break;
//TODO: update for further states.
}
}
//item.Extra = GetInfoButton();
item.IsSelectable = false;
item.SizeWidth = mScanList.SizeWidth;
+
+ item.Clicked += OnPeerClicked;
return item;
});
}
}
}
+ private void ShowConnectedDevice()
+ {
+ Debug("+");
+ List<Peer> peerList = mWifiDirect.GetConnectedDevices();
+ mPeerSource.ShowConnectedPeer(peerList);
+ }
+
private TextLabel GetHeader()
{
Debug("+");
return header;
}
+
+ private void OnPeerClicked(object sender, ClickedEventArgs e)
+ {
+ Debug("this: " + this.GetHashCode());
+ DefaultLinearItem listItem = (DefaultLinearItem)sender;
+ var peer = listItem.BindingContext as Peer;
+ Info("Name: " + peer.Name + " Address: " + peer.Address);
+ if(!peer.IsConnected())
+ {
+ Debug("Devices is not already connected.");
+ peer.Connect();
+ }else
+ {
+ Debug("Disconnect");
+ peer.Disconnect();
+ }
+ }
}
}
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="SettingCore" Version="1.0.346" />
- <PackageReference Include="Tizen.NET" Version="12.0.0.18043" />
+ <PackageReference Include="SettingCore" Version="1.0.435" />
+ <PackageReference Include="Tizen.NET" Version="13.0.0.18570" />
</ItemGroup>
<ItemGroup>
namespace SettingWiFiDirect.TextResources {
using System;
-
-
+
+
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class Resources
- {
-
+ public class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
static private string mResourcePath = "";
{
return mResourcePath;
}
- internal Resources()
- {
- }
+ internal Resources() {
+ }
+
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if (object.ReferenceEquals(resourceMan, null))
- {
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SettingWiFiDirect.TextResources.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
-
+
/// <summary>
/// Looks up a localized string similar to Available.
/// </summary>
}
}
+ /// <summary>
+ /// Looks up a localized string similar to Connection failed.
+ /// </summary>
+ public static string IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2 {
+ get {
+ return ResourceManager.GetString("IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Connected.
+ /// </summary>
+ public static string IDS_COM_BODY_CONNECTED_M_STATUS {
+ get {
+ return ResourceManager.GetString("IDS_COM_BODY_CONNECTED_M_STATUS", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Connected devices.
+ /// </summary>
+ public static string IDS_ST_HEADER_CONNECTED_DEVICES {
+ get {
+ return ResourceManager.GetString("IDS_ST_HEADER_CONNECTED_DEVICES", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Connecting....
+ /// </summary>
+ public static string IDS_WIFI_BODY_CONNECTING_ING {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_BODY_CONNECTING_ING", resourceCulture);
+ }
+ }
+
/// <summary>
/// Looks up a localized string similar to Wi-Fi Direct.
/// </summary>
}
/// <summary>
- /// Looks up a localized string similar to Your device (%s) is currently visible to nearby devices..
+ /// Looks up a localized string similar to Your device ({0}) is currently visible to nearby devices..
/// </summary>
public static string IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES {
get {
return ResourceManager.GetString("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB", resourceCulture);
}
}
+
+ /// <summary>
+ /// Looks up a localized string similar to Cancel.
+ /// </summary>
+ public static string IDS_WIFI_SK_CANCEL {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_SK_CANCEL", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Disconnect.
+ /// </summary>
+ public static string IDS_WIFI_SK_DISCONNECT {
+ get {
+ return ResourceManager.GetString("IDS_WIFI_SK_DISCONNECT", resourceCulture);
+ }
+ }
}
}
<data name="IDS_CHATON_BODY_AVAILABLE" xml:space="preserve">
<value>Available</value>
</data>
+ <data name="IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2" xml:space="preserve">
+ <value>Connection failed</value>
+ </data>
+ <data name="IDS_COM_BODY_CONNECTED_M_STATUS" xml:space="preserve">
+ <value>Connected</value>
+ </data>
+ <data name="IDS_ST_HEADER_CONNECTED_DEVICES" xml:space="preserve">
+ <value>Connected devices</value>
+ </data>
+ <data name="IDS_WIFI_BODY_CONNECTING_ING" xml:space="preserve">
+ <value>Connecting...</value>
+ </data>
<data name="IDS_WIFI_BODY_WI_FI_DIRECT_ABB" xml:space="preserve">
<value>Wi-Fi Direct</value>
</data>
<data name="IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB" xml:space="preserve">
<value>Available devices</value>
</data>
-</root>
+ <data name="IDS_WIFI_SK_CANCEL" xml:space="preserve">
+ <value>Cancel</value>
+ </data>
+ <data name="IDS_WIFI_SK_DISCONNECT" xml:space="preserve">
+ <value>Disconnect</value>
+ </data>
+</root>
\ No newline at end of file
<data name="IDS_CHATON_BODY_AVAILABLE" xml:space="preserve">
<value>가능</value>
</data>
+ <data name="IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2" xml:space="preserve">
+ <value>연결 안 됨</value>
+ </data>
+ <data name="IDS_COM_BODY_CONNECTED_M_STATUS" xml:space="preserve">
+ <value>연결됨</value>
+ </data>
+ <data name="IDS_ST_HEADER_CONNECTED_DEVICES" xml:space="preserve">
+ <value>연결된 디바이스</value>
+ </data>
+ <data name="IDS_WIFI_BODY_CONNECTING_ING" xml:space="preserve">
+ <value>연결 중...</value>
+ </data>
<data name="IDS_WIFI_BODY_WI_FI_DIRECT_ABB" xml:space="preserve">
<value>Wi-Fi 다이렉트</value>
</data>
<data name="IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB" xml:space="preserve">
<value>사용 가능한 디바이스</value>
</data>
-</root>
+ <data name="IDS_WIFI_SK_CANCEL" xml:space="preserve">
+ <value>취소</value>
+ </data>
+ <data name="IDS_WIFI_SK_DISCONNECT" xml:space="preserve">
+ <value>연결 해제</value>
+ </data>
+</root>
\ No newline at end of file
<data name="IDS_CHATON_BODY_AVAILABLE" xml:space="preserve">
<value>Available</value>
</data>
+ <data name="IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2" xml:space="preserve">
+ <value>Connection failed</value>
+ </data>
+ <data name="IDS_COM_BODY_CONNECTED_M_STATUS" xml:space="preserve">
+ <value>Connected</value>
+ </data>
+ <data name="IDS_ST_HEADER_CONNECTED_DEVICES" xml:space="preserve">
+ <value>Connected devices</value>
+ </data>
+ <data name="IDS_WIFI_BODY_CONNECTING_ING" xml:space="preserve">
+ <value>Connecting...</value>
+ </data>
<data name="IDS_WIFI_BODY_WI_FI_DIRECT_ABB" xml:space="preserve">
<value>Wi-Fi Direct</value>
</data>
<data name="IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB" xml:space="preserve">
<value>Available devices</value>
</data>
-</root>
+ <data name="IDS_WIFI_SK_CANCEL" xml:space="preserve">
+ <value>Cancel</value>
+ </data>
+ <data name="IDS_WIFI_SK_DISCONNECT" xml:space="preserve">
+ <value>Disconnect</value>
+ </data>
+</root>
\ No newline at end of file
return null;
}
+ public List<Peer> GetConnectedDevices()
+ {
+ Debug("+");
+ try
+ {
+ mFoundDeviceList = WiFiDirectManager.GetConnectedPeers();
+ return GetPeerList();
+ }
+ catch (Exception e)
+ {
+ Debug("Fail to get connected peers " + e.ToString());
+ }
+
+ return null;
+ }
+
public List<Peer> GetPeerList()
{
Debug("+");
Name = peer.Name;
Address = peer.MacAddress;
mRssi = peer.Rssi;
- mStateInfo = "Available"; //TODO
+ mStateInfo = GetStateInfo();
+ mWfdPeer.ConnectionStateChanged += ConnectionStateChanged;
+ }
+
+ private void ConnectionStateChanged(object sender, ConnectionStateChangedEventArgs e)
+ {
+ Debug(this.GetHashCode() + " State: " + e.State + " Address: " + e.MacAddress);
+ if (e.MacAddress == mAddress)
+ {
+ Debug("+");
+ switch (e.State)
+ {
+ case WiFiDirectConnectionState.ConnectionRsp:
+ Debug("Update stateInfo");
+ StateInfo = "Connected";
+ break;
+ case WiFiDirectConnectionState.ConnectionWpsRequest:
+ break;
+ case WiFiDirectConnectionState.DisconnectRsp:
+ Debug("Update stateInfo");
+ StateInfo = "Available";
+ break;
+ case WiFiDirectConnectionState.DisconnectInd:
+ Debug("Update stateInfo");
+ StateInfo = "Available";
+ break;
+
+ }
+ }
+ Debug("StateInfo " + StateInfo);
}
private void OnPropertyChanged(string propertyName)
OnPropertyChanged("StateInfo");
}
}
+
private string GetStateInfo(WiFiDirectConnectionState state)
{
//TODO: update
- return "Available";
+ if (mWfdPeer.IsConnected)
+ {
+ return "Connected";
+ }else
+ {
+ return "Available";
+ }
+ }
+
+ private string GetStateInfo()
+ {
+ //TODO: update
+ if (mWfdPeer.IsConnected)
+ {
+ return "Connected";
+ }
+ else
+ {
+ return "Available";
+ }
+ }
+ public void Connect()
+ {
+ Debug("this: " + this.GetHashCode());
+ try
+ {
+ Debug("+");
+ mWfdPeer.Connect();
+ StateInfo = "Connecting...";
+ Debug("-");
+ }
+ catch (Exception e)
+ {
+ Error("Error in connecting peer. " + e.Message);
+ }
+
+ }
+
+ public void Disconnect()
+ {
+ Debug("this: " + this.GetHashCode());
+ try
+ {
+ mWfdPeer.Disconnect();
+ StateInfo = "Disconnecting...";
+ }
+ catch (Exception e)
+ {
+ Error("Error in disconnecting. " + e.Message);
+ }
+ }
+
+ public bool IsConnected()
+ {
+ Debug ("Connected?: " + mWfdPeer.IsConnected);
+ return mWfdPeer.IsConnected;
}
}
}
public class PeerSource : ObservableCollection<DeviceCollection>
{
private DeviceCollection mAvailable;
- private DeviceCollection mPaired;
+ private DeviceCollection mConnected;
public PeerSource()
{
internal void AddFoundPeers(List<Peer> peerList)
{
Debug("Size: " + peerList.Count);
+ mAvailable.Clear();
foreach (var item in peerList)
{
mAvailable.AddDevice(item);
{
mAvailable.IconOpacity = isScanning ? 1.0f : 0.0f;
}
+
+ public void ShowConnectedPeer(List<Peer> peerList)
+ {
+ Debug("+");
+
+ string groupTitle = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(
+ nameof(Resources.IDS_ST_HEADER_CONNECTED_DEVICES));
+
+ try
+ {
+ mConnected = new DeviceCollection(groupTitle);
+ Debug("Count: " + this.Count);
+ this.Clear();
+ Debug("Count: " + this.Count);
+ this.Add(mConnected);
+ Debug("Count: " + this.Count);
+ }
+ catch (Exception e)
+ {
+ Error(e.Message + "\n" + e.StackTrace);
+ }
+ Debug("Size: " + peerList.Count);
+ mConnected.Clear();
+ foreach (var item in peerList)
+ {
+ mConnected.AddDevice(item);
+ }
+ }
+
+ private void AddConnectedDevice()
+ {
+ Debug("+");
+ foreach (Peer peer in mAvailable)
+ {
+ Debug(peer.Name + " : " + peer.Address);
+ if (peer.IsConnected())
+ {
+ Debug("+" + peer.Name + "Connected.");
+ mConnected.AddDevice(peer);
+ }
+ }
+ }
}
}