private void OnDropBT(object sender, SurfaceDragDropEventArgs e) { var element = e.OriginalSource as FrameworkElement; if (element != null) { if (element.DataContext is BluetoothDevice) { // Target is a Bluetooth device var device = element.DataContext as BluetoothDevice; if (e.Cursor.Data is ContentItem) { var ci = e.Cursor.Data as ContentItem; ObexItem oi = null; if (ci.IsPictureItem) { oi = new ObexImage() { ImageUri = new Uri("pack://application:,,,/" + ci.FileName) }; } else if (ci.IsVisitItem) { oi = new ObexContactItem() { FirstName = ci.Name, LastName = ci.FileName, EmailAddress = ci.Email, MobileTelephoneNumber = ci.Tlf }; } if (oi != null) { // Pause discovery as it interferes with/slows down beam process _monitor.StopDiscovery(); // Create the new request and write the contact details var owr = new ObexWebRequest(new Uri("obex://" + device.DeviceAddress.ToString() + "/" + oi.FileName)); System.IO.Stream s = owr.GetRequestStream(); oi.WriteToStream(s); owr.ContentType = oi.ContentType; owr.ContentLength = s.Length; s.Close(); // Beam the item on new thread System.Threading.ThreadPool.QueueUserWorkItem(BeamObject, owr); } // Return item to the scatter view TargetItems.Add(e.Cursor.Data as ContentItem); var item = scatterViewTarget.Items[scatterViewTarget.Items.Count - 1]; favouriteStack.RemoveInstancePropertyObject(item); } } // Otherwise not supported } }
private void Transfer(ObexTransferObject obj) { ObexWebResponse rsp = null; ObexWebRequest req; try { Uri uri = new Uri("obex://" + obj.Target.address.ToString() + "/" + obj.Filename); req = new ObexWebRequest(uri); req.Timeout = 15000; using(Stream content = req.GetRequestStream()) { content.Write(obj.Data, 0, obj.Data.Length); content.Flush(); req.ContentLength = obj.Data.Length; req.ContentType = obj.MimeType; } rsp = (req.GetResponse() as ObexWebResponse); } catch(Exception e) { General.WriteLogLine(e.GetType().Name + " while transferring '" + obj.Filename + "' data to " + obj.Target.address.ToString() + ": " + e.Message); } if((rsp != null) && (rsp.StatusCode != ObexStatusCode.OK)) General.WriteLogLine("Received response code: " + rsp.StatusCode + " while transferring '" + obj.Filename + "' data to " + obj.Target.address.ToString()); if(rsp != null) rsp.Close(); }
private void OnDrop(object sender, SurfaceDragDropEventArgs e) { FrameworkElement element = e.OriginalSource as FrameworkElement; if (element != null) { ContentItem content = e.Cursor.Data as ContentItem; // ensuring that target is a Bluetooth device and data is ContentItem if (element.DataContext is BluetoothDeviceInfo && content != null) { BluetoothDeviceInfo device = element.DataContext as BluetoothDeviceInfo; // Pause discovery as it interferes with/slows down beam process BlueTimer.Stop(); // Create the new request and write the contact details //ObexWebRequest owr = new ObexWebRequest(new Uri("obex://" + device.DeviceAddress.ToString() + "/" + oi.FileName)); ObexWebRequest owr = new ObexWebRequest(new Uri(String.Format("obex://{0}/{1}", device.DeviceAddress, content.ObexFileName))); using (System.IO.Stream s = owr.GetRequestStream()) { StreamHelper.WriteToStream(s, content); owr.ContentType = content.ObexContentType; owr.ContentLength = s.Length; s.Close(); } // Beam the item on new thread System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(BeamObject), owr); } } }