예제 #1
0
 /// <inheritDoc/>
 protected override void OnDetachingFrom(MultiPage <T> bindable)
 {
     bindable.CurrentPageChanged -= CurrentPageChangedHandler;
     bindable.Appearing          -= RootPageAppearingHandler;
     bindable.Disappearing       -= RootPageDisappearingHandler;
     base.OnDetachingFrom(bindable);
 }
 public MultiPageFragmentStateAdapter(
     MultiPage <T> page, FragmentManager fragmentManager, IMauiContext context)
     : base(fragmentManager, context.GetActivity().Lifecycle)
 {
     _page    = page;
     _context = context;
 }
예제 #3
0
        void OnInnerLayoutUpdate()
        {
            if (!_isInitialized)
            {
                return;
            }

            int   baseX = _innerBox.Geometry.X;
            ERect bound = _scroller.Geometry;
            int   index = 0;

            foreach (var page in Element.Children)
            {
                var nativeView = Platform.GetRenderer(page).NativeView;
                bound.X             = baseX + index * bound.Width;
                nativeView.Geometry = bound;
                index++;
            }
            _innerBox.MinimumWidth = Element.Children.Count * bound.Width;
            if (_toolbar.SelectedItem == null)
            {
                return;
            }
            int currentPage = MultiPage <Page> .GetIndex(_itemToItemPage[_toolbar.SelectedItem]);

            _scroller.ScrollTo(currentPage, 0, false);
        }
예제 #4
0
 protected override void OnAttachedTo(MultiPage <TPage> bindableObject)
 {
     base.OnAttachedTo(bindableObject);
     PreviousPage = AssociatedObject.CurrentPage;
     AssociatedObject.CurrentPageChanged += OnCurrentPageChanged;
     AssociatedObject.PagesChanged       += OnPagesChanged;
 }
예제 #5
0
        protected override void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }

            if (disposing)
            {
                _disposed = true;

                _page = null;

                if (!_fragmentManager.IsDestroyed)
                {
                    FragmentTransaction transaction = _fragmentManager.BeginTransactionEx();

                    foreach (Fragment fragment in _fragments)
                    {
                        transaction.RemoveEx(fragment);
                        transaction.SetTransitionEx((int)FragmentTransit.None);
                    }

                    transaction.CommitAllowingStateLossEx();

                    _fragmentManager.ExecutePendingTransactionsEx();

                    _fragments       = null;
                    _fragmentManager = null;
                }
            }

            base.Dispose(disposing);
        }
예제 #6
0
        public static void FixControlDims(Control control)
        {
            foreach (Control c in control.Controls)
            {
                if (c is WebControl)
                {
                    WebControl wc = c as WebControl;
                    if (wc.Width.Value > 0)
                    {
                        wc.Style["WIDTH"] = wc.Width.ToString();
                    }
                    if (wc.Height.Value > 0)
                    {
                        wc.Style["HEIGHT"] = wc.Height.ToString();
                    }
                }

                if (c.ID != null && c.ID.StartsWith("div"))
                {
                    FixControlDims(c);
                }
                else if (c is MultiPage)
                {
                    MultiPage mc = c as MultiPage;
                    foreach (Control pv in mc.Controls)
                    {
                        foreach (Control cv in pv.Controls)
                        {
                            FixControlDims(cv);
                        }
                    }
                }
            }
        }
예제 #7
0
        void OnCurrentPageChanged()
        {
            // To update TabIndex order
            CustomFocusManager.StartReorderTabIndex();

            if (_isUpdateByScroller || _isUpdateByToolbar || !_isInitialized)
            {
                return;
            }

            _isUpdateByCurrentPage = true;
            Page oldPage = null;

            if (_toolbar.SelectedItem != null && _itemToItemPage.ContainsKey(_toolbar.SelectedItem))
            {
                oldPage = _itemToItemPage[_toolbar.SelectedItem];
            }

            oldPage?.SendDisappearing();
            Element.CurrentPage?.SendAppearing();

            int index = MultiPage <Page> .GetIndex(Element.CurrentPage);

            _toolbarItemList[index].IsSelected = true;
            _scroller.ScrollTo(index, 0, true);

            Element.UpdateFocusTreePolicy();
            _isUpdateByCurrentPage = false;
        }
        /// <summary>
        /// Retrieves the HTML to display in the designer.
        /// </summary>
        /// <returns>HTML for the designer.</returns>
        public override string GetDesignTimeHtml()
        {
            string    html;
            MultiPage multiPage = (MultiPage)Component;
            int       realIndex = 0;

            if (multiPage.Controls.Count == 0)
            {
                // Add a message if the MultiPage is empty
                return(CreatePlaceHolderDesignTimeHtml(DesignUtil.GetStringResource("MultiPageNoItems")));
            }

            realIndex = multiPage.SelectedIndex;
            if (_SelectedIndex < 0)
            {
                _SelectedIndex = realIndex;
            }
            multiPage.SelectedIndex = _SelectedIndex;

            try
            {
                html = base.GetDesignTimeHtml();
            }
            finally
            {
                // Restore the component
                multiPage.SelectedIndex = realIndex;
            }

            return(html);
        }
