116 lines
4.1 KiB
C#
116 lines
4.1 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Windows;
|
|
using FileUploader.Models;
|
|
using Hopetry.Services;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Win32;
|
|
using ModernWpf.Controls;
|
|
|
|
namespace Hopetry
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for MainWindow.xaml
|
|
/// </summary>
|
|
/* public partial class MainWindow : Window
|
|
{
|
|
private AppDbContext _db = new AppDbContext();
|
|
private MinioService _minioService;
|
|
public ObservableCollection<FileRecord> UploadQueue { get; } = new ObservableCollection<FileRecord>();
|
|
public bool ShutdownAfterUpload { get; set; }
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
}*/
|
|
public partial class MainWindow : Window
|
|
{
|
|
private AppDbContext _db = new AppDbContext();
|
|
private MinioService _minioService;
|
|
public ObservableCollection<FileRecord> UploadQueue { get; } = new ObservableCollection<FileRecord>();
|
|
public bool ShutdownAfterUpload { get; set; }
|
|
Dictionary<string, Uri> _pages;
|
|
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
/* _pages = new Dictionary<string, Uri>
|
|
{
|
|
{ "home", new Uri("Views/HomePage.xaml", UriKind.Relative) },
|
|
{ "files", new Uri("Views/FilesPage.xaml", UriKind.Relative) },
|
|
{ "share", new Uri("Views/SharePage.xaml", UriKind.Relative) },
|
|
{ "trash", new Uri("Views/TrashPage.xaml", UriKind.Relative) }
|
|
};
|
|
MainFrame.Navigate(_pages["home"]);*/
|
|
DataContext = this;
|
|
// 初始化导航完成
|
|
_db.Database.Migrate();
|
|
Console.WriteLine(Directory.GetCurrentDirectory());
|
|
var config = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddJsonFile("global.json")
|
|
.Build();
|
|
|
|
_minioService = new MinioService(config);
|
|
}
|
|
|
|
private void NavigationView_SelectionChanged(object sender,
|
|
NavigationViewSelectionChangedEventArgs e)
|
|
{
|
|
if (e.SelectedItemContainer?.Tag is string tag && _pages.TryGetValue(tag, out Uri uri))
|
|
{
|
|
MainFrame.Navigate(uri);
|
|
}
|
|
}
|
|
|
|
private async void AddUser_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
/* var dialog = new UserDialog();
|
|
if (dialog.ShowDialog() == true)
|
|
{
|
|
_db.Users.Add(new User { Username = dialog.Username });
|
|
await _db.SaveChangesAsync();
|
|
//LogTextBox.AppendText($"用户 {dialog.Username} 添加成功\n");
|
|
}*/
|
|
}
|
|
|
|
private void SelectFile_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var dialog = new OpenFileDialog();
|
|
if (dialog.ShowDialog() == true)
|
|
{
|
|
UploadQueue.Add(new FileRecord
|
|
{
|
|
FileName = Path.GetFileName(dialog.FileName),
|
|
LocalPath = dialog.FileName,
|
|
UserId = 1
|
|
});
|
|
}
|
|
}
|
|
|
|
private async void StartUpload_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach (var file in UploadQueue)
|
|
{
|
|
try
|
|
{
|
|
await _minioService.UploadFileAsync(file);
|
|
file.MinioPath = $"uploads/{file.FileName}";
|
|
file.UploadTime = DateTime.Now;
|
|
_db.FileRecords.Add(file);
|
|
await _db.SaveChangesAsync();
|
|
//LogTextBox.AppendText($"文件 {file.FileName} 上传成功\n");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//LogTextBox.AppendText($"上传失败: {ex.Message}\n");
|
|
}
|
|
}
|
|
|
|
if (ShutdownAfterUpload)
|
|
Process.Start("shutdown", "/s /t 0");
|
|
}
|
|
}
|
|
} |