public UIElementCollection_Insert()
        {
            this.InitializeComponent();

            Loaded += (snd, e) =>
            {
                When_Insert_First.Children.Insert(0, new Border
                {
                    Background = new SolidColorBrush(Color.FromArgb(0xff, 0xff, 0x00, 0x00)),
                    Margin     = ThicknessHelper.FromUniformLength(0),
                });

                When_Insert_Middle.Children.Insert(3, new Border
                {
                    Background = new SolidColorBrush(Color.FromArgb(0xff, 0x00, 0x80, 0x00)),
                    Margin     = ThicknessHelper.FromLengths(30, 0, 30, 0),
                });

                When_Insert_Last.Children.Add(new Border
                {
                    Background = new SolidColorBrush(Color.FromArgb(0xff, 0xa0, 0x00, 0xc0)),
                    Margin     = ThicknessHelper.FromLengths(50, 0, 50, 0),
                });
            };
        }
Example #2
0
        public Task When_ProgressRing_Collapsed() =>
        RunOnUIThread.ExecuteAsync(() =>
        {
            var SUT = new ProgressRing
            {
                Visibility = Visibility.Collapsed
            };

            var spacerBorder = new Border
            {
                Width  = 10,
                Height = 10,
                Margin = ThicknessHelper.FromUniformLength(5)
            };

            var root = new Grid
            {
                Children =
                {
                    spacerBorder,
                    SUT
                }
            };

            root.Measure(new Size(1000, 1000));
            Assert.AreEqual(10d + 5d + 5d, root.DesiredSize.Height);
        });
        private async void Grid_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerEventArgs e)
        {
            if (accountSettings.Margin.Right == 0)
            {
                accountSettings.Margin   = ThicknessHelper.FromLengths(0, 0, -346, 0);
                App.Settings["UserName"] = accountSettings.UserName;

                if (accountSettings.UserName.Length > 0 && accountSettings.Password.Length > 0 && !App.isLoggedIn)
                {
                    await LoginReddit();

                    Dispatcher.Invoke(CoreDispatcherPriority.Normal, (x, y) =>
                    {
                        Subreddits = new RedditCollection(App.isLoggedIn);
                        //Subreddits.LoadMoreItemsAsync(25, this.Dispatcher);
                    }, this, null);
                    //App.ShowCollection();
                    //try
                    //{
                    //    var request = (HttpWebRequest)WebRequest.Create("http://www.reddit.com/reddits/mine.json");
                    //    request.CookieContainer = new CookieContainer();

                    //    Cookie c = new Cookie("reddit_session", App.cookie.Replace(",", "%2C"));
                    //    request.CookieContainer.Add(new Uri("http://www.reddit.com"), c);

                    //    RequestState rs = new RequestState();
                    //    rs.Request = request;

                    //    var response = request.BeginGetResponse(new AsyncCallback(RespCallback), rs);
                    //    //LoadCollection(response);
                    //}
                    //catch (Exception)
                    //{

                    //}
                }
                else if (!accountSettings.SavePassword)
                {
                    App.Settings["SavePassword"] = false;
                    Task.Run(() =>
                    {
                        try
                        {
                            var passwords = App.PasswordVault.FindAllByResource("redditMetro");
                            foreach (var pass in passwords)
                            {
                                if (pass.UserName == accountSettings.UserName)
                                {
                                    App.PasswordVault.Remove(pass);
                                }
                            }
                        }
                        catch (Exception)
                        {
                            //user doesn't have a password stored, ignore
                        }
                    });
                }
            }
        }
Example #4
0
        private void Report(string msg, bool?isFailed = null)
        {
            var color  = new SolidColorBrush(Colors.LightGray);
            var prefix = "";

            if (isFailed == true)
            {
                color  = new SolidColorBrush(Colors.Red);
                prefix = "❌ ";
            }
            else if (isFailed == false)
            {
                color  = new SolidColorBrush(Colors.LightGreen);
                prefix = "✔️ ";
            }

            var ctl = new TextBlock
            {
                Text         = prefix + msg,
                Foreground   = color,
                Margin       = ThicknessHelper.FromLengths(8, 0, 0, 0),
                FontFamily   = new FontFamily("Courier New"),
                FontSize     = 11,
                TextWrapping = TextWrapping.Wrap
            };

            TestsResults.Children.Add(ctl);
            ctl.StartBringIntoView();
        }
Example #5
0
 public static void WritePropertyToXML(DependencyObject o, XmlWriter xml, DependencyProperty property, string propertyName)
 {
     if (o.IsPropertyAssigned(property))
     {
         string name;
         var    obj = o.GetValue(property);
         if (obj == null)
         {
             name = null;
         }
         else if (obj is double)
         {
             name = ((double)obj).ToString(CultureInfo.InvariantCulture);
         }
         else if (obj is Thickness)
         {
             name = ThicknessHelper.ToString((Thickness)obj);
         }
         else if (obj is FrameworkElement)
         {
             name = ((FrameworkElement)obj).Name;
         }
         else
         {
             name = obj.ToString();
         }
         xml.WriteAttributeString(propertyName, name);
     }
 }
        public ListView_Explicit_Items()
        {
            this.InitializeComponent();

            ListView.ItemsSource =
                Enumerable.Range(0, 30)
                .Select(i => new ListViewItem
            {
                Content = i,
                Margin  = ThicknessHelper.FromUniformLength(5),
            })
                .ToArray();
        }
Example #7
0
    public async Task When_Focused_Element_Scrolled()
    {
        var scrollViewer = new ScrollViewer()
        {
            Height = 200,
            Margin = ThicknessHelper.FromUniformLength(30)
        };
        var button = new Button()
        {
            Content = "Test",
            FocusVisualPrimaryThickness   = ThicknessHelper.FromUniformLength(10),
            FocusVisualSecondaryThickness = ThicknessHelper.FromUniformLength(10),
        };
        var topBorder = new Border()
        {
            Height = 150, Width = 300, Background = SolidColorBrushHelper.Blue
        };
        var bottomBorder = new Border()
        {
            Height = 300, Width = 300, Background = SolidColorBrushHelper.Red
        };
        var stackPanel = new StackPanel()
        {
            Children =
            {
                topBorder,
                button,
                bottomBorder,
            }
        };

        scrollViewer.Content = stackPanel;

        TestServices.WindowHelper.WindowContent = scrollViewer;
        await TestServices.WindowHelper.WaitForIdle();

        button.Focus(FocusState.Keyboard);
        await TestServices.WindowHelper.WaitForIdle();

        var visualTree       = Uno.UI.Xaml.Core.CoreServices.Instance.ContentRootCoordinator.CoreWindowContentRoot?.VisualTree;
        var focusVisualLayer = visualTree?.FocusVisualRoot;

        Assert.IsNotNull(focusVisualLayer);
        Assert.AreEqual(1, focusVisualLayer.Children.Count);

        var focusVisual = focusVisualLayer.Children.First();

        var transform    = focusVisual.TransformToVisual(Windows.UI.Xaml.Window.Current.RootElement);
        var initialPoint = transform.TransformPoint(default);
        public async Task When_TransformToVisual_WithMargin()
        {
            FrameworkElement inner = new Border {
                Width = 100, Height = 100, Background = new SolidColorBrush(Colors.DarkBlue)
            };

            FrameworkElement container = new Border
            {
                Child               = inner,
                Margin              = ThicknessHelper.FromLengths(1, 3, 5, 7),
                Padding             = ThicknessHelper.FromLengths(11, 13, 17, 19),
                BorderThickness     = ThicknessHelper.FromUniformLength(23),
                HorizontalAlignment = HorizontalAlignment.Right,
                VerticalAlignment   = VerticalAlignment.Bottom,
                Background          = new SolidColorBrush(Colors.DarkSalmon)
            };
            FrameworkElement outer = new Border
            {
                Child           = container,
                Padding         = ThicknessHelper.FromUniformLength(8),
                BorderThickness = ThicknessHelper.FromUniformLength(2),
                Width           = 300,
                Height          = 300,
                Background      = new SolidColorBrush(Colors.MediumSeaGreen)
            };

            TestServices.WindowHelper.WindowContent = outer;

            await TestServices.WindowHelper.WaitForIdle();

            string GetStr(FrameworkElement e)
            {
                var positionMatrix = ((MatrixTransform)e.TransformToVisual(outer)).Matrix;

                return($"{positionMatrix.OffsetX};{positionMatrix.OffsetY};{e.ActualWidth};{e.ActualHeight}");
            }

            var str = $"{GetStr(container)}|{GetStr(inner)}";

            Assert.AreEqual("111;105;174;178|145;141;100;100", str);
        }
Example #9
0
 private static bool IsThicknessValid(object value)
 {
     return(ThicknessHelper.IsValid((Thickness)value, false, false, false, false));
 }
Example #10
0
        private void HookEvents(Grid grid, TextBlock textBlock)
        {
            void TapHandler(object snd, TappedRoutedEventArgs evt)
            {
                textBlock.Text += $".T({evt.GetPosition(null)})";
                evt.Handled     = true;
            }

            void TapHandler2(object snd, TappedRoutedEventArgs evt)
            {
                textBlock.Text += $".t({GetPosition(evt)})";
                //evt.Handled = false;
            }

            grid.AddHandler(TappedEvent, (TappedEventHandler)TapHandler, false);
            grid.AddHandler(TappedEvent, (TappedEventHandler)TapHandler2, true);

            string GetPosition(TappedRoutedEventArgs evt)
            {
                var pos = evt.GetPosition(null);

                return($"{Math.Round(pos.X, 1)}, {Math.Round(pos.Y, 1)}");
            }

            textBlock.Tapped += TapHandler3;

            void TapHandler3(object sender, TappedRoutedEventArgs evt)
            {
                textBlock.Text += $".e({GetPosition(evt)})";
            }

            grid.AddHandler(DoubleTappedEvent, (DoubleTappedEventHandler)DoubleTappedHandler, true);

            void DoubleTappedHandler(object sender, DoubleTappedRoutedEventArgs e)
            {
                textBlock.Text += $".dt";
                e.Handled       = true;
            }

            grid.PointerEntered += (s, e) =>
            {
                textBlock.Text += "<<";
                e.Handled       = true;
            };

            grid.PointerExited += (s, e) => textBlock.Text += ">>";

            var blue  = new SolidColorBrush(Colors.Blue);
            var white = new SolidColorBrush(Colors.WhiteSmoke);

            grid.PointerPressed += (s, e) =>
            {
                textBlock.Text  += "_";
                grid.BorderBrush = blue;
            };
            grid.PointerReleased += (s, e) =>
            {
                textBlock.Text  += "-";
                grid.BorderBrush = white;
            };

            grid.BorderBrush     = white;
            grid.BorderThickness = ThicknessHelper.FromUniformLength(3.5);

            grid.GotFocus  += (s, e) => textBlock.Text += ".F";
            grid.LostFocus += (s, e) => textBlock.Text += ".f";

            grid.KeyDown += (s, e) =>
            {
                textBlock.Text += ".K";
                if (e.Key == Windows.System.VirtualKey.E)
                {
                    e.Handled = true;
                }
            };

            grid.KeyUp += (s, e) =>
            {
                textBlock.Text += ".k";
                if (e.Key == Windows.System.VirtualKey.E)
                {
                    e.Handled = true;
                }
            };
        }
        private async Task LoginReddit()
        {
            try
            {
                App.JsonClient             = new HttpClient();
                App.JsonClient.BaseAddress = new Uri("http://www.reddit.com/api/");

                Dictionary <string, string> values = new Dictionary <string, string>();
                values.Add("api_type", "json");
                values.Add("user", accountSettings.UserName);
                values.Add("passwd", accountSettings.Password);

                FormUrlEncodedContent content = new FormUrlEncodedContent(values);

                var response = await App.JsonClient.PostAsync("login/" + accountSettings.UserName, content);

                var stream = response.EnsureSuccessStatusCode().Content.ContentReadStream;
                DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(LoginResponse));
                var data = (LoginResponse)deserializer.ReadObject(stream);
                if (data.json.errors.Count == 0)
                {
                    App.modhash              = data.json.data.modhash;
                    App.cookie               = data.json.data.cookie;
                    App.isLoggedIn           = true;
                    App.Subreddits           = new RedditCollection(App.isLoggedIn);
                    App.Settings["UserName"] = accountSettings.UserName;
                    if (accountSettings.SavePassword)
                    {
                        bool passwordSet = false;
                        try
                        {
                            var passwords = App.PasswordVault.FindAllByResource("redditMetro");

                            // check and see if the user's password is already stored, if it is, lets update the password
                            foreach (var pass in passwords)
                            {
                                if (pass.UserName == accountSettings.UserName)
                                {
                                    pass.Password = accountSettings.Password;
                                    passwordSet   = true;
                                }
                            }
                        }
                        catch (Exception)
                        {
                            // user hasn't logged in before...ignore exception and store the password
                        }

                        // new user, so we'll add a new password cred to the store
                        if (!passwordSet)
                        {
                            App.PasswordVault.Add(new PasswordCredential("redditMetro", accountSettings.UserName, accountSettings.Password));
                        }
                        App.Settings["SavePassword"] = accountSettings.SavePassword;
                    }
                    else
                    {
                        // user no longer wants us to store their password, so we remove it from the password vault
                        try
                        {
                            var passwords = App.PasswordVault.FindAllByResource("redditMetro");
                            foreach (var pass in passwords)
                            {
                                if (pass.UserName == accountSettings.UserName)
                                {
                                    App.PasswordVault.Remove(pass);
                                }
                            }
                        }
                        catch (Exception)
                        {
                            //user doesn't have a password stored, ignore
                        }
                    }
                }
                else
                {
                    foreach (string s in data.json.errors)
                    {
                        accountSettings.ErrorMessage += s + ". ";
                    }
                    accountSettings.Margin = ThicknessHelper.FromUniformLength(0);
                }
            }
            catch (Exception)
            {
                // help!
            }
        }
 public void AccountCommandHandler(IUICommand command)
 {
     accountSettings.Margin = ThicknessHelper.FromUniformLength(0);
 }