/Main/Mag-Tools/Views/AccountServerCharacterGUI.cs
# · C# · 305 lines · 235 code · 65 blank · 5 comment · 48 complexity · 5784039f0b3d41703f75422c72a4772c MD5 · raw file
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using Decal.Adapter;
-
- using Mag.Shared;
-
- using VirindiViewService.Controls;
-
- namespace MagTools.Views
- {
- class AccountServerCharacterGUI : IDisposable
- {
- private readonly HudTextBox loginText;
- private readonly HudList loginList;
-
- private readonly HudTextBox loginCompleteText;
- private readonly HudList loginCompleteList;
-
- private readonly HudTextBox periodicCommandText;
- private readonly HudTextBox periodicCommandInterval;
- private readonly HudTextBox periodicCommandOffset;
- private readonly HudList periodicCommandList;
-
- public AccountServerCharacterGUI(MainView mainView)
- {
- try
- {
- loginText = mainView.LoginText;
- mainView.LoginAdd.Hit += new EventHandler(LoginAdd_Hit);
- loginList = mainView.LoginList;
- loginList.Click += new HudList.delClickedControl(loginList_Click);
-
- loginCompleteText = mainView.LoginCompleteText;
- mainView.LoginCompleteAdd.Hit += new EventHandler(LoginCompleteAdd_Hit);
- loginCompleteList = mainView.LoginCompleteList;
- loginCompleteList.Click += new HudList.delClickedControl(loginCompleteList_Click);
-
- periodicCommandText = mainView.PeriodicCommandText;
- periodicCommandInterval = mainView.PeriodicCommandInterval;
- periodicCommandOffset = mainView.PeriodicCommandOffset;
- mainView.PeriodicCommandAdd.Hit += new EventHandler(PeriodicCommandAdd_Hit);
- periodicCommandList = mainView.PeriodicCommandList;
- periodicCommandList.Click += new HudList.delClickedControl(periodicCommandList_Click);
-
- CoreManager.Current.CharacterFilter.Login += new EventHandler<Decal.Adapter.Wrappers.LoginEventArgs>(CharacterFilter_Login);
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- private bool disposed;
-
- public void Dispose()
- {
- Dispose(true);
-
- // Use SupressFinalize in case a subclass
- // of this type implements a finalizer.
- GC.SuppressFinalize(this);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- // If you need thread safety, use a lock around these
- // operations, as well as in your methods that use the resource.
- if (!disposed)
- {
- if (disposing)
- {
- CoreManager.Current.CharacterFilter.Login -= new EventHandler<Decal.Adapter.Wrappers.LoginEventArgs>(CharacterFilter_Login);
- }
-
- // Indicate that the instance has been disposed.
- disposed = true;
- }
-
- }
- void CharacterFilter_Login(object sender, Decal.Adapter.Wrappers.LoginEventArgs e)
- {
- try
- {
- var loginCommands = Settings.SettingsManager.AccountServerCharacter.GetOnLoginCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name);
-
- foreach (var command in loginCommands)
- {
- HudList.HudListRowAccessor newRow = loginList.AddRow();
-
- ((HudStaticText)newRow[0]).Text = command;
- ((HudPictureBox)newRow[1]).Image = 0x60028FC;
- ((HudPictureBox)newRow[2]).Image = 0x60028FD;
- ((HudPictureBox)newRow[3]).Image = 0x60011F8;
- }
-
- var loginCompleteCommands = Settings.SettingsManager.AccountServerCharacter.GetOnLoginCompleteCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name);
-
- foreach (var command in loginCompleteCommands)
- {
- HudList.HudListRowAccessor newRow = loginCompleteList.AddRow();
-
- ((HudStaticText)newRow[0]).Text = command;
- ((HudPictureBox)newRow[1]).Image = 0x60028FC;
- ((HudPictureBox)newRow[2]).Image = 0x60028FD;
- ((HudPictureBox)newRow[3]).Image = 0x60011F8;
- }
-
- var periodicCommands = Settings.SettingsManager.AccountServerCharacter.GetPeriodicCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name);
-
- foreach (var command in periodicCommands)
- {
- HudList.HudListRowAccessor newRow = periodicCommandList.AddRow();
-
- ((HudStaticText)newRow[0]).Text = command.Command;
- ((HudStaticText)newRow[1]).Text = command.Interval.TotalMinutes.ToString(CultureInfo.InvariantCulture);
- ((HudStaticText)newRow[2]).Text = command.OffsetFromMidnight.TotalMinutes.ToString(CultureInfo.InvariantCulture);
- ((HudPictureBox)newRow[3]).Image = 0x60011F8;
- }
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- void LoginAdd_Hit(object sender, EventArgs e)
- {
- try
- {
- var command = loginText.Text;
-
- if (String.IsNullOrEmpty(command))
- return;
-
- loginText.Text = String.Empty;
-
- var commands = Settings.SettingsManager.AccountServerCharacter.GetOnLoginCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name);
-
- commands.Add(command);
-
- Settings.SettingsManager.AccountServerCharacter.SetOnLoginCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name, commands);
-
- HudList.HudListRowAccessor newRow = loginList.AddRow();
-
- ((HudStaticText)newRow[0]).Text = command;
- ((HudPictureBox)newRow[1]).Image = 0x60028FC;
- ((HudPictureBox)newRow[2]).Image = 0x60028FD;
- ((HudPictureBox)newRow[3]).Image = 0x60011F8;
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- void loginList_Click(object sender, int row, int col)
- {
- try
- {
- if ((row == 0 && col == 1) || (row == loginList.RowCount - 1 && col == 2))
- return;
-
- if (col == 1)
- {
- string temp = ((HudStaticText)loginList[row][0]).Text;
- ((HudStaticText)loginList[row][0]).Text = ((HudStaticText)loginList[row - 1][0]).Text;
- ((HudStaticText)loginList[row - 1][0]).Text = temp;
- }
- else if (col == 2)
- {
- string temp = ((HudStaticText)loginList[row][0]).Text;
- ((HudStaticText)loginList[row][0]).Text = ((HudStaticText)loginList[row + 1][0]).Text;
- ((HudStaticText)loginList[row + 1][0]).Text = temp;
- }
- else if (col == 3)
- loginList.RemoveRow(row);
- else
- return;
-
- var commands = new List<string>();
-
- for (int i = 0 ; i < loginList.RowCount ; i++)
- commands.Add(((HudStaticText)loginList[i][0]).Text);
-
- Settings.SettingsManager.AccountServerCharacter.SetOnLoginCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name, commands);
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- void LoginCompleteAdd_Hit(object sender, EventArgs e)
- {
- try
- {
- var command = loginCompleteText.Text;
-
- if (String.IsNullOrEmpty(command))
- return;
-
- loginCompleteText.Text = String.Empty;
-
- var commands = Settings.SettingsManager.AccountServerCharacter.GetOnLoginCompleteCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name);
-
- commands.Add(command);
-
- Settings.SettingsManager.AccountServerCharacter.SetOnLoginCompleteCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name, commands);
-
- HudList.HudListRowAccessor newRow = loginCompleteList.AddRow();
-
- ((HudStaticText)newRow[0]).Text = command;
- ((HudPictureBox)newRow[1]).Image = 0x60028FC;
- ((HudPictureBox)newRow[2]).Image = 0x60028FD;
- ((HudPictureBox)newRow[3]).Image = 0x60011F8;
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- void loginCompleteList_Click(object sender, int row, int col)
- {
- try
- {
- if ((row == 0 && col == 1) || (row == loginCompleteList.RowCount - 1 && col == 2))
- return;
-
- if (col == 1)
- {
- string temp = ((HudStaticText)loginCompleteList[row][0]).Text;
- ((HudStaticText)loginCompleteList[row][0]).Text = ((HudStaticText)loginCompleteList[row - 1][0]).Text;
- ((HudStaticText)loginCompleteList[row - 1][0]).Text = temp;
- }
- else if (col == 2)
- {
- string temp = ((HudStaticText)loginCompleteList[row][0]).Text;
- ((HudStaticText)loginCompleteList[row][0]).Text = ((HudStaticText)loginCompleteList[row + 1][0]).Text;
- ((HudStaticText)loginCompleteList[row + 1][0]).Text = temp;
- }
- else if (col == 3)
- loginCompleteList.RemoveRow(row);
- else
- return;
-
- var commands = new List<string>();
-
- for (int i = 0; i < loginCompleteList.RowCount; i++)
- commands.Add(((HudStaticText)loginCompleteList[i][0]).Text);
-
- Settings.SettingsManager.AccountServerCharacter.SetOnLoginCompleteCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name, commands);
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- void PeriodicCommandAdd_Hit(object sender, EventArgs e)
- {
- try
- {
- var command = periodicCommandText.Text;
- var intervalText = periodicCommandInterval.Text;
- var offsetText = periodicCommandOffset.Text;
-
- if (String.IsNullOrEmpty(command) || String.IsNullOrEmpty(intervalText) || String.IsNullOrEmpty(offsetText))
- return;
-
- int interval;
- int offset;
-
- if (!int.TryParse(intervalText, out interval) || interval <= 0 || !int.TryParse(offsetText, out offset) || offset < 0)
- return;
-
- periodicCommandText.Text = String.Empty;
-
- var commands = Settings.SettingsManager.AccountServerCharacter.GetPeriodicCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name);
-
- commands.Add(new Settings.SettingsManager.AccountServerCharacter.PeriodicCommand(command, TimeSpan.FromMinutes(interval), TimeSpan.FromMinutes(offset)));
-
- Settings.SettingsManager.AccountServerCharacter.SetPeriodicCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name, commands);
-
- HudList.HudListRowAccessor newRow = periodicCommandList.AddRow();
-
- ((HudStaticText)newRow[0]).Text = command;
- ((HudStaticText)newRow[1]).Text = interval.ToString(CultureInfo.InvariantCulture);
- ((HudStaticText)newRow[2]).Text = offset.ToString(CultureInfo.InvariantCulture);
- ((HudPictureBox)newRow[3]).Image = 0x60011F8;
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
-
- void periodicCommandList_Click(object sender, int row, int col)
- {
- try
- {
- if (col == 3)
- periodicCommandList.RemoveRow(row);
- else
- return;
-
- var commands = new List<Settings.SettingsManager.AccountServerCharacter.PeriodicCommand>();
-
- for (int i = 0; i < periodicCommandList.RowCount; i++)
- {
- int interval;
- int offset;
-
- int.TryParse(((HudStaticText)periodicCommandList[i][1]).Text, out interval);
- int.TryParse(((HudStaticText)periodicCommandList[i][2]).Text, out offset);
-
- commands.Add(new Settings.SettingsManager.AccountServerCharacter.PeriodicCommand(((HudStaticText)periodicCommandList[i][0]).Text, TimeSpan.FromMinutes(interval), TimeSpan.FromMinutes(offset)));
- }
-
- Settings.SettingsManager.AccountServerCharacter.SetPeriodicCommands(CoreManager.Current.CharacterFilter.AccountName, CoreManager.Current.CharacterFilter.Server, CoreManager.Current.CharacterFilter.Name, commands);
- }
- catch (Exception ex) { Debug.LogException(ex); }
- }
- }
- }