/// <summary>
        /// Called when [activated].
        /// </summary>
        /// <param name="disposables">The disposables.</param>
        protected override void OnActivated(CompositeDisposable disposables)
        {
            Mods         = new AvaloniaList <string>();
            SelectedMods = new AvaloniaList <string>();

            CloseCommand = ReactiveCommand.Create(() =>
            {
                ForceClosePopup();
            }).DisposeWith(disposables);

            ModFilterCommand = ReactiveCommand.Create(() =>
            {
                IsOpen = true;
            }).DisposeWith(disposables);

            SelectedMods.CollectionChanged += (sender, args) =>
            {
                if (syncingSelectedMods)
                {
                    return;
                }
                syncingSelectedMods = true;
                IgnoreModsAsync().ConfigureAwait(false);
            };

            base.OnActivated(disposables);
        }
        /// <summary>
        /// Called when [activated].
        /// </summary>
        /// <param name="disposables">The disposables.</param>
        protected override void OnActivated(CompositeDisposable disposables)
        {
            async Task saveState()
            {
                if (syncingToken != null)
                {
                    syncingToken.Cancel();
                }
                syncingToken = new CancellationTokenSource();
                if (shouldToggleGameMods)
                {
                    previousIgnoreGameMods = IgnoreGameMods;
                }
                await IgnoreModsAsync(syncingToken.Token).ConfigureAwait(false);
            }

            Mods         = new AvaloniaList <Mod>();
            SelectedMods = new AvaloniaList <Mod>();

            CloseCommand = ReactiveCommand.Create(() =>
            {
                ForceClosePopup();
            }).DisposeWith(disposables);

            ModFilterCommand = ReactiveCommand.Create(() =>
            {
                IsOpen = true;
            }).DisposeWith(disposables);

            SelectedMods.CollectionChanged += (sender, args) =>
            {
                if (!settingValues)
                {
                    saveState().ConfigureAwait(false);
                }
            };

            this.WhenAnyValue(p => p.IgnoreGameMods).Subscribe(s =>
            {
                if (!settingValues && previousIgnoreGameMods != IgnoreGameMods)
                {
                    shouldToggleGameMods = true;
                    saveState().ConfigureAwait(false);
                }
            }).DisposeWith(disposables);

            base.OnActivated(disposables);
        }
Esempio n. 3
0
        protected virtual Size MeasureOverrideInternal(Size availableSize)
        {
            double num1 = 0.0;
            double num2 = 0.0;
            IAvaloniaList <IVisual> visualChildren = this.VisualChildren;
            int count = visualChildren.Count;

            for (int index = 0; index < count; ++index)
            {
                if (visualChildren[index] is ILayoutable layoutable)
                {
                    layoutable.Measure(availableSize);
                    num1 = Math.Max(num1, layoutable.DesiredSize.Width);
                    num2 = Math.Max(num2, layoutable.DesiredSize.Height);
                }
            }
            return(new Size(num1, num2));
        }
Esempio n. 4
0
        private static void UpdateLogicalChild(
            IControl control,
            IAvaloniaList <ILogical> logicalChildren,
            object oldValue,
            object newValue)
        {
            if (oldValue != newValue)
            {
                if (oldValue is IControl child)
                {
                    logicalChildren.Remove(child);
                }

                child = newValue as IControl;

                if (child != null && !logicalChildren.Contains(child))
                {
                    child.SetValue(Control.TemplatedParentProperty, control.TemplatedParent);
                    logicalChildren.Add(child);
                }
            }
        }