всякая мелочевка
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace JiraTimeBot.Core.Configuration
|
||||||
|
{
|
||||||
|
public interface ISettingsManager
|
||||||
|
{
|
||||||
|
Settings Load();
|
||||||
|
Settings LoadAndCheck(Action settingsSource, Action<string> errorMessageReporter);
|
||||||
|
|
||||||
|
void Save(Settings settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,148 +1,31 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using JiraTimeBot.Core.Encryption;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace JiraTimeBot.Core.Configuration
|
namespace JiraTimeBot.Core.Configuration
|
||||||
{
|
{
|
||||||
public class Settings
|
public class Settings
|
||||||
{
|
{
|
||||||
public int MinuterPerWorkDay = 8 * 60;
|
|
||||||
public int RountToMinutes { get; set; }
|
|
||||||
|
|
||||||
public string JiraUrl = "https://myteam.aeroclub.ru";
|
public string JiraUrl = "https://myteam.aeroclub.ru";
|
||||||
|
|
||||||
public string RepositoryPath { get; set; }
|
public int MinuterPerWorkDay = 8 * 60;
|
||||||
public string MercurialAuthorEmail { get; set; }
|
|
||||||
public string JiraUserName { get; set; }
|
|
||||||
public string JiraPassword { get; set; }
|
|
||||||
public TimeSpan ActivationTime { get; set; }
|
public TimeSpan ActivationTime { get; set; }
|
||||||
|
|
||||||
public bool AddCommentsToWorklog { get; set; }
|
public bool AddCommentsToWorklog { get; set; }
|
||||||
public WorkType WorkType { get; set; }
|
|
||||||
|
public string JiraPassword { get; set; }
|
||||||
|
|
||||||
public string JiraQuery { get; set; }
|
public string JiraQuery { get; set; }
|
||||||
|
|
||||||
|
public string JiraUserName { get; set; }
|
||||||
|
|
||||||
|
public string MercurialAuthorEmail { get; set; }
|
||||||
|
|
||||||
|
public string RepositoryPath { get; set; }
|
||||||
|
|
||||||
|
public int RoundToMinutes { get; set; }
|
||||||
|
|
||||||
public string TimeControlTask { get; set; }
|
public string TimeControlTask { get; set; }
|
||||||
|
|
||||||
public static Settings LoadAndCheck(Action settingsSource, Action<string> errorMessageReporter)
|
public WorkType WorkType { get; set; }
|
||||||
{
|
|
||||||
Settings settings;
|
|
||||||
bool settingsValid;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
settings = Load();
|
|
||||||
settingsValid = SettingsIsValid(settings, out var message);
|
|
||||||
|
|
||||||
if (!settingsValid)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(message))
|
|
||||||
{
|
|
||||||
errorMessageReporter(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
settingsSource();
|
|
||||||
}
|
|
||||||
|
|
||||||
} while (!settingsValid);
|
|
||||||
|
|
||||||
return settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool SettingsIsValid(Settings settings, out string message)
|
|
||||||
{
|
|
||||||
if (settings == null)
|
|
||||||
{
|
|
||||||
message = "Заполните настройки";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var errors = new List<string>();
|
|
||||||
message = null;
|
|
||||||
|
|
||||||
if (settings.RountToMinutes == default(int))
|
|
||||||
{
|
|
||||||
errors.Add("Укажите округление времени, например, 10 (минут)");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(settings.JiraPassword))
|
|
||||||
{
|
|
||||||
errors.Add("Укажите Password от Jira");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(settings.JiraUserName))
|
|
||||||
{
|
|
||||||
errors.Add("Укажите UserName от Jira");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings.WorkType == WorkType.Mercurial && (string.IsNullOrEmpty(settings.RepositoryPath) || !Directory.Exists(settings.RepositoryPath)))
|
|
||||||
{
|
|
||||||
errors.Add("Укажите верный RepositoryPath");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(settings.TimeControlTask) && !settings.TimeControlTask.Contains("-"))
|
|
||||||
{
|
|
||||||
errors.Add("Укажите верно зажачу контроля времени. Она джолжна содержать знак '-', например, SV-1211");
|
|
||||||
}
|
|
||||||
|
|
||||||
var hasErrors = errors.Any();
|
|
||||||
if (hasErrors)
|
|
||||||
{
|
|
||||||
message = string.Join(Environment.NewLine, errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
return !hasErrors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Settings Load()
|
|
||||||
{
|
|
||||||
var configDir = Application.UserAppDataPath.Replace(Application.ProductVersion, "");
|
|
||||||
var settingsPath = Path.Combine(configDir, _settingsFileName);
|
|
||||||
if (!File.Exists(settingsPath))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var settingsText = File.ReadAllText(settingsPath);
|
|
||||||
|
|
||||||
Settings settings;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
settings = JsonConvert.DeserializeObject<Settings>(settingsText);
|
|
||||||
if (settings == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var password = new PasswordEncryptionClass().Decrypt(settings.JiraUserName, settings.JiraPassword, settings.JiraUrl);
|
|
||||||
settings.JiraPassword = password;
|
|
||||||
}
|
|
||||||
catch (JsonReaderException)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Save()
|
|
||||||
{
|
|
||||||
var password = new PasswordEncryptionClass().Encrypt(this.JiraUserName, this.JiraPassword, this.JiraUrl);
|
|
||||||
this.JiraPassword = password;
|
|
||||||
|
|
||||||
var configDir = Application.UserAppDataPath.Replace(Application.ProductVersion, "");
|
|
||||||
var settingsPath = Path.Combine(configDir, _settingsFileName);
|
|
||||||
var settingsString = JsonConvert.SerializeObject(this);
|
|
||||||
File.WriteAllText(settingsPath, settingsString);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string _settingsFileName = "settings.json";
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum WorkType
|
|
||||||
{
|
|
||||||
Mercurial = 0,
|
|
||||||
JiraLogs = 1,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,128 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using JiraTimeBot.Core.Encryption;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace JiraTimeBot.Core.Configuration
|
||||||
|
{
|
||||||
|
public class SettingsManager : ISettingsManager
|
||||||
|
{
|
||||||
|
private static string _settingsFileName = "settings.json";
|
||||||
|
|
||||||
|
public Settings Load()
|
||||||
|
{
|
||||||
|
var configDir = Application.UserAppDataPath.Replace(Application.ProductVersion, "");
|
||||||
|
var settingsPath = Path.Combine(configDir, _settingsFileName);
|
||||||
|
if (!File.Exists(settingsPath))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var settingsText = File.ReadAllText(settingsPath);
|
||||||
|
|
||||||
|
Settings settings;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
settings = JsonConvert.DeserializeObject<Settings>(settingsText);
|
||||||
|
if (settings == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var password = new PasswordEncryptionClass().Decrypt(settings.JiraUserName, settings.JiraPassword, settings.JiraUrl);
|
||||||
|
settings.JiraPassword = password;
|
||||||
|
}
|
||||||
|
catch (JsonReaderException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Settings LoadAndCheck(Action settingsSource, Action<string> errorMessageReporter)
|
||||||
|
{
|
||||||
|
Settings settings;
|
||||||
|
bool settingsValid;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
settings = Load();
|
||||||
|
settingsValid = SettingsIsValid(settings, out var message);
|
||||||
|
|
||||||
|
if (!settingsValid)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(message))
|
||||||
|
{
|
||||||
|
errorMessageReporter(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
settingsSource();
|
||||||
|
}
|
||||||
|
|
||||||
|
} while (!settingsValid);
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save(Settings settings)
|
||||||
|
{
|
||||||
|
var password = new PasswordEncryptionClass().Encrypt(settings.JiraUserName, settings.JiraPassword, settings.JiraUrl);
|
||||||
|
settings.JiraPassword = password;
|
||||||
|
|
||||||
|
var configDir = Application.UserAppDataPath.Replace(Application.ProductVersion, "");
|
||||||
|
var settingsPath = Path.Combine(configDir, _settingsFileName);
|
||||||
|
var settingsString = JsonConvert.SerializeObject(settings);
|
||||||
|
File.WriteAllText(settingsPath, settingsString);
|
||||||
|
}
|
||||||
|
private static bool SettingsIsValid(Settings settings, out string message)
|
||||||
|
{
|
||||||
|
if (settings == null)
|
||||||
|
{
|
||||||
|
message = "Заполните настройки";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var errors = new List<string>();
|
||||||
|
message = null;
|
||||||
|
|
||||||
|
if (settings.RoundToMinutes == default(int))
|
||||||
|
{
|
||||||
|
errors.Add("Укажите округление времени, например, 10 (минут)");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(settings.JiraPassword))
|
||||||
|
{
|
||||||
|
errors.Add("Укажите Password от Jira");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(settings.JiraUserName))
|
||||||
|
{
|
||||||
|
errors.Add("Укажите UserName от Jira");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.WorkType == WorkType.Mercurial && (string.IsNullOrEmpty(settings.RepositoryPath) || !Directory.Exists(settings.RepositoryPath)))
|
||||||
|
{
|
||||||
|
errors.Add("Укажите верный RepositoryPath");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(settings.TimeControlTask) && !settings.TimeControlTask.Contains("-"))
|
||||||
|
{
|
||||||
|
errors.Add("Укажите верно зажачу контроля времени. Она джолжна содержать знак '-', например, SV-1211");
|
||||||
|
}
|
||||||
|
|
||||||
|
var hasErrors = errors.Any();
|
||||||
|
if (hasErrors)
|
||||||
|
{
|
||||||
|
message = string.Join(Environment.NewLine, errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
return !hasErrors;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace JiraTimeBot.Core.Configuration
|
||||||
|
{
|
||||||
|
public enum WorkType
|
||||||
|
{
|
||||||
|
Mercurial = 0,
|
||||||
|
JiraLogs = 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,6 @@ namespace JiraTimeBot.Core.TaskTime.Objects
|
|||||||
public string Branch { get; set; }
|
public string Branch { get; set; }
|
||||||
public TimeSpan Time { get; set; }
|
public TimeSpan Time { get; set; }
|
||||||
public int Commits { get; set; }
|
public int Commits { get; set; }
|
||||||
|
|
||||||
public DateTime StartTime { get; set; }
|
public DateTime StartTime { get; set; }
|
||||||
public DateTime EndTime { get; set; }
|
public DateTime EndTime { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ namespace JiraTimeBot.Core.TaskTime
|
|||||||
}
|
}
|
||||||
|
|
||||||
//если кол-во коммитов более чем кол-во интервалов - то уменьшим интервал вдвое.
|
//если кол-во коммитов более чем кол-во интервалов - то уменьшим интервал вдвое.
|
||||||
while (totalCommitsCount > (8 * (60.0 / settings.RountToMinutes)))
|
while (totalCommitsCount > (8 * (60.0 / settings.RoundToMinutes)))
|
||||||
{
|
{
|
||||||
settings.RountToMinutes = (int)RoundTo((decimal)(settings.RountToMinutes / 2.0), 5);
|
settings.RoundToMinutes = (int)RoundTo((decimal)(settings.RoundToMinutes / 2.0), 5);
|
||||||
_log.Info($"Слишком много задач - уменьшаю интервал до {settings.RountToMinutes}.");
|
_log.Info($"Слишком много задач - уменьшаю интервал до {settings.RoundToMinutes}.");
|
||||||
if (settings.RountToMinutes == 5)
|
if (settings.RoundToMinutes == 5)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ namespace JiraTimeBot.Core.TaskTime
|
|||||||
}
|
}
|
||||||
|
|
||||||
int currentTaskCommits = taskGroup.Count();
|
int currentTaskCommits = taskGroup.Count();
|
||||||
int currentTaskTime = (int)RoundTo(minutesPerWorkDay / totalCommitsCount * currentTaskCommits, settings.RountToMinutes);
|
int currentTaskTime = (int)RoundTo(minutesPerWorkDay / totalCommitsCount * currentTaskCommits, settings.RoundToMinutes);
|
||||||
remainMinutes = remainMinutes - currentTaskTime;
|
remainMinutes = remainMinutes - currentTaskTime;
|
||||||
|
|
||||||
var orderedTasks = taskGroup.OrderBy(f => f.Time).ToArray();
|
var orderedTasks = taskGroup.OrderBy(f => f.Time).ToArray();
|
||||||
@@ -126,9 +126,14 @@ namespace JiraTimeBot.Core.TaskTime
|
|||||||
private decimal RoundTo(decimal value, decimal to = 15, bool up = true)
|
private decimal RoundTo(decimal value, decimal to = 15, bool up = true)
|
||||||
{
|
{
|
||||||
if ((value % to) == 0)
|
if ((value % to) == 0)
|
||||||
|
{
|
||||||
return value;
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
if (up)
|
if (up)
|
||||||
|
{
|
||||||
return (value - (value % to) + to);
|
return (value - (value % to) + to);
|
||||||
|
}
|
||||||
|
|
||||||
return (value - (value % to));
|
return (value - (value % to));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=JiraTimeBot_002EUi_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=JiraTimeBot_002EUi_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Jira/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Jira/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=Worklog/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||||
@@ -4,6 +4,7 @@ using JiraTimeBot.UI.Tray;
|
|||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using JiraTimeBot.Core;
|
using JiraTimeBot.Core;
|
||||||
|
using JiraTimeBot.Core.Configuration;
|
||||||
using JiraTimeBot.Core.JiraIntegration;
|
using JiraTimeBot.Core.JiraIntegration;
|
||||||
using JiraTimeBot.Core.JiraIntegration.Comments;
|
using JiraTimeBot.Core.JiraIntegration.Comments;
|
||||||
using JiraTimeBot.Core.Mercurial;
|
using JiraTimeBot.Core.Mercurial;
|
||||||
@@ -62,6 +63,7 @@ namespace JiraTimeBot.DI
|
|||||||
|
|
||||||
_builder.RegisterType<AutoStartUp>().AsSelf().AsImplementedInterfaces();
|
_builder.RegisterType<AutoStartUp>().AsSelf().AsImplementedInterfaces();
|
||||||
_builder.RegisterType<frmSettings>().AsSelf().AsImplementedInterfaces();
|
_builder.RegisterType<frmSettings>().AsSelf().AsImplementedInterfaces();
|
||||||
|
_builder.RegisterType<SettingsManager>().AsSelf().AsImplementedInterfaces().SingleInstance();
|
||||||
|
|
||||||
var container = _builder.Build();
|
var container = _builder.Build();
|
||||||
return container;
|
return container;
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ namespace JiraTimeBot.UI
|
|||||||
|
|
||||||
_settingsWindowShow = () =>
|
_settingsWindowShow = () =>
|
||||||
{
|
{
|
||||||
var frmSettings = new frmSettings(_container.Resolve<AutoStartUp>());
|
var frmSettings = new frmSettings(_container.Resolve<AutoStartUp>(), _container.Resolve<ISettingsManager>());
|
||||||
frmSettings.ShowDialog(this);
|
frmSettings.ShowDialog(this);
|
||||||
};
|
};
|
||||||
_settingsErrorReporter = msg => MessageBox.Show(msg, "Загрузка настроек", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);;
|
_settingsErrorReporter = msg => MessageBox.Show(msg, "Загрузка настроек", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);;
|
||||||
@@ -85,7 +85,9 @@ namespace JiraTimeBot.UI
|
|||||||
|
|
||||||
public Settings ReadSettingsAndLock()
|
public Settings ReadSettingsAndLock()
|
||||||
{
|
{
|
||||||
_settings = Settings.LoadAndCheck(_settingsWindowShow, _settingsErrorReporter);
|
var settingsManager = _container.Resolve<ISettingsManager>();
|
||||||
|
|
||||||
|
_settings = settingsManager.LoadAndCheck(_settingsWindowShow, _settingsErrorReporter);
|
||||||
|
|
||||||
LockUnlock(false);
|
LockUnlock(false);
|
||||||
|
|
||||||
@@ -123,7 +125,8 @@ namespace JiraTimeBot.UI
|
|||||||
|
|
||||||
private void PrintStartMessage()
|
private void PrintStartMessage()
|
||||||
{
|
{
|
||||||
_settings = Settings.LoadAndCheck(_settingsWindowShow, _settingsErrorReporter);
|
var settingsManager = _container.Resolve<ISettingsManager>();
|
||||||
|
_settings = settingsManager.LoadAndCheck(_settingsWindowShow, _settingsErrorReporter);
|
||||||
_log.Info($"Загружен бот для {_settings.JiraUserName}, Режим: {_settings.WorkType.ToString()}, работаем в {_settings.RepositoryPath}");
|
_log.Info($"Загружен бот для {_settings.JiraUserName}, Режим: {_settings.WorkType.ToString()}, работаем в {_settings.RepositoryPath}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,16 +8,18 @@ namespace JiraTimeBot.UI
|
|||||||
public partial class frmSettings : Form
|
public partial class frmSettings : Form
|
||||||
{
|
{
|
||||||
private readonly AutoStartUp _autoStart;
|
private readonly AutoStartUp _autoStart;
|
||||||
|
private readonly ISettingsManager _settingsManager;
|
||||||
|
|
||||||
public frmSettings(AutoStartUp autoStart)
|
public frmSettings(AutoStartUp autoStart, ISettingsManager settingsManager)
|
||||||
{
|
{
|
||||||
_autoStart = autoStart;
|
_autoStart = autoStart;
|
||||||
|
_settingsManager = settingsManager;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void frmSettings_Load(object sender, EventArgs e)
|
private void frmSettings_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var settings = Settings.Load();
|
var settings = _settingsManager.Load();
|
||||||
if (settings != null)
|
if (settings != null)
|
||||||
{
|
{
|
||||||
SetSettings(settings);
|
SetSettings(settings);
|
||||||
@@ -34,7 +36,7 @@ namespace JiraTimeBot.UI
|
|||||||
txtRepoPath.Text = settings.RepositoryPath;
|
txtRepoPath.Text = settings.RepositoryPath;
|
||||||
actTime.Text = settings.ActivationTime.ToString("hh\\:mm\\:ss");
|
actTime.Text = settings.ActivationTime.ToString("hh\\:mm\\:ss");
|
||||||
chkAddComments.Checked = settings.AddCommentsToWorklog;
|
chkAddComments.Checked = settings.AddCommentsToWorklog;
|
||||||
txtRoundTo.Text = settings.RountToMinutes.ToString();
|
txtRoundTo.Text = settings.RoundToMinutes.ToString();
|
||||||
cboWorkType.SelectedIndex = (int) settings.WorkType;
|
cboWorkType.SelectedIndex = (int) settings.WorkType;
|
||||||
txtTimeControlTask.Text = settings.TimeControlTask;
|
txtTimeControlTask.Text = settings.TimeControlTask;
|
||||||
txtJQL.Text = settings.JiraQuery;
|
txtJQL.Text = settings.JiraQuery;
|
||||||
@@ -57,7 +59,7 @@ namespace JiraTimeBot.UI
|
|||||||
ActivationTime = TimeSpan.Parse(actTime.Text),
|
ActivationTime = TimeSpan.Parse(actTime.Text),
|
||||||
RepositoryPath = txtRepoPath.Text,
|
RepositoryPath = txtRepoPath.Text,
|
||||||
AddCommentsToWorklog = chkAddComments.Checked,
|
AddCommentsToWorklog = chkAddComments.Checked,
|
||||||
RountToMinutes = roundTo,
|
RoundToMinutes = roundTo,
|
||||||
WorkType = (WorkType) cboWorkType.SelectedIndex,
|
WorkType = (WorkType) cboWorkType.SelectedIndex,
|
||||||
JiraQuery = txtJQL.Text,
|
JiraQuery = txtJQL.Text,
|
||||||
TimeControlTask = txtTimeControlTask.Text,
|
TimeControlTask = txtTimeControlTask.Text,
|
||||||
@@ -71,7 +73,7 @@ namespace JiraTimeBot.UI
|
|||||||
private void btnSave_Click(object sender, EventArgs e)
|
private void btnSave_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var settings = ReadSettingsAndLock();
|
var settings = ReadSettingsAndLock();
|
||||||
settings.Save();
|
_settingsManager.Save(settings);
|
||||||
_autoStart.Set(chkAutostart.Checked);
|
_autoStart.Set(chkAutostart.Checked);
|
||||||
|
|
||||||
MessageBox.Show("Настройки сохранены.");
|
MessageBox.Show("Настройки сохранены.");
|
||||||
|
|||||||
Reference in New Issue
Block a user