예제 #9
0
        void OnToolbarItemSelected(object sender, EToolbarItemEventArgs e)
        {
            if (_toolbar.SelectedItem == null || _isResettingToolbarItems)
            {
                return;
            }
            if (_isUpdateByCurrentPage || _isUpdateByScroller)
            {
                return;
            }
            _isUpdateByToolbar = true;

            var oldPage = Element.CurrentPage;
            var newPage = _itemToItemPage[_toolbar.SelectedItem];

            if (oldPage != newPage)
            {
                oldPage?.SendDisappearing();
                Element.CurrentPage = newPage;
                newPage?.SendAppearing();

                int index = MultiPage <Page> .GetIndex(newPage);

                _scroller.ScrollTo(index, 0, true);

                Element.UpdateFocusTreePolicy();
            }
            _isUpdateByToolbar = false;
        }
예제 #10
0
        public FormsFragmentPagerAdapter(MultiPage <T> page, FragmentManager fragmentManager) : base(fragmentManager)
#endif
        {
            _page            = page;
            _fragmentManager = fragmentManager;
            _fragments       = new List <Fragment>();
        }
예제 #11
0
 /// <inheritDoc/>
 protected override void OnAttachedTo(MultiPage <T> bindable)
 {
     bindable.CurrentPageChanged += CurrentPageChangedHandler;
     bindable.Appearing          += RootPageAppearingHandler;
     bindable.Disappearing       += RootPageDisappearingHandler;
     base.OnAttachedTo(bindable);
 }
예제 #12
0
 public MultiBuildingsDialog(mode dialogMode, MultiPage page, int fieldID = -1) : this()
 {
     CurMode = dialogMode;
     ID      = fieldID;
     CurPage = page;
     FillFields();
 }
