|
@@ -1,4 +1,6 @@
|
|
|
-using PDF_Office.Model.CloudDrive;
|
|
|
+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;
|
|
@@ -11,26 +13,41 @@ using System.Threading.Tasks;
|
|
|
|
|
|
namespace PDF_Office.ViewModels.HomePanel.CloudDrive
|
|
|
{
|
|
|
- public class FolderItem
|
|
|
- {
|
|
|
- public int FolderTreeId { get; set; }
|
|
|
- public string FolderName { get; set; }
|
|
|
- public int FolderType { get; set; }
|
|
|
- }
|
|
|
+
|
|
|
//各云盘事件
|
|
|
public class CloudFilesContentViewModel : BindableBase
|
|
|
{
|
|
|
-
|
|
|
- public ObservableCollection<FolderItem> FolderItems { get; set; }
|
|
|
+ #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
|
|
|
|
|
|
- public GoogleDriveManager GoogleDrive => GoogleDriveManager.GoogleDrive;
|
|
|
- public DropbBoxManager DropbBox => DropbBoxManager.DropbBox;
|
|
|
- public DelegateCommand OpenCloudDriveCommand { get; set; }
|
|
|
+ #region 事件
|
|
|
+ public DelegateCommand<FileOperation> OpenFileCommand { get; set; }
|
|
|
+ public DelegateCommand<FileOperation> OpenFolderCommand { get; set; }
|
|
|
public DelegateCommand CheckDriveUsersCommand { get; set; }
|
|
|
+ public DelegateCommand<CloudBoxItem> LoginCommand { get; set; }
|
|
|
|
|
|
- public DelegateCommand<CloudBoxItem> CheckDriveCommand { get; set; }
|
|
|
-
|
|
|
- public DelegateCommand<FolderItem> SelectedFolderCommand { get; set; }
|
|
|
+ public DelegateCommand<FolderBaseItem> SelectedFolderCommand { get; set; }
|
|
|
+ #endregion
|
|
|
|
|
|
public CloudFilesContentViewModel()
|
|
|
{
|
|
@@ -40,19 +57,24 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive
|
|
|
|
|
|
private void InitCommand()
|
|
|
{
|
|
|
- OpenCloudDriveCommand = new DelegateCommand(OpenCloudDrive_Click);
|
|
|
- OpenCloudDriveCommand = new DelegateCommand(CheckDriveUsers);
|
|
|
-
|
|
|
- CheckDriveCommand = new DelegateCommand<CloudBoxItem>(LoginUser);
|
|
|
- SelectedFolderCommand = new DelegateCommand<FolderItem>(SelectedFolder_Command);
|
|
|
+ // OpenFileCommand = new DelegateCommand(OpenCloudDrive_Click);
|
|
|
+ OpenFileCommand = new DelegateCommand<FileOperation>(OpenFile);
|
|
|
+ OpenFolderCommand = new DelegateCommand<FileOperation>(OpenFolder);
|
|
|
+ LoginCommand = new DelegateCommand<CloudBoxItem>(LoginUser);
|
|
|
+ SelectedFolderCommand = new DelegateCommand<FolderBaseItem>(SelectedFolder_Command);
|
|
|
}
|
|
|
|
|
|
- private void SelectedFolder_Command(FolderItem obj)
|
|
|
+ private void SelectedFolder_Command(FolderBaseItem obj)
|
|
|
{
|
|
|
if(obj != null)
|
|
|
{
|
|
|
+ var objIndex = FolderItems.IndexOf(obj);
|
|
|
var count = FolderItems.Count;
|
|
|
- if (obj.FolderTreeId == 0)
|
|
|
+
|
|
|
+ if (objIndex == count - 1)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (obj.Level == -1)
|
|
|
{
|
|
|
|
|
|
for(int i = 1; i < count; i++)
|
|
@@ -62,7 +84,6 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- var objIndex = FolderItems.IndexOf(obj);
|
|
|
if(objIndex != -1)
|
|
|
{
|
|
|
for(int i = count - 1; i > objIndex; i--)
|
|
@@ -71,31 +92,19 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ SelectedFolder(obj.Operation);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void InitVariable()
|
|
|
{
|
|
|
- FolderItems = new ObservableCollection<FolderItem>();
|
|
|
- FolderItems.Add(new FolderItem() { FolderName = "云文档", FolderTreeId = 0 });
|
|
|
- FolderItems.Add(new FolderItem() { FolderName = "文件夹1", FolderTreeId = 1 });
|
|
|
- FolderItems.Add(new FolderItem() { FolderName = "文件夹2", FolderTreeId = 2 });
|
|
|
- FolderItems.Add(new FolderItem() { FolderName = "文件夹3", FolderTreeId = 3 });
|
|
|
- FolderItems.Add(new FolderItem() { FolderName = "文件夹4", FolderTreeId = 4 });
|
|
|
- FolderItems.Add(new FolderItem() { FolderName = "文件夹5", FolderTreeId = 5 });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public async void CheckDrive(CloudBoxItem cloudDriveItem)
|
|
|
{
|
|
|
- switch (cloudDriveItem.CloudDiskType)
|
|
|
- {
|
|
|
- case CloudType.GoogleDrive:
|
|
|
- await GoogleDrive.LoginUserCount();
|
|
|
- break;
|
|
|
- case CloudType.DropBox:
|
|
|
- await DropbBox.LoginUser();
|
|
|
- break;
|
|
|
- }
|
|
|
+ await CloudManager.LoginUser(cloudDriveItem.CloudDiskType);
|
|
|
}
|
|
|
|
|
|
#region 云盘公用接口
|
|
@@ -121,15 +130,9 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive
|
|
|
/// </summary>
|
|
|
public async void LoginUser(CloudBoxItem cloudDriveItem)
|
|
|
{
|
|
|
- switch (cloudDriveItem.CloudDiskType)
|
|
|
- {
|
|
|
- case CloudType.GoogleDrive:
|
|
|
- await GoogleDrive.LoginUserCount();
|
|
|
- break;
|
|
|
- case CloudType.DropBox:
|
|
|
- await DropbBox.LoginUser();
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (cloudDriveItem != null)
|
|
|
+ await CloudManager.LoginUser(cloudDriveItem.CloudDiskType);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -173,11 +176,52 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive
|
|
|
/// <summary>
|
|
|
/// 下载并打开文件
|
|
|
/// </summary>
|
|
|
- public void OpenFile()
|
|
|
+ public async void OpenFile(FileOperation fileOperation)
|
|
|
{
|
|
|
+ await CloudManager.OpenFile(fileOperation);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async void OpenFolder(FileOperation fileOperation)
|
|
|
+ {
|
|
|
+ FilesList = await CloudManager.OpenFolder(fileOperation);
|
|
|
+ AddFolder(fileOperation);
|
|
|
+ }
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 在文件列表点击文件夹,而更新文件列表
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="fileOperation"></param>
|
|
|
+ public 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>
|