private void MallowMultiMoveClick(object sender, RoutedEventArgs e)
        {
            MallowGroup sourceGroup = MallowSource.CurrentSource.Current;
            MallowGroup targetGroup = (sender as MenuItem)?.DataContext as MallowGroup;

            if (MallowList.SelectedItems.Count == 0 ||
                sourceGroup is null ||
                targetGroup is null ||
                sourceGroup == targetGroup)
            {
                return;
            }

            Mallow[] mallows = new Mallow[MallowList.SelectedItems.Count];
            MallowList.SelectedItems.CopyTo(mallows, 0);

            for (int i = 0; i < mallows.Length; i++)
            {
                Mallow mallow = mallows[i];
                if (!sourceGroup.Mallows.Contains(mallow))
                {
                    continue;
                }
                targetGroup.Mallows.Insert(i, mallow);
                sourceGroup.Mallows.Remove(mallow);
            }
        }
        private void CreateMallowGroupClick(object sender, RoutedEventArgs e)
        {
            MallowGroup group = new MallowGroup
            {
                Name         = "新分组",
                ModifiedTime = DateTime.Now
            };

            MallowSource.CurrentSource.Data.Insert(0, group);
            MallowSource.CurrentSource.Current = group;
        }
Пример #3
0
        public static void Import(IMallowProvider mallowProvider, Mallow[] mallows)
        {
            MallowGroup group = new MallowGroup
            {
                Name = $"{mallowProvider.Name}导入"
            };

            MallowSource.CurrentSource.Data.Insert(0, group);
            MallowSource.CurrentSource.Current = group;

            for (int i = 0; i < mallows.Length; i++)
            {
                MallowSource.CurrentSource.Current.Mallows.Insert(i, mallows[i]);
            }
        }
        private void MallowMoveClick(object sender, RoutedEventArgs e)
        {
            Mallow source =
                ((sender as MenuItem)?.CommandParameter as FrameworkElement)?.DataContext as Mallow;
            MallowGroup sourceGroup = MallowSource.CurrentSource.Current;
            MallowGroup targetGroup = (sender as MenuItem)?.DataContext as MallowGroup;

            if (source is null ||
                sourceGroup is null ||
                targetGroup is null ||
                sourceGroup == targetGroup ||
                !sourceGroup.Mallows.Contains(source))
            {
                return;
            }

            targetGroup.Mallows.Insert(0, source);
            sourceGroup.Mallows.Remove(source);
        }
Пример #5
0
        public static async Task PullCore(object obj)
        {
            if (!(obj is PullWindow pullWindow))
            {
                return;
            }

            MallowPuller puller              = pullWindow.Puller;
            bool         isCreateMode        = pullWindow.IsCreateMode;
            MallowGroup  selectedMallowGroup = pullWindow.SelectedGroup;
            string       createGroupName     = pullWindow.CreateGroupName;

            if (!isCreateMode && selectedMallowGroup is null)
            {
                return;
            }

            puller.Progress.IsIndeterminate = true;
            puller.Progress.Text            = $"初始化{puller.Name}服务……";

            Mallow[] mallows = await puller.VerifyAndPull(isCreateMode?Array.Empty <Mallow>() : selectedMallowGroup.Mallows.ToArray());

            puller.Progress.IsIndeterminate = true;
            puller.Progress.Text            = "保存用户信息……";

            Application.Current.Dispatcher.Invoke(() => pullWindow.Close());

            if (mallows is null)
            {
                return;
            }

            if (mallows.Length == 0)
            {
                MessageBox.Show(
                    "没有要拉取的项目。",
                    "成功",
                    MessageBoxButton.OK,
                    MessageBoxImage.Information,
                    MessageBoxResult.OK);

                return;
            }

            Dispatcher.CurrentDispatcher.Invoke(() =>
            {
                MallowGroup resultGroup = isCreateMode
                    ? new MallowGroup
                {
                    Name = createGroupName
                }
                    : selectedMallowGroup;
                if (resultGroup is null)
                {
                    return;
                }

                for (int i = 0; i < mallows.Length; i++)
                {
                    resultGroup.Mallows.Insert(i, mallows[i]);
                }

                MallowSource.CurrentSource.Data.Insert(0, resultGroup);
                MallowSource.CurrentSource.Current = resultGroup;
            });
        }