123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- using Microsoft.Win32;
- using PDF_Office.Helper;
- using PDF_Office.Model.CloudDrive;
- using PDF_Office.Properties;
- using PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType;
- using Prism.Commands;
- using Prism.Mvvm;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- namespace PDF_Office.ViewModels.HomePanel.CloudDrive
- {
- //各云盘事件
- public class CloudFilesContentViewModel : BindableBase
- {
- #region 云盘变量
- public CloudDriveManager CloudManager => CloudDriveManager.CloudManager;
- private ObservableCollection<FolderBaseItem> _folderItems = new ObservableCollection<FolderBaseItem>();
- public ObservableCollection<FolderBaseItem> FolderItems
- {
- get { return _folderItems; }
- set { SetProperty (ref _folderItems, value); }
- }
- private ObservableCollection<FilesBaseItem> _filesList = new ObservableCollection<FilesBaseItem>();
- public ObservableCollection<FilesBaseItem> FilesList
- {
- get { return _filesList; }
- set { SetProperty(ref _filesList, value); }
- }
-
- private CloudType _currentCloudType = CloudType.GoogleDrive;
- public CloudType CurrentCloudType
- {
- get { return _currentCloudType; }
- set { SetProperty(ref _currentCloudType, value); }
- }
- #endregion
- #region 事件
- /// <summary>
- /// 根据目录,更新文件列表
- /// </summary>
- public DelegateCommand<FileOperation> OpenFolderCommand { get; set; }
- /// <summary>
- /// 选中文件夹,更新指定文件夹里的文件列表
- /// </summary>
- public DelegateCommand<FolderBaseItem> SelectedFolderCommand { get; set; }
- /// <summary>
- /// 下载并打开文件
- /// </summary>
- public DelegateCommand<FileOperation> OpenFileCommand { get; set; }
- /// <summary>
- /// 上传文件
- /// </summary>
- public DelegateCommand<FileOperation> UpLoadFileCommand { get; set; }
- public DelegateCommand<CloudBoxItem> LoginCommand { get; set; }
- public DelegateCommand<UserBaseItem> RemoveUserCommand { get; set; }
- #endregion
- public CloudFilesContentViewModel()
- {
- InitVariable();
- InitCommand();
- }
- private void InitVariable()
- {
- }
- private void InitCommand()
- {
- OpenFolderCommand = new DelegateCommand<FileOperation>(OpenFolder);
- SelectedFolderCommand = new DelegateCommand<FolderBaseItem>(SelectedFolder);
- OpenFileCommand = new DelegateCommand<FileOperation>(OpenFile);
- UpLoadFileCommand = new DelegateCommand<FileOperation>(UpLoadFile);
- LoginCommand = new DelegateCommand<CloudBoxItem>(LoginUser);
- RemoveUserCommand = new DelegateCommand<UserBaseItem>(RemoveUser);
- }
- #region 云盘公用接口
- #endregion
- #region 用户帐号
- /// <summary>
- /// 登录
- /// </summary>
- private async void LoginUser(CloudBoxItem cloudDriveItem)
- {
- if (cloudDriveItem != null)
- await CloudManager.LoginUser(cloudDriveItem.CloudDiskType);
-
- }
- /// <summary>
- /// 移除用户
- /// </summary>
- private async void RemoveUser(UserBaseItem user)
- {
- if(user != null)
- {
- var result = await CloudManager.RemoveUser(user);
- if(result)
- {
- FilesList.Clear();
- FolderItems.Clear();
- }
- }
- }
- #endregion
- #region 文件
- private async void OpenFolder(FileOperation fileOperation)
- {
- FilesList = await CloudManager.OpenFolder(fileOperation);
- AddFolder(fileOperation);
- }
- /// <summary>
- /// 在文件夹列表,选择文件夹
- /// </summary>
- private void SelectedFolder(FolderBaseItem obj)
- {
- if (obj != null)
- {
- var objIndex = FolderItems.IndexOf(obj);
- var count = FolderItems.Count;
- if (objIndex == count - 1)
- return;
- if (obj.Level == -1)
- {
- for (int i = 1; i < count; i++)
- {
- FolderItems.RemoveAt(i);
- }
- }
- else
- {
- if (objIndex != -1)
- {
- for (int i = count - 1; i > objIndex; i--)
- {
- FolderItems.Remove(FolderItems[i]);
- }
- }
- }
- SelectedFolder(obj.Operation);
- }
- }
- /// <summary>
- /// 在文件列表点击文件夹,而更新文件列表
- /// </summary>
- /// <param name="fileOperation"></param>
- private async void SelectedFolder(FileOperation fileOperation)
- {
- FilesList = await CloudManager.OpenFolder(fileOperation);
- }
- private void AddFolder(FileOperation folder)
- {
- if (folder != null)
- {
- if (folder.DoFile != null)
- {
- FolderBaseItem folderItem = new FolderBaseItem();
- folderItem.FolderName = folder.DoFile.Name;
- folderItem.Level = folder.DoFile.Level;
- folderItem.Operation = folder;
- FolderItems.Add(folderItem);
- }
- else
- {
- FolderItems.Clear();
- FolderBaseItem folderItem = new FolderBaseItem();
- folderItem.FolderName = "云文档";
- folderItem.Level = -1;
- folderItem.Operation = folder;
- FolderItems.Add(folderItem);
- }
- }
- }
- /// <summary>
- /// 下载并打开文件
- /// </summary>
- private async void OpenFile(FileOperation fileOperation)
- {
- await CloudManager.OpenFile(fileOperation);
- }
- /// <summary>
- /// 上传文件
- /// </summary>
- private async void UpLoadFile(FileOperation fileOperation)
- {
- OpenFileDialog openFileDialog = new OpenFileDialog();
- openFileDialog.Filter = Properties.Resources.OpenDialogFilter;
- openFileDialog.Multiselect = true;
- if ((bool)openFileDialog.ShowDialog())
- {
- if (string.IsNullOrEmpty(openFileDialog.FileName) == false)
- {
- fileOperation.SourceFile = openFileDialog.FileName;
- fileOperation.SourceFileName = openFileDialog.SafeFileName;
- var result = await CloudManager.UpLoadFile(fileOperation);
- if (result)
- {
- FilesList = await CloudManager.OpenFolder(fileOperation);
- MessageBox.Show("文件上传完成");
- }
- else
- {
- MessageBox.Show("文件上传失败");
- }
- }
- }
- }
- #endregion
- }
- }
|