Browse Source

Merge pull request #57 from OctaAcid/dev

chore: designed new gui for editing configuration
tags/0.1.0
TCL GitHub 3 years ago
parent
commit
1cb7c3c4f3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 143 additions and 26 deletions
  1. +24
    -6
      installer/Installer/MainWindow.xaml
  2. +50
    -11
      installer/Installer/Model.cs
  3. +69
    -9
      installer/Installer/ViewModel.cs

+ 24
- 6
installer/Installer/MainWindow.xaml View File

@@ -9,21 +9,39 @@
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40" />
<ColumnDefinition Width="400" />
<ColumnDefinition Width="75" />
<ColumnDefinition Width="75" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="250" />
<ColumnDefinition Width="75" />
<ColumnDefinition Width="75" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="20" />
<RowDefinition Height="*" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="1" Grid.Column="1" Text="将主体程序安装在:" />
<TextBox Grid.Row="2" Grid.Column="1" Name="RouteTxtBox" Text="{Binding Route}" IsEnabled="{Binding CanEditRoute}" />
<Button Grid.Row="2" Grid.Column="2" Name="GetRouteBtn" Content="Browse..." Command="{Binding ClickBrowseCommand}" IsEnabled="{Binding CanEditRoute}" />
<Button Grid.Row="2" Grid.Column="3" Name="SetBtm" Content="Confirm" Command="{Binding ClickConfirmCommand}" />
<TextBlock Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Text="欢迎使用选手包" Visibility="{Binding InstIntroVis}"/>
<TextBlock Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Text="你已经安装了选手包,请选择你要进行的操作" Visibility="{Binding EditIntroVis}"/>

<TextBlock Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Text="将主体程序安装在:" Visibility="{Binding InstIntroVis}"/>
<TextBlock Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Text="将主体程序移动到:" Visibility="{Binding MoveIntroVis}"/>

<TextBox Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" Name="RouteTxtBox" Text="{Binding Route}" Visibility="{Binding RouteBoxVis}"/>
<Button Grid.Row="3" Grid.Column="4" Name="GetRouteBtn" Content="Browse..." Command="{Binding ClickBrowseCommand}" Visibility="{Binding RouteBoxVis}" />
<Button Grid.Row="3" Grid.Column="5" Name="SetBtm" Content="Confirm" Command="{Binding ClickConfirmCommand}" Visibility="{Binding RouteBoxVis}"/>
<Button Grid.Row="3" Grid.Column="2" Name="UpdateBtn" Content="Update" Command="{Binding ClickUpdateCommand}" Visibility="{Binding EditIntroVis}" />

<Button Grid.Row="5" Grid.Column="2" Name="MoveBtn" Content="Move" Command="{Binding ClickMoveCommand}" Visibility="{Binding EditIntroVis}" />

<Button Grid.Row="7" Grid.Column="2" Name="UninstBtn" Content="UnInst" Command="{Binding ClickUninstCommand}" Visibility="{Binding EditIntroVis}" />
</Grid>
</Window>

+ 50
- 11
installer/Installer/Model.cs View File

@@ -18,6 +18,7 @@ using System.Xml.Schema;
using static Downloader.Program;
using System.Threading.Tasks;
using System.Net.Http;
using System.Windows;

namespace starter.viewmodel.settings
{
@@ -26,34 +27,71 @@ namespace starter.viewmodel.settings
/// </summary>
public class SettingsModel
{
/// <summary>
/// downloader function
/// </summary>
private Downloader.Program.Data configData = new Downloader.Program.Data("");
private Downloader.Program.Tencent_cos_download cloud = new Downloader.Program.Tencent_cos_download();

/// <summary>
/// save settings
/// </summary>
public void install()
public bool install()
{
if (Downloader.Program.Tencent_cos_download.CheckAlreadyDownload())
{
MessageBoxResult repeatOption = MessageBox.Show($"文件已存在于{Downloader.Program.Data.FilePath},是否移动到新位置?", "重复安装", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
//ask if abort install, with warning sign, defalut no;
if (repeatOption == MessageBoxResult.Cancel)
{
return false; //回到选择地址界面
}
else if (repeatOption == MessageBoxResult.No)
{
System.Environment.Exit(0);
return false;
}
else
{
Downloader.Program.Tencent_cos_download.MoveProgram(Route);
return true;
}
}
else
{
Downloader.Program.Data.ResetFilepath(Route);
Downloader.Program.Tencent_cos_download.DownloadAll();
return true;
}
}
/// <summary>
/// Route of files
/// </summary>
public string Route
{
get; set;
get
{
return Downloader.Program.Data.FilePath;
}
set
{
Downloader.Program.Data.FilePath = value;
}
}
/// <summary>
/// if the route was set or is under editing
/// </summary>
public bool HaveRoute
public bool EditingRoute
{
get; set;
}
public bool EditingRoute
///<summary>
///if already installed
/// </summary>
public bool installed
{
get; set;
}
/// <summary>
/// downloader function
/// </summary>
private Downloader.Program downloader = new Downloader.Program();
}
}
namespace Downloader
@@ -572,9 +610,8 @@ namespace Downloader
File.WriteAllText(@System.IO.Path.Combine(Data.FilePath, "hash.json"), Contentjson);
}

public static void MoveProgram()
public static void MoveProgram(string newPath)
{
string newPath = Console.ReadLine();
DirectoryInfo newdi = new DirectoryInfo(newPath);
DirectoryInfo olddi = new DirectoryInfo(Data.FilePath);
try
@@ -688,7 +725,9 @@ namespace Downloader
}
else if (choose == "6")
{
MoveProgram();
string newPath;
newPath = Console.ReadLine();
MoveProgram(newPath);
}
else if (choose == "7")
{


+ 69
- 9
installer/Installer/ViewModel.cs View File

@@ -1,6 +1,7 @@

using starter.viewmodel.common;
using System;
using System.Windows;
using System.Windows.Forms;

namespace starter.viewmodel.settings
@@ -16,8 +17,15 @@ namespace starter.viewmodel.settings
/// </summary>
public SettingsViewModel()
{
Route = Environment.GetEnvironmentVariable("USERPROFILE") + "\\THUAI6";
CanEditRoute = true;
if (Downloader.Program.Tencent_cos_download.CheckAlreadyDownload())
{
Installed = true;
}
else
{
Route = Environment.GetEnvironmentVariable("USERPROFILE") + "\\THUAI6";
EditingRoute = true;
}
}

public string Route
@@ -32,18 +40,67 @@ namespace starter.viewmodel.settings
this.RaisePropertyChanged("Route");
}
}

public bool CanEditRoute // if the user can still edit install route
public bool Installed
{
get
{
return !obj.HaveRoute;
return obj.installed;
}
set
{
obj.installed = value;
this.RaisePropertyChanged("Installed");
this.RaisePropertyChanged("InstIntroVis");
this.RaisePropertyChanged("EditIntroVis");
this.RaisePropertyChanged("MoveIntroVis");
}
}
public bool EditingRoute
{
get
{
return obj.EditingRoute;
}
set
{
obj.HaveRoute = !value;
obj.EditingRoute = value;
this.RaisePropertyChanged("CanEditRoute");
this.RaisePropertyChanged("EditingRoute");
this.RaisePropertyChanged("MoveIntroVis");
this.RaisePropertyChanged("RouteBoxVis");
}
}
public Visibility RouteBoxVis //if the route editing textbox is visible
{
get
{
return obj.EditingRoute ? Visibility.Visible : Visibility.Collapsed;
}
}
/// <summary>
/// if the install/edit instruction can be seen
/// </summary>
public Visibility InstIntroVis
{
get
{
return obj.installed ? Visibility.Collapsed : Visibility.Visible;
}
}
public Visibility EditIntroVis
{
get
{
return obj.installed ? Visibility.Visible : Visibility.Collapsed;
}
}
public Visibility MoveIntroVis
{
get
{
if (obj.installed == true && obj.EditingRoute == true)
return Visibility.Visible;
else
return Visibility.Collapsed;
}
}

@@ -76,8 +133,11 @@ namespace starter.viewmodel.settings
{
clickConfirmCommand = new BaseCommand(new Action<object>(o =>
{
CanEditRoute = false;
obj.install();
if (obj.install())
{
EditingRoute = false;
Installed = true;
}
}));
}
return clickConfirmCommand;


Loading…
Cancel
Save