diff --git a/GreenshotJiraPlugin/Jira.cs b/GreenshotJiraPlugin/Jira.cs index 7f982940f..a75335b2a 100644 --- a/GreenshotJiraPlugin/Jira.cs +++ b/GreenshotJiraPlugin/Jira.cs @@ -100,14 +100,16 @@ namespace Jira { private string credentials = null; private DateTime loggedInTime = DateTime.Now; private bool loggedIn = false; - private JiraConfiguration config; private JiraSoapServiceService jira; + private int timeout; + private string url; private Dictionary userMap = new Dictionary(); - public JiraConnector() { - this.config = IniConfig.GetIniSection(); + public JiraConnector(string url, int timeout) { + this.url = url; + this.timeout = timeout; jira = new JiraSoapServiceService(); - jira.Url = config.Url; + jira.Url = url; } ~JiraConnector() { @@ -132,7 +134,7 @@ namespace Jira { this.loggedIn = false; this.credentials = null; e.Data.Add("user", user); - e.Data.Add("url", config.Url); + e.Data.Add("url", url); throw e; } return true; @@ -142,7 +144,7 @@ namespace Jira { logout(); try { // Get the system name, so the user knows where to login to - string systemName = config.Url.Replace(JiraConfiguration.DEFAULT_POSTFIX,""); + string systemName = url.Replace(JiraConfiguration.DEFAULT_POSTFIX,""); CredentialsDialog dialog = new CredentialsDialog(systemName); dialog.Name = null; while (dialog.Show(dialog.Name) == DialogResult.OK) { @@ -180,7 +182,7 @@ namespace Jira { private void checkCredentials() { if (loggedIn) { - if (loggedInTime.AddMinutes(config.Timeout-1).CompareTo(DateTime.Now) < 0) { + if (loggedInTime.AddMinutes(timeout-1).CompareTo(DateTime.Now) < 0) { logout(); login(); } diff --git a/GreenshotJiraPlugin/JiraConfiguration.cs b/GreenshotJiraPlugin/JiraConfiguration.cs index 5a4a93f6a..f3028db3e 100644 --- a/GreenshotJiraPlugin/JiraConfiguration.cs +++ b/GreenshotJiraPlugin/JiraConfiguration.cs @@ -33,12 +33,17 @@ namespace GreenshotJiraPlugin { public const string DEFAULT_POSTFIX = "/rpc/soap/jirasoapservice-v2?wsdl"; public const string DEFAULT_PREFIX = "http://"; private const string DEFAULT_URL = DEFAULT_PREFIX + "jira" + DEFAULT_POSTFIX; + [IniProperty("Url", Description="Url to Jira system, including wsdl.", DefaultValue=DEFAULT_URL)] public string Url; [IniProperty("Timeout", Description="Session timeout in minutes", DefaultValue="30")] public int Timeout; - + [IniProperty("UploadFormat", Description="What file type to use for uploading", DefaultValue="Png")] + public OutputFormat UploadFormat; + [IniProperty("UploadJpegQuality", Description="JPEG file save quality in %.", DefaultValue="80")] + public int UploadJpegQuality; + /// /// A form for username/password /// diff --git a/GreenshotJiraPlugin/JiraPluginBase.cs b/GreenshotJiraPlugin/JiraPluginBase.cs index 42b07b81c..beed4894f 100644 --- a/GreenshotJiraPlugin/JiraPluginBase.cs +++ b/GreenshotJiraPlugin/JiraPluginBase.cs @@ -43,6 +43,7 @@ namespace GreenshotJiraPlugin { private ICaptureHost captureHost = null; private JiraConnector jiraConnector = null; private PluginAttribute myAttributes; + private JiraConfiguration config = null; public JiraPlugin() { } @@ -60,8 +61,10 @@ namespace GreenshotJiraPlugin { host.OnImageEditorOpen += new OnImageEditorOpenHandler(ImageEditorOpened); // Register configuration (don't need the configuration itself) - IniConfig.GetIniSection(); - + config = IniConfig.GetIniSection(); + if(config.IsDirty) { + IniConfig.Save(); + } } public virtual void Shutdown() { @@ -76,7 +79,7 @@ namespace GreenshotJiraPlugin { /// Implementation of the IPlugin.Configure /// public virtual void Configure() { - IniConfig.GetIniSection().ShowConfigDialog(); + config.ShowConfigDialog(); } /// @@ -111,16 +114,16 @@ namespace GreenshotJiraPlugin { IImageEditor imageEditor = (IImageEditor)item.Tag; if (jiraConnector == null) { - this.jiraConnector = new JiraConnector(); + this.jiraConnector = new JiraConnector(config.Url, config.Timeout); } JiraForm jiraForm = new JiraForm(jiraConnector); if (jiraConnector.isLoggedIn()) { - //jiraForm.setFilename(host.GetFilename("png")); + jiraForm.setFilename(host.GetFilename(config.UploadFormat, imageEditor.CaptureDetails)); DialogResult result = jiraForm.ShowDialog(); if (result == DialogResult.OK) { using (MemoryStream stream = new MemoryStream()) { - imageEditor.SaveToStream(stream, OutputFormat.Png, 100); + imageEditor.SaveToStream(stream, config.UploadFormat, config.UploadJpegQuality); byte [] buffer = stream.GetBuffer(); try { jiraForm.upload(buffer);