Пример #1
0
        private async void AddButton_OnClick(object sender, RoutedEventArgs e)
        {
            var result = await _groupDialog.ShowAsync();
            if (result == ContentDialogResult.Primary)
            {
                var name = _groupDialog.Name;
                var userData = _groupDialog.UserData;

                if (_person == null)
                {
                    var person = new Group()
                    {
                        PersonGroupId = Guid.NewGuid().ToString(),
                        Name = name,
                        UserData = userData
                    };
                    if (await new ApiService().CreatePersonGroup(person))
                    {
                        await LoadPerson();
                    }
                }
                else
                {
                    _person.Name = name;
                    _person.UserData = userData;
                    if(await new ApiService().UpdatePersonGroup(_person))
                    {
                        await LoadPerson();
                    }
                }

                Clear();
            }
        }
Пример #2
0
        public async void FileUpload(List <StorageFile> imgList)
        {
            if (imgList.Count > 0)
            {
                // 弹出组选择框
                var groupDialog = new GroupDialog();
                groupDialog.PrimaryButtonClick += async(_s, _e) =>
                {
                    // 选定分组后,上传图片
                    if (groupDialog.SelectGroup != null)
                    {
                        var errorFile = new List <StorageFile>();
                        UploadInfoCollection.Clear();
                        UploadProgressCollection.Clear();
                        var imgItemList = new List <OneDriveImage>();
                        var imgTemp     = await AppTools.ConvertFileToImage(imgList[0]);

                        // 如果仅一张图片上传,则显示该图片的分辨率、大小等信息
                        if (imgList.Count == 1)
                        {
                            var fileInfo = await imgList[0].GetBasicPropertiesAsync();

                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("RP"), imgTemp.PixelWidth + "x" + imgTemp.PixelHeight));
                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageSize"), Math.Round((fileInfo.Size / (1024.0 * 1024.0)), 1) + "M"));
                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageType"), Path.GetExtension(imgList[0].Path).Substring(1).ToUpper()));
                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("CreateDate"), fileInfo.DateModified.ToString("yyyy/MM/dd")));
                        }
                        // 如果有多张图片上传,则显示总览信息
                        else
                        {
                            double size = 0;
                            foreach (var item in imgList)
                            {
                                var fileInfo = await item.GetBasicPropertiesAsync();

                                size += Math.Round((fileInfo.Size / (1024.0 * 1024.0)), 1);
                            }
                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageCount"), imgList.Count.ToString()));
                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("GroupName"), groupDialog.SelectGroup.GroupName));
                            UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("AllSize"), size + "M"));
                        }
                        // 将上传列表的第一张图片作为上传区域背景
                        var backBrush = new ImageBrush();
                        backBrush.Stretch     = Stretch.UniformToFill;
                        backBrush.ImageSource = imgTemp;
                        UploadArea.Background = backBrush;
                        // 隐藏上传提示字符
                        UploadAreaHold.Visibility = Visibility.Collapsed;
                        double uploadColumnWidth = UploadColumn.ActualWidth - 30;
                        // 根据上传信息显示的数目来确定单一信息所占区域大小
                        UploadInfoWidth = uploadColumnWidth / UploadInfoCollection.Count;
                        // 装载进度条
                        for (int i = 0; i < imgList.Count; i++)
                        {
                            var item = imgList[i];
                            UploadProgressCollection.Add(new ProgressStatus(i + 1, item.DisplayName));
                        }
                        // 开始逐一上传图片
                        foreach (var item in imgList)
                        {
                            var img = await App.OneDriveTools.UploadImage(item, groupDialog.SelectGroup);

                            // 图片若上传错误,则加入错误文件列表中
                            if (img == null)
                            {
                                errorFile.Add(item);
                            }
                            // 否则,写入成功列表
                            else
                            {
                                imgItemList.Add(img);
                                LastestImageCollection.Insert(0, img);
                                if (LastestNoDataTipBlock.Visibility == Visibility.Visible)
                                {
                                    LastestNoDataTipBlock.Visibility = Visibility.Collapsed;
                                    LastestListView.Visibility       = Visibility.Visible;
                                }
                                for (int j = UploadProgressCollection.Count - 1; j >= 0; j--)
                                {
                                    if (UploadProgressCollection[j].Name.Replace($"[{j + 1}] ", "") == item.DisplayName)
                                    {
                                        UploadProgressCollection.RemoveAt(j);
                                    }
                                }
                            }
                        }
                        // 所有任务上传完成,清空背景,加入占位符
                        var res   = App.Current.RequestedTheme == ApplicationTheme.Dark ? (ResourceDictionary)App.Current.Resources.ThemeDictionaries["Dark"] : (ResourceDictionary)App.Current.Resources.ThemeDictionaries["Light"];
                        var color = (SolidColorBrush)res["MainBackground"];
                        UploadArea.Background     = color;
                        UploadAreaHold.Visibility = Visibility.Visible;
                        // 恢复默认上传信息
                        UploadInfoCollection.Clear();
                        UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("DefaultUploadInfoTitle"), AppTools.GetReswLanguage("None")));
                        UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageSize"), AppTools.GetReswLanguage("None")));
                        UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageType"), AppTools.GetReswLanguage("None")));
                        UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("CreateDate"), AppTools.GetReswLanguage("None")));
                        UploadInfoWidth = uploadColumnWidth / UploadInfoCollection.Count;
                        // 清除上传进度条
                        UploadProgressCollection.Clear();

                        // 当成功列表中有数据时,显示成功数目,并将成功上传的图片反映在UI上
                        if (imgItemList.Any())
                        {
                            int num = await App.OneDriveTools.AddImageToDatabase(App.Db, imgItemList);

                            string msg       = AppTools.GetReswLanguage("AddImageSuccess").Replace("{count}", num.ToString());
                            var    tipDialog = new TipDialog(AppTools.GetReswLanguage("AddSuccessTitle"), msg);
                            await tipDialog.ShowAsync();

                            AppTools.WriteLocalSetting(AppSettings.SelectGroupIndex, groupDialog.SelectGroup.GroupId);
                            GroupInit(groupDialog.SelectGroup);
                        }
                        // 如果错误列表中有数据,则提醒用户
                        if (errorFile.Any())
                        {
                            int    num       = errorFile.Count;
                            string msg       = AppTools.GetReswLanguage("AddImageFailed").Replace("{count}", num.ToString());
                            var    tipDialog = new TipDialog(AppTools.GetReswLanguage("AddFailTitle"), msg);
                            await tipDialog.ShowAsync();
                        }
                    }
                };
                await groupDialog.ShowAsync();
            }
        }