예제 #13
0
 protected override void Dispose(bool disposing)
 {
     if (disposing)
     {
         _page = null;
     }
     base.Dispose(disposing);
 }
        /// <summary>
        /// Called when switching to the next page.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        public virtual void OnNextPage(object sender, EventArgs e)
        {
            MultiPage multiPage = (MultiPage)Component;

            if (SelectedIndex < (multiPage.Controls.Count - 1))
            {
                SelectedIndex++;
            }
        }
        public MasterSamplePageWindows(MasterSample sample, MultiPage <ContentPage> mainPage, ContentPage rootPage)
        {
            propertyStackLayout = new StackLayout
            {
                Orientation = StackOrientation.Vertical,

                VerticalOptions = LayoutOptions.FillAndExpand,
                BackgroundColor = Color.FromHex("#FFEDEDEB"),
                Padding         = new Thickness(10, 0, 10, 10)
            };

            var headerStackLayout = new StackLayout
            {
                Orientation       = StackOrientation.Horizontal,
                HeightRequest     = 50,
                HorizontalOptions = LayoutOptions.FillAndExpand,
            };
            var optionsLabel = new Label
            {
                TextColor = Color.FromHex("#1196CD"),
                Text      = "Options",

                FontSize          = 20,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center
            };

            headerStackLayout.Children.Add(optionsLabel);

            //AbsoluteLayout.SetLayoutBounds(optionsLabel,);

            var optionsHeaderImage = new Image
            {
                VerticalOptions   = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.EndAndExpand,
                Aspect            = Aspect.AspectFit,
                Source            = ImageSource.FromFile("Icons/back.png")
            };


            var tapGesture = new TapGestureRecognizer();

            tapGesture.Tapped += tapGesture_Tapped;
            optionsHeaderImage.GestureRecognizers.Add(tapGesture);
            headerStackLayout.Children.Add(optionsHeaderImage);

            propertyStackLayout.Children.Add(headerStackLayout);

            var mainContent = new StackLayout {
                Spacing = 0
            };

            headerView = GetHeaderLayout(sample, mainPage, rootPage);
            mainContent.Children.Add(headerView);
            mainContent.Children.Add(GetControlLayout(sample));
            Content = mainContent;
        }
        /// <summary>
        /// Called when switching to the previous page.
        /// </summary>
        /// <param name="sender">Sender object</param>
        /// <param name="e">Event arguments</param>
        public virtual void OnPrevPage(object sender, EventArgs e)
        {
            MultiPage multiPage = (MultiPage)Component;

            if ((SelectedIndex > 0) && (multiPage.Controls.Count > 0))
            {
                SelectedIndex--;
            }
        }
        private View GetHeaderLayout(MasterSample sample, MultiPage <ContentPage> mainPage, ContentPage rootPage)
        {
            var stackLayout = new StackLayout
            {
                Orientation       = StackOrientation.Horizontal,
                HeightRequest     = 100,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                BackgroundColor   = Color.FromHex("#FF1196CD"),
            };

            var controlIcon = new Image
            {
                VerticalOptions   = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.Center,
                //Aspect = Aspect.AspectFit,
                Source = ImageSource.FromFile("Icons/back.png")
            };

            stackLayout.Children.Add(controlIcon);

            var tapGesture = new TapGestureRecognizer();

            tapGesture.Tapped += (sender, args) =>
            {
                mainPage.Children.Clear();
                mainPage.Children.Add(rootPage);
                if (listView != null)
                {
                    listView.SelectedItem = sample.Samples[0];
                }
            };
            controlIcon.GestureRecognizers.Add(tapGesture);

            stackLayout.Children.Add(new Label
            {
                TextColor       = Color.White,
                Text            = sample.Title,
                FontSize        = 40,
                VerticalOptions = LayoutOptions.Center
            });

            optionsImage = new Image
            {
                VerticalOptions   = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.EndAndExpand,
                Aspect            = Aspect.AspectFit,
                Source            = ImageSource.FromFile("Icons/options.png")
            };


            tapGesture         = new TapGestureRecognizer();
            tapGesture.Tapped += tapGesture_Tapped;
            optionsImage.GestureRecognizers.Add(tapGesture);

            return(stackLayout);
        }
예제 #18
0
        /*
         * public override void WillRotate (UIInterfaceOrientation toInterfaceOrientation, double duration)
         * {
         *      this.ignoreNativeScrolling = true;
         * }
         *
         * public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation)
         * {
         *      this.ignoreNativeScrolling = false;
         * }
         */

        private void UpdateCurrentPage(bool animated = true)
        {
            ContentPage currentPage = this.Carousel.CurrentPage;

            if (currentPage == null)
            {
                return;
            }
            this.ScrollToPage(MultiPage <ContentPage> .GetIndex(currentPage), animated);
        }
예제 #19
0
 private void UpdateChildrenOrderIndex(UIViewController[] viewControllers)
 {
     for (int index = 0; index < viewControllers.Length; ++index)
     {
         int result = -1;
         if (int.TryParse(viewControllers [index].TabBarItem.Tag.ToString(), out result))
         {
             MultiPage <Page> .SetIndex((Page)this.Tabbed.get_InternalChildren() [result], index);
         }
     }
 }
예제 #20
0
 public static void AttachTabs(this MultiPage <Page> page)
 {
     page.BindingContextChanged += (sender, e) =>
     {
         if (page.BindingContext != null && page.BindingContext is IProvideTabs)
         {
             foreach (var tab in ((IProvideTabs)page.BindingContext).Tabs)
             {
                 page.Children.Add(tab);
             }
         }
     };
 }
        private static void TabbedPageOnCurrentPageChanged(object sender, EventArgs e)
        {
            if (sender is SJTabbedPage sJTabbedPage && sJTabbedPage.IsEnabled)
            {
                var currentIndex = MultiPage <Page> .GetIndex(sJTabbedPage.CurrentPage);

                sJTabbedPage.SelectedIndex = currentIndex;
                var command = GetCurrentPageChangedCommand(sJTabbedPage);
                if (command != null && command.CanExecute(currentIndex))
                {
                    command.Execute(currentIndex);
                }
            }
        }
 public static void UpdateFocusTreePolicy <T>(this MultiPage <T> multiPage) where T : Page
 {
     foreach (var pageItem in multiPage.Children)
     {
         if (Platform.GetRenderer(pageItem)?.NativeView is ElmSharp.Widget nativeWidget)
         {
             if (pageItem == multiPage.CurrentPage)
             {
                 nativeWidget.AllowTreeFocus = true;
                 continue;
             }
             nativeWidget.AllowTreeFocus = false;
         }
     }
 }
