async void model_PeerDiscovered(ShareTarget shareTarget)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
     {
         Targets.Add(shareTarget);
     });
 }
        async void PeerDiscovered(ShareTarget discoveredTarget)
        {
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                bool alreadyDiscovered = false;

                foreach (ShareTarget target in Targets)
                {
                    if (target.Equals(discoveredTarget))
                    {
                        alreadyDiscovered = true;
                        break;
                    }
                }

                if (!alreadyDiscovered)
                {
                    Targets.Add(discoveredTarget);
                }
            });
        }
示例#3
0
        private async void Share(ShareTarget target)
        {
            if (this.EnsureUnsnapped())
            {
                var filePicker = new FileOpenPicker();
                filePicker.ViewMode = PickerViewMode.Thumbnail;
                filePicker.CommitButtonText = "Share File";
                filePicker.SettingsIdentifier = "becharming";
                filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
                filePicker.FileTypeFilter.Add("*");

                var selectedFile = await filePicker.PickSingleFileAsync();

                if (selectedFile != null)
                {
                    var properties = await selectedFile.GetBasicPropertiesAsync();
                    var size = properties.Size;
                    var fileStream = await selectedFile.OpenReadAsync();

                    using (DataReader dataReader = new DataReader(fileStream))
                    {
                        await dataReader.LoadAsync((uint)size);
                        byte[] buffer = new byte[(int)size];

                        dataReader.ReadBytes(buffer);

                        var fileBytes = buffer;

                        ShareRequest request = new ShareRequest();
                        request.FileContents = fileBytes;
                        request.FileName = selectedFile.Name;
                        request.Target = target;

                        ((MainViewModel)DataContext).Share(request);
                    }
                }
            }
        }
示例#4
0
 public void PerformShare(ShareTarget shareTarget)
 {
 }
示例#5
0
 public void PerformShare(ShareTarget shareTarget)
 {
     shareIntent.SetPackage(shareTarget.PackageName);
     CrossCurrentActivity.Current.Activity.StartActivity(shareIntent);
 }
 public void IncrementShareCount(ShareTarget target)
 {
     model.IncrementShareCount(target);
 }
 public void AddTargetExecute(object state)
 {
     var target = new ShareTarget() { IPAddress = TargetIPAddress, Name = TargetName };
     model.AddShareTarget(target);
     ShowAddNewShareTarget = false;
 }
        void socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            DataReader dr = args.GetDataReader();
            var dataLength = dr.UnconsumedBufferLength;

            string discoveryResult = dr.ReadString(dataLength);
            string[] parts = discoveryResult.Split('|');
            string name = parts[0];
            bool isPinProtected = bool.Parse(parts[1]);
            string uniqueName = parts[3];

            var existingTarget = GetShareTarget(uniqueName);

            var discoveredTarget = new ShareTarget()
            {
                Name = name,
                IPAddress = args.RemoteAddress.DisplayName,
                IsPinCodeRequired = isPinProtected,
                ShareTargetUniqueName = uniqueName
            };

            if (existingTarget != null)
            {
                discoveredTarget.ShareCount = existingTarget.ShareCount;
            }

            if (PeerDiscovered != null)
            {
                PeerDiscovered(discoveredTarget);
            }
        }
        public void DeleteShareTarget(ShareTarget shareTarget)
        {
            var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
            var container = localSettings.CreateContainer("BeCharmingSettings", Windows.Storage.ApplicationDataCreateDisposition.Always);

            List<ShareTarget> shareTargets = null;

            if (container.Values["ShareTargets"] != null)
            {
                shareTargets = ObjectSerializer<List<ShareTarget>>.FromXml(container.Values["ShareTargets"] as string);
            }

            shareTargets.Remove(shareTarget);

            var xml = ObjectSerializer<List<ShareTarget>>.ToXml(shareTargets);

            container.Values["ShareTargets"] = xml;
        }
        public void IncrementShareCount(ShareTarget target)
        {
            var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
            var container = localSettings.CreateContainer("BeCharmingSettings", Windows.Storage.ApplicationDataCreateDisposition.Always);

            List<ShareTarget> shareTargets = null;

            if (container.Values["ShareTargets"] != null)
            {
                shareTargets = ObjectSerializer<List<ShareTarget>>.FromXml(container.Values["ShareTargets"] as string);
            }
            else
            {
                shareTargets = new List<ShareTarget>();
                container.Values["ShareTargets"] = ObjectSerializer<List<ShareTarget>>.ToXml(shareTargets);
            }

            var targetToUpdate = shareTargets.Where(t => t.ShareTargetUniqueName == target.ShareTargetUniqueName).SingleOrDefault();

            target.ShareCount++;

            if (targetToUpdate == null)
            {
                shareTargets.Add(target);
            }
            else
            {
                targetToUpdate.ShareCount = target.ShareCount;
            }

            var xml = ObjectSerializer<List<ShareTarget>>.ToXml(shareTargets);

            container.Values["ShareTargets"] = xml;
        }
 public bool DoesTargetRequirePin(ShareTarget target)
 {
     return target.IsPinCodeRequired;
 }