Пример #3
0
        private async void RemoveGroupButton_Click(object sender, RoutedEventArgs e)
        {
            // 移除当前组要注意组内是否还有其他的图片,有的话要注意转移
            int GroupCount = GroupCollection.Count;

            if (GroupCount <= 1)
            {
                new PopupMaskTip(AppTools.GetReswLanguage("OnlyOneGroup")).Show();
                return;
            }
            var    con   = AppTools.GetParentObject <Grid>((FrameworkElement)sender, "GroupItemContainer");
            var    idCon = AppTools.GetChildObject <TextBlock>(con, "ItemId");
            string id    = idCon.Text;

            if (!string.IsNullOrEmpty(id))
            {
                var item         = App.Db.Groups.Where(p => p.GroupId == id).ToList()[0];
                var deleteDialog = new TipDialog(AppTools.GetReswLanguage("DeleteGroupTitle"), AppTools.GetReswLanguage("DeleteGroupTip"), AppTools.GetReswLanguage("MoveImage"), AppTools.GetReswLanguage("Delete"));
                var chooseResult = await deleteDialog.ShowAsync();

                if (chooseResult == ContentDialogResult.Primary)
                {
                    // 转移图片
                    int count = App.Db.Images.Where(p => p.GroupId == item.GroupId).Count();
                    if (count > 0)
                    {
                        var groupDialog = new GroupDialog();
                        var groupResult = await groupDialog.ShowAsync();

                        if (groupResult == ContentDialogResult.Primary)
                        {
                            var selectGroup = groupDialog.SelectGroup;
                            if (selectGroup.Equals(item))
                            {
                                new PopupMaskTip(AppTools.GetReswLanguage("Sao")).Show();
                                return;
                            }
                            else
                            {
                                foreach (var img in App.Db.Images)
                                {
                                    if (img.GroupId == item.GroupId)
                                    {
                                        img.GroupId   = selectGroup.GroupId;
                                        img.GroupName = selectGroup.GroupName;
                                    }
                                }
                                App.Db.Groups.Remove(item);
                                await App.Db.SaveChangesAsync();

                                GroupCollection.Remove(item);
                                MainPage.Current.GroupCollectionRemoved(item);
                                MainPage.Current.HistoryInit();
                                AppTools.WriteLocalSetting(AppSettings.IsDatabaseChanged, "True");
                                new PopupMaskTip(AppTools.GetReswLanguage("MoveImageSuccess")).Show();
                                await Task.Delay(800);

                                new PopupMaskTip(AppTools.GetReswLanguage("DeleteGroupSuccess")).Show();
                            }
                        }
                    }
                    else
                    {
                        App.Db.Groups.Remove(item);
                        await App.Db.SaveChangesAsync();

                        new PopupMaskTip(AppTools.GetReswLanguage("DeleteGroupSuccess")).Show();
                    }
                }
                else if (chooseResult == ContentDialogResult.Secondary)
                {
                    // 直接删除分组
                    var images      = App.Db.Images.Where(p => p.GroupId == item.GroupId);
                    var waittingTip = new HoldMaskTip(AppTools.GetReswLanguage("Deleting"));
                    waittingTip.Show();
                    int count = 0;
                    if (images.Count() > 0)
                    {
                        count = await App.OneDriveTools.DeleteImage(images.ToList());
                    }
                    if (count > 0)
                    {
                        App.Db.Images.RemoveRange(images);
                        string msg = AppTools.GetReswLanguage("DeleteImageSuccess").Replace("{count}", count.ToString());
                        new PopupMaskTip(msg).Show();
                    }
                    App.Db.Groups.Remove(item);
                    await App.Db.SaveChangesAsync();

                    waittingTip.Close();
                    GroupCollection.Remove(item);
                    MainPage.Current.GroupCollectionRemoved(item);
                    MainPage.Current.LastestInit();
                    MainPage.Current.HistoryInit();
                    AppTools.WriteLocalSetting(AppSettings.IsDatabaseChanged, "True");
                    await Task.Delay(800);

                    new PopupMaskTip(AppTools.GetReswLanguage("DeleteGroupSuccess")).Show();
                }
            }
        }