using PDF_Office.Helper;
using PDF_Office.Model.CloudDrive;
using PDF_Office.Properties;
using PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDF_Office.ViewModels.HomePanel.CloudDrive
{
//各云盘的管理类
//单实例化
public class CloudDriveManager
{
#region 云盘类型
public GoogleDriveManager GoogleDrive => GoogleDriveManager.GoogleDrive;
public DropbBoxManager DropbBox => DropbBoxManager.DropbBox;
#endregion
public CloudType cloudType;
private static CloudDriveManager instance;
public static CloudDriveManager CloudManager => instance ?? (instance = new CloudDriveManager());
private CloudDriveManager()
{
}
#region 用户帐号
///
/// 登录
///
public async Task LoginUser(CloudType cloudType)
{
switch(cloudType)
{
case CloudType.GoogleDrive:
return await GoogleDrive.LoginUserCount();
case CloudType.DropBox:
return await DropbBox.LoginUser();
}
return false;
}
public async Task> OpenFolder(FileOperation fileOperation)
{
ObservableCollection FilesList = null;
switch (fileOperation.User.cloudType)
{
case CloudType.GoogleDrive:
{
var list = await GoogleDrive.GetFolder(fileOperation);
FilesList = new ObservableCollection();
foreach (var item in list)
{
FilesList.Add(item);
}
}
break;
case CloudType.DropBox:
{
var list = await DropbBox.GetFolder(fileOperation);
FilesList = new ObservableCollection();
foreach (var item in list)
{
FilesList.Add(item);
}
}
break;
}
return FilesList;
}
public async Task OpenFile(FileOperation fileOperation)
{
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string tempPath = "";
switch (fileOperation.User.cloudType)
{
case CloudType.GoogleDrive:
tempPath = await GoogleDrive.DownloadGoogleFile(fileOperation, docPath);
break;
case CloudType.DropBox:
tempPath = await DropbBox.DownloadFile(fileOperation, docPath);
break;
}
if(string.IsNullOrEmpty(tempPath) == false)
{
string[] filePaths = { tempPath };
await Task.Delay(3);
LoadPdfViewer(filePaths);
}
return false;
}
public void LoadPdfViewer(string[] filePaths)
{
var content = App.mainWindowViewModel.SelectedItem.DataContext as MainContentViewModel;
if (filePaths.Count() == 1)
{
if (App.OpenedFileList.Contains(filePaths[0]))
{
App.mainWindowViewModel.SelectItem(filePaths[0]);
}
else
{
content.OpenFile(filePaths[0]);
}
ToolMethod.SetFileThumbImg(filePaths[0]);
}
else
{
var fileList = filePaths.ToList().Where(x => !App.OpenedFileList.Exists(y => y == x)).ToList();
if (fileList.Count <= 0)
return;
content.OpenFile(filePaths[0]);
for (int i = 1; i < fileList.Count(); i++)
{
if (!App.OpenedFileList.Contains(fileList[i]))
{
App.mainWindowViewModel.AddTabItem(fileList[i]);
}
ToolMethod.SetFileThumbImg(fileList[i]);
}
}
Settings.Default.Save();
}
public bool LoadedUsers()
{
bool isUsers = false;
if (Cloud.CloudLists.Count > 0)
isUsers = true;
return isUsers;
}
///
/// 移除用户
///
public async Task RemoveUser(UserBaseItem user)
{
bool result = false;
switch (user.cloudType)
{
case CloudType.GoogleDrive:
{
var googleUser = user as GoogleDriveUserItem;
if(googleUser != null)
{
result = await GoogleDrive.RemoveUser(googleUser);
}
}
break;
case CloudType.DropBox:
{
var dropBoxUser = user as DropbBoxUserItem;
if (dropBoxUser != null)
{
result = await DropbBox.RemoveUser(dropBoxUser);
}
}
break;
}
return result;
}
#endregion
#region 文件
public async Task UpLoadFile(FileOperation fileOperation)
{
bool result = false;
switch (fileOperation.User.cloudType)
{
case CloudType.GoogleDrive:
{
var googleUser = fileOperation.User as GoogleDriveUserItem;
if (googleUser != null)
{
result = await GoogleDrive.UpLoadFile(fileOperation);
}
}
break;
case CloudType.DropBox:
{
var dropBoxUser = fileOperation.User as DropbBoxUserItem;
if (dropBoxUser != null)
{
result = await DropbBox.UpLoadFile(fileOperation);
}
}
break;
}
return result;
}
#endregion
}
}