Made uploaders config form singleton

This commit is contained in:
Jaex 2016-04-30 11:30:03 +03:00
parent bb8cc6df6b
commit 82f6e38336
2 changed files with 40 additions and 11 deletions

View file

@ -40,18 +40,35 @@ namespace ShareX.UploadersLib
{ {
public partial class UploadersConfigForm : Form public partial class UploadersConfigForm : Form
{ {
private static UploadersConfigForm instance;
public UploadersConfig Config { get; private set; } public UploadersConfig Config { get; private set; }
private ImageList uploadersImageList; private ImageList uploadersImageList;
private URLType urlType = URLType.URL; private URLType customUploaderURLType = URLType.URL;
public UploadersConfigForm(UploadersConfig config) private UploadersConfigForm(UploadersConfig config)
{ {
Config = config; Config = config;
InitializeComponent(); InitializeComponent();
InitializeControls(); InitializeControls();
} }
public static UploadersConfigForm GetFormInstance(UploadersConfig config, out bool firstInstance)
{
if (instance == null || instance.IsDisposed)
{
instance = new UploadersConfigForm(config);
firstInstance = true;
}
else
{
firstInstance = false;
}
return instance;
}
private void UploadersConfigForm_Shown(object sender, EventArgs e) private void UploadersConfigForm_Shown(object sender, EventArgs e)
{ {
LoadSettings(); LoadSettings();
@ -2861,24 +2878,24 @@ private void btnCustomUploaderXmlSyntaxAdd_Click(object sender, EventArgs e)
private void txtCustomUploaderURL_Enter(object sender, EventArgs e) private void txtCustomUploaderURL_Enter(object sender, EventArgs e)
{ {
urlType = URLType.URL; customUploaderURLType = URLType.URL;
} }
private void txtCustomUploaderThumbnailURL_Enter(object sender, EventArgs e) private void txtCustomUploaderThumbnailURL_Enter(object sender, EventArgs e)
{ {
urlType = URLType.ThumbnailURL; customUploaderURLType = URLType.ThumbnailURL;
} }
private void txtCustomUploaderDeletionURL_Enter(object sender, EventArgs e) private void txtCustomUploaderDeletionURL_Enter(object sender, EventArgs e)
{ {
urlType = URLType.DeletionURL; customUploaderURLType = URLType.DeletionURL;
} }
private void AddTextToActiveURLField(string text) private void AddTextToActiveURLField(string text)
{ {
TextBox tb; TextBox tb;
switch (urlType) switch (customUploaderURLType)
{ {
default: default:
case URLType.URL: case URLType.URL:

View file

@ -916,17 +916,29 @@ public static void OpenUploadersConfigWindow(IUploaderService uploaderService =
Program.UploaderSettingsResetEvent.WaitOne(); Program.UploaderSettingsResetEvent.WaitOne();
} }
using (UploadersConfigForm uploadersConfigForm = new UploadersConfigForm(Program.UploadersConfig)) bool firstInstance;
UploadersConfigForm form = UploadersConfigForm.GetFormInstance(Program.UploadersConfig, out firstInstance);
if (firstInstance)
{
form.FormClosed += (sender, e) => Program.UploadersConfigSaveAsync();
if (uploaderService != null)
{
form.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(form));
}
form.Show();
}
else
{ {
if (uploaderService != null) if (uploaderService != null)
{ {
uploadersConfigForm.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(uploadersConfigForm)); form.NavigateToTabPage(uploaderService.GetUploadersConfigTabPage(form));
} }
uploadersConfigForm.ShowDialog(); form.ForceActivate();
} }
Program.UploadersConfigSaveAsync();
} }
} }
} }