1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-05-29 11:34:07 +02:00

Add IAppSystemHandler w/ OpenFileExplorer and update existing code to use it

This commit is contained in:
chylex 2019-07-14 19:50:07 +02:00
parent de68d8934d
commit c2f7e52d13
7 changed files with 33 additions and 6 deletions

View File

@ -1,10 +1,10 @@
using System; using System;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using TweetDuck.Configuration; using TweetDuck.Configuration;
using TweetDuck.Plugins; using TweetDuck.Plugins;
using TweetLib.Core;
using TweetLib.Core.Features.Plugins; using TweetLib.Core.Features.Plugins;
namespace TweetDuck.Core.Other{ namespace TweetDuck.Core.Other{
@ -95,7 +95,7 @@ public void flowLayoutPlugins_Resize(object sender, EventArgs e){
} }
private void btnOpenFolder_Click(object sender, EventArgs e){ private void btnOpenFolder_Click(object sender, EventArgs e){
using(Process.Start("explorer.exe", '"'+pluginManager.PathCustomPlugins+'"')){} App.SystemHandler.OpenFileExplorer(pluginManager.PathCustomPlugins);
} }
private void btnReload_Click(object sender, EventArgs e){ private void btnReload_Click(object sender, EventArgs e){

View File

@ -1,5 +1,4 @@
using System; using System;
using System.Diagnostics;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using TweetDuck.Configuration; using TweetDuck.Configuration;
@ -7,6 +6,7 @@
using TweetDuck.Core.Management; using TweetDuck.Core.Management;
using TweetDuck.Core.Other.Settings.Dialogs; using TweetDuck.Core.Other.Settings.Dialogs;
using TweetDuck.Core.Utils; using TweetDuck.Core.Utils;
using TweetLib.Core;
namespace TweetDuck.Core.Other.Settings{ namespace TweetDuck.Core.Other.Settings{
sealed partial class TabSettingsAdvanced : BaseTabSettings{ sealed partial class TabSettingsAdvanced : BaseTabSettings{
@ -67,11 +67,11 @@ public override void OnClosing(){
#region Application #region Application
private void btnOpenAppFolder_Click(object sender, EventArgs e){ private void btnOpenAppFolder_Click(object sender, EventArgs e){
using(Process.Start("explorer.exe", "\""+Program.ProgramPath+"\"")){} App.SystemHandler.OpenFileExplorer(Program.ProgramPath);
} }
private void btnOpenDataFolder_Click(object sender, EventArgs e){ private void btnOpenDataFolder_Click(object sender, EventArgs e){
using(Process.Start("explorer.exe", "\""+Program.StoragePath+"\"")){} App.SystemHandler.OpenFileExplorer(Program.StoragePath);
} }
private void btnRestart_Click(object sender, EventArgs e){ private void btnRestart_Click(object sender, EventArgs e){

16
Impl/SystemHandler.cs Normal file
View File

@ -0,0 +1,16 @@
using System.Diagnostics;
using System.IO;
using TweetLib.Core.Application;
namespace TweetDuck.Impl{
class SystemHandler : IAppSystemHandler{
void IAppSystemHandler.OpenFileExplorer(string path){
if (File.Exists(path)){
using(Process.Start("explorer.exe", "/select,\"" + path.Replace('/', '\\') + "\"")){}
}
else if (Directory.Exists(path)){
using(Process.Start("explorer.exe", '"' + path.Replace('/', '\\') + '"')){}
}
}
}
}

View File

@ -12,6 +12,7 @@
using TweetDuck.Core.Other; using TweetDuck.Core.Other;
using TweetDuck.Core.Management; using TweetDuck.Core.Management;
using TweetDuck.Core.Utils; using TweetDuck.Core.Utils;
using TweetDuck.Impl;
using TweetLib.Core; using TweetLib.Core;
using TweetLib.Core.Collections; using TweetLib.Core.Collections;
using TweetLib.Core.Utils; using TweetLib.Core.Utils;
@ -58,7 +59,8 @@ static Program(){
Config = new ConfigManager(); Config = new ConfigManager();
Lib.Initialize(new App.Builder{ Lib.Initialize(new App.Builder{
ErrorHandler = Reporter ErrorHandler = Reporter,
SystemHandler = new SystemHandler()
}); });
} }

View File

@ -239,6 +239,7 @@
<Compile Include="Core\Other\FormSettings.Designer.cs"> <Compile Include="Core\Other\FormSettings.Designer.cs">
<DependentUpon>FormSettings.cs</DependentUpon> <DependentUpon>FormSettings.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Impl\SystemHandler.cs" />
<Compile Include="Plugins\PluginControl.cs"> <Compile Include="Plugins\PluginControl.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>

View File

@ -4,16 +4,19 @@
namespace TweetLib.Core{ namespace TweetLib.Core{
public sealed class App{ public sealed class App{
public static IAppErrorHandler ErrorHandler { get; private set; } public static IAppErrorHandler ErrorHandler { get; private set; }
public static IAppSystemHandler SystemHandler { get; private set; }
// Builder // Builder
public sealed class Builder{ public sealed class Builder{
public IAppErrorHandler? ErrorHandler { get; set; } public IAppErrorHandler? ErrorHandler { get; set; }
public IAppSystemHandler? SystemHandler { get; set; }
// Validation // Validation
internal void Initialize(){ internal void Initialize(){
App.ErrorHandler = Validate(ErrorHandler, nameof(ErrorHandler))!; App.ErrorHandler = Validate(ErrorHandler, nameof(ErrorHandler))!;
App.SystemHandler = Validate(SystemHandler, nameof(SystemHandler))!;
} }
private T Validate<T>(T obj, string name){ private T Validate<T>(T obj, string name){

View File

@ -0,0 +1,5 @@
namespace TweetLib.Core.Application{
public interface IAppSystemHandler{
void OpenFileExplorer(string path);
}
}