예제 #23
0
        void SelectedNextTab(int direction)
        {
            int nextIndex = MultiPage <Page> .GetIndex(Tabbed.CurrentPage) + direction;

            if (nextIndex < 0 || nextIndex >= Tabbed.Children.Count)
            {
                return;
            }
            var nextPage = Tabbed.Children[nextIndex];

            UIView.Transition(
                Platform.GetRenderer(Tabbed.CurrentPage).NativeView,
                Platform.GetRenderer(nextPage).NativeView,
                0.05,
                UIViewAnimationOptions.TransitionCrossDissolve,
                null);
            Tabbed.CurrentPage = nextPage;
        }
예제 #24
0
        private void OnPagesChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            this.ignoreNativeScrolling = true;
            int num1 = (int)NotifyCollectionChangedEventArgsExtensions.Apply(e, (Action <object, int, bool>)((o, i, c) => this.InsertPage((ContentPage)o, i)), (Action <object, int>)((o, i) => this.RemovePage((ContentPage)o, i)), new Action(this.Reset));

            this.PositionChildren();
            this.ignoreNativeScrolling = false;
            int num2 = 4;

            if (num1 != num2)
            {
                return;
            }
            int index = this.Carousel.CurrentPage != null ? MultiPage <ContentPage> .GetIndex(this.Carousel.CurrentPage) : 0;

            if (index < 0)
            {
                index = 0;
            }
            this.ScrollToPage(index, true);
        }
        private void HandleParent(Element parent)
        {
            if (parent is MultiPage <Page> )
            {
                if (_multiPageParent != null)
                {
                    _multiPageParent.CurrentPageChanged -= MultiPageParent_CurrentPageChanged;
                }

                _multiPageParent = parent as MultiPage <Page>;

                if (_multiPageParent != null)
                {
                    _multiPageParent.CurrentPageChanged += MultiPageParent_CurrentPageChanged;
                }
            }
            else if (_multiPageParent != null)
            {
                _multiPageParent.CurrentPageChanged -= MultiPageParent_CurrentPageChanged;

                _multiPageParent = null;
            }
        }
예제 #26
0
        void OnToolbarItemSelected(object sender, EToolbarItemEventArgs e)
        {
            if (_toolbar.SelectedItem == null || _isResettingToolbarItems)
            {
                return;
            }

            var oldPage = Element.CurrentPage;
            var newPage = _itemToItemPage[_toolbar.SelectedItem];

            if (oldPage == newPage)
            {
                return;
            }

            oldPage?.SendDisappearing();

            Element.CurrentPage = newPage;
            newPage?.SendAppearing();

            int index = MultiPage <Page> .GetIndex(newPage);

            _scroller.ScrollTo(index, 0, true);
        }
예제 #27
0
 protected override void OnDetachingFrom(MultiPage <Page> bindable)
 {
     base.OnDetachingFrom(bindable);
     bindable.CurrentPageChanged -= CurrentPageChangedHandler;
 }
예제 #28
0
 protected override void OnAttachedTo(MultiPage <Page> bindable)
 {
     base.OnAttachedTo(bindable);
     bindable.CurrentPageChanged += CurrentPageChangedHandler;
 }
예제 #29
0
 protected override void OnDetachingFrom(MultiPage <Page> bindable)
 {
     _associatedObject.CurrentPageChanged -= CurrentPageChangedHandler;
 }
예제 #30
0
 protected override void OnAttachedTo(MultiPage <Page> bindable)
 {
     _associatedObject = bindable;
     _associatedObject.CurrentPageChanged += CurrentPageChangedHandler;
 }