Ejemplo n.º 1
0
        /// <summary>
        /// 初始化右上角 Toolbar Menu
        /// </summary>
        /// <typeparam name="TEnum">视图模型中定义的Menu枚举类型</typeparam>
        /// <param name="viewModel">当前视图模型</param>
        /// <param name="except">可选排除枚举项</param>
        /// <returns></returns>
        public static IReadOnlyDictionary <TEnum, ToolbarItem> InitToolbarItems <TEnum, TViewModel>(
            this TViewModel viewModel,
            IEnumerable <TEnum>?except = null)
            where TEnum : struct, Enum
            where TViewModel : ViewModelBase, IActionItem <TEnum>
        {
            var query = Enum2.GetAll <TEnum>().AsEnumerable();

            if (except.Any_Nullable())
            {
                query = query.Except(except);
            }
            var command = ReactiveCommand.Create <TEnum>(viewModel.MenuItemClick);
            var dict    = query.ToDictionary(x => x, x =>
            {
                var item = new ToolbarItem
                {
                    IconImageSource  = viewModel.GetIcon(x),
                    Command          = command,
                    CommandParameter = x,
                    Order            = viewModel.IsPrimary(x) ? ToolbarItemOrder.Primary : ToolbarItemOrder.Secondary,
                };

                return(item);
            });

            R.Subscribe(() =>
            {
                foreach (var item in dict)
                {
                    item.Value.Text = viewModel.ToString2(item.Key);
                }
            }).AddTo(viewModel);
            return(dict);
        }
Ejemplo n.º 2
0
        public SettingsPageViewModel()
        {
            IconKey = nameof(SettingsPageViewModel);

            SelectLanguage = R.Languages.FirstOrDefault(x => x.Key == UISettings.Language.Value);
            this.WhenValueChanged(x => x.SelectLanguage, false)
            .Subscribe(x => UISettings.Language.Value = x.Key);

            UpdateChannels = Enum2.GetAll <UpdateChannelType>();

            if (IApplication.IsDesktopPlatform)
            {
                SelectFont = R.Fonts.FirstOrDefault(x => x.Value == UISettings.FontName.Value);
                this.WhenValueChanged(x => x.SelectFont, false)
                .Subscribe(x => UISettings.FontName.Value = x.Value);

                SelectImage_Click = ReactiveCommand.CreateFromTask(async() =>
                {
                    FilePickerFileType fileTypes = new ValueTuple <string, string[]>[] {
                        ("Image Files", new[] {
                            FileEx.BMP,
                            FileEx.JPG,
                            FileEx.JPEG,
                            FileEx.PNG,
                            FileEx.GIF,
                            FileEx.WEBP,
                        }),
                        //("All Files", new[] { "*", }),
                    };
                    await PickAsync(SetBackgroundImagePath, fileTypes);
                });

                ResetImage_Click = ReactiveCommand.Create(() => SetBackgroundImagePath(null));
            }
        }
Ejemplo n.º 3
0
        public void Enums()
        {
            var appUpdateFailCodes = Enum2.GetAll <ApplicationUpdateFailCode>();

            foreach (var item in appUpdateFailCodes)
            {
                _ = item.ToString2();
            }
        }
        public AboutPageViewModel()
        {
            preferenceButtons = new(Enum2.GetAll <PreferenceButton>().Select(x => PreferenceButtonViewModel.Create(x, this)));

            UserService.Current.WhenAnyValue(x => x.User).Subscribe(value =>
            {
                if (value == null)
                {
                    PreferenceButtonViewModel.RemoveAuthorized(preferenceButtons, this);
                }
                else
                {
                    var delAccount = preferenceButtons.FirstOrDefault(x => x.Id == PreferenceButton.账号注销);
                    if (delAccount == null)
                    {
                        delAccount = PreferenceButtonViewModel.Create(PreferenceButton.账号注销, this);
                        preferenceButtons.Add(delAccount);
                    }
                }
            }).AddTo(this);
        }
Ejemplo n.º 5
0
 static FileFormat()
 {
     ImageFormats     = Enum2.GetAll <ImageFormat>().OrderByDescending(x => (byte)x).ToArray();
     imgFileMagicNums = ImageFormats.ToDictionary(x => x, x => x.GetMagicNumber());
 }