ISE_22.Aparyan.Bulldozer.Base Lab04 #4
158
ProjectBulldozer/FormBulldozerCollections.Designer.cs
generated
158
ProjectBulldozer/FormBulldozerCollections.Designer.cs
generated
@ -15,58 +15,55 @@
|
|||||||
#region Windows Form Designer generated code
|
#region Windows Form Designer generated code
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
Instruments = new Panel();
|
components = new System.ComponentModel.Container();
|
||||||
maskedTextBoxNumber = new MaskedTextBox();
|
maskedTextBoxNumber = new MaskedTextBox();
|
||||||
ButtonRefreshCollection = new Button();
|
ButtonRefreshCollection = new Button();
|
||||||
ButtonRemoveTractor = new Button();
|
ButtonRemoveTractor = new Button();
|
||||||
ButtonAddTractor = new Button();
|
ButtonAddTractor = new Button();
|
||||||
pictureBoxCollections = new PictureBox();
|
pictureBoxCollections = new PictureBox();
|
||||||
Instruments.SuspendLayout();
|
textBoxStorageName = new TextBox();
|
||||||
|
bindingSource1 = new BindingSource(components);
|
||||||
|
bindingSource2 = new BindingSource(components);
|
||||||
|
groupBox1 = new GroupBox();
|
||||||
|
listBoxStorage = new ListBox();
|
||||||
|
ButtonAddObject = new Button();
|
||||||
|
ButtonRemoveObject = new Button();
|
||||||
|
Instruments = new GroupBox();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)bindingSource1).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)bindingSource2).BeginInit();
|
||||||
|
groupBox1.SuspendLayout();
|
||||||
|
Instruments.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// Instruments
|
|
||||||
//
|
|
||||||
Instruments.Anchor = AnchorStyles.Right;
|
|
||||||
Instruments.AutoSize = true;
|
|
||||||
Instruments.Controls.Add(maskedTextBoxNumber);
|
|
||||||
Instruments.Controls.Add(ButtonRefreshCollection);
|
|
||||||
Instruments.Controls.Add(ButtonAddTractor);
|
|
||||||
Instruments.Controls.Add(ButtonRemoveTractor);
|
|
||||||
Instruments.Location = new Point(588, 11);
|
|
||||||
Instruments.Margin = new Padding(3, 2, 3, 2);
|
|
||||||
Instruments.Name = "Instruments";
|
|
||||||
Instruments.Size = new Size(150, 456);
|
|
||||||
Instruments.TabIndex = 0;
|
|
||||||
//
|
|
||||||
// maskedTextBoxNumber
|
// maskedTextBoxNumber
|
||||||
//
|
//
|
||||||
maskedTextBoxNumber.Location = new Point(15, 51);
|
maskedTextBoxNumber.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
|
maskedTextBoxNumber.Location = new Point(33, 399);
|
||||||
maskedTextBoxNumber.Margin = new Padding(3, 2, 3, 2);
|
maskedTextBoxNumber.Margin = new Padding(3, 2, 3, 2);
|
||||||
maskedTextBoxNumber.Mask = "0";
|
maskedTextBoxNumber.Mask = "0";
|
||||||
maskedTextBoxNumber.Name = "maskedTextBoxNumber";
|
maskedTextBoxNumber.Name = "maskedTextBoxNumber";
|
||||||
maskedTextBoxNumber.Size = new Size(119, 23);
|
maskedTextBoxNumber.Size = new Size(131, 23);
|
||||||
maskedTextBoxNumber.TabIndex = 4;
|
maskedTextBoxNumber.TabIndex = 4;
|
||||||
//
|
//
|
||||||
// ButtonRefreshCollection
|
// ButtonRefreshCollection
|
||||||
//
|
//
|
||||||
ButtonRefreshCollection.Anchor = AnchorStyles.Right;
|
ButtonRefreshCollection.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
ButtonRefreshCollection.Location = new Point(3, 175);
|
ButtonRefreshCollection.Location = new Point(33, 499);
|
||||||
ButtonRefreshCollection.Margin = new Padding(3, 2, 3, 2);
|
ButtonRefreshCollection.Margin = new Padding(3, 2, 3, 2);
|
||||||
ButtonRefreshCollection.Name = "ButtonRefreshCollection";
|
ButtonRefreshCollection.Name = "ButtonRefreshCollection";
|
||||||
ButtonRefreshCollection.Size = new Size(131, 27);
|
ButtonRefreshCollection.Size = new Size(131, 31);
|
||||||
ButtonRefreshCollection.TabIndex = 2;
|
ButtonRefreshCollection.TabIndex = 2;
|
||||||
ButtonRefreshCollection.Text = "Обновить ";
|
ButtonRefreshCollection.Text = "Обновить все";
|
||||||
ButtonRefreshCollection.UseVisualStyleBackColor = true;
|
ButtonRefreshCollection.UseVisualStyleBackColor = true;
|
||||||
ButtonRefreshCollection.Click += ButtonRefreshCollection_Click;
|
|
||||||
//
|
//
|
||||||
// ButtonRemoveTractor
|
// ButtonRemoveTractor
|
||||||
//
|
//
|
||||||
ButtonRemoveTractor.Anchor = AnchorStyles.Right;
|
ButtonRemoveTractor.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
ButtonRemoveTractor.Location = new Point(3, 133);
|
ButtonRemoveTractor.Location = new Point(33, 444);
|
||||||
ButtonRemoveTractor.Margin = new Padding(3, 2, 3, 2);
|
ButtonRemoveTractor.Margin = new Padding(3, 2, 3, 2);
|
||||||
ButtonRemoveTractor.Name = "ButtonRemoveTractor";
|
ButtonRemoveTractor.Name = "ButtonRemoveTractor";
|
||||||
ButtonRemoveTractor.Size = new Size(131, 27);
|
ButtonRemoveTractor.Size = new Size(131, 33);
|
||||||
ButtonRemoveTractor.TabIndex = 1;
|
ButtonRemoveTractor.TabIndex = 1;
|
||||||
ButtonRemoveTractor.Text = "Удалить объект";
|
ButtonRemoveTractor.Text = "Удалить объект";
|
||||||
ButtonRemoveTractor.UseVisualStyleBackColor = true;
|
ButtonRemoveTractor.UseVisualStyleBackColor = true;
|
||||||
@ -74,11 +71,11 @@
|
|||||||
//
|
//
|
||||||
// ButtonAddTractor
|
// ButtonAddTractor
|
||||||
//
|
//
|
||||||
ButtonAddTractor.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
ButtonAddTractor.Anchor = AnchorStyles.Top;
|
||||||
ButtonAddTractor.Location = new Point(6, 20);
|
ButtonAddTractor.Location = new Point(33, 346);
|
||||||
ButtonAddTractor.Margin = new Padding(3, 2, 3, 2);
|
ButtonAddTractor.Margin = new Padding(3, 2, 3, 2);
|
||||||
ButtonAddTractor.Name = "ButtonAddTractor";
|
ButtonAddTractor.Name = "ButtonAddTractor";
|
||||||
ButtonAddTractor.Size = new Size(128, 27);
|
ButtonAddTractor.Size = new Size(131, 29);
|
||||||
ButtonAddTractor.TabIndex = 0;
|
ButtonAddTractor.TabIndex = 0;
|
||||||
ButtonAddTractor.Text = "Добавить объект";
|
ButtonAddTractor.Text = "Добавить объект";
|
||||||
ButtonAddTractor.UseVisualStyleBackColor = true;
|
ButtonAddTractor.UseVisualStyleBackColor = true;
|
||||||
@ -86,41 +83,116 @@
|
|||||||
//
|
//
|
||||||
// pictureBoxCollections
|
// pictureBoxCollections
|
||||||
//
|
//
|
||||||
pictureBoxCollections.Anchor = AnchorStyles.Left;
|
pictureBoxCollections.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
pictureBoxCollections.Location = new Point(12, 11);
|
pictureBoxCollections.Location = new Point(4, 4);
|
||||||
pictureBoxCollections.Margin = new Padding(3, 2, 3, 2);
|
pictureBoxCollections.Margin = new Padding(3, 2, 3, 2);
|
||||||
pictureBoxCollections.Name = "pictureBoxCollections";
|
pictureBoxCollections.Name = "pictureBoxCollections";
|
||||||
pictureBoxCollections.Size = new Size(570, 456);
|
pictureBoxCollections.Size = new Size(693, 541);
|
||||||
pictureBoxCollections.TabIndex = 1;
|
pictureBoxCollections.TabIndex = 1;
|
||||||
pictureBoxCollections.TabStop = false;
|
pictureBoxCollections.TabStop = false;
|
||||||
pictureBoxCollections.Click += pictureBoxCollections_Click;
|
//
|
||||||
|
// textBoxStorageName
|
||||||
|
//
|
||||||
|
textBoxStorageName.Location = new Point(27, 32);
|
||||||
|
textBoxStorageName.Name = "textBoxStorageName";
|
||||||
|
textBoxStorageName.Size = new Size(131, 23);
|
||||||
|
textBoxStorageName.TabIndex = 5;
|
||||||
|
textBoxStorageName.TextChanged += textBoxStorageName_TextChanged;
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
groupBox1.Controls.Add(listBoxStorage);
|
||||||
|
groupBox1.Controls.Add(ButtonAddObject);
|
||||||
|
groupBox1.Controls.Add(ButtonRemoveObject);
|
||||||
|
groupBox1.Controls.Add(textBoxStorageName);
|
||||||
|
groupBox1.Location = new Point(6, 22);
|
||||||
|
groupBox1.Name = "groupBox1";
|
||||||
|
groupBox1.Size = new Size(189, 296);
|
||||||
|
groupBox1.TabIndex = 5;
|
||||||
|
groupBox1.TabStop = false;
|
||||||
|
groupBox1.Text = "Наборы";
|
||||||
|
//
|
||||||
|
// listBoxStorage
|
||||||
|
//
|
||||||
|
listBoxStorage.FormattingEnabled = true;
|
||||||
|
listBoxStorage.ItemHeight = 15;
|
||||||
|
listBoxStorage.Location = new Point(27, 122);
|
||||||
|
listBoxStorage.Name = "listBoxStorage";
|
||||||
|
listBoxStorage.Size = new Size(131, 94);
|
||||||
|
listBoxStorage.TabIndex = 9;
|
||||||
|
listBoxStorage.SelectedIndexChanged += listBoxStorage_SelectedIndexChanged;
|
||||||
|
//
|
||||||
|
// ButtonAddObject
|
||||||
|
//
|
||||||
|
ButtonAddObject.Anchor = AnchorStyles.Top;
|
||||||
|
ButtonAddObject.Location = new Point(27, 72);
|
||||||
|
ButtonAddObject.Margin = new Padding(3, 2, 3, 2);
|
||||||
|
ButtonAddObject.Name = "ButtonAddObject";
|
||||||
|
ButtonAddObject.Size = new Size(131, 29);
|
||||||
|
ButtonAddObject.TabIndex = 7;
|
||||||
|
ButtonAddObject.Text = "Добавить набор";
|
||||||
|
ButtonAddObject.UseVisualStyleBackColor = true;
|
||||||
|
ButtonAddObject.Click += ButtonAddObject_Click;
|
||||||
|
//
|
||||||
|
// ButtonRemoveObject
|
||||||
|
//
|
||||||
|
ButtonRemoveObject.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
|
ButtonRemoveObject.Location = new Point(27, 244);
|
||||||
|
ButtonRemoveObject.Margin = new Padding(3, 2, 3, 2);
|
||||||
|
ButtonRemoveObject.Name = "ButtonRemoveObject";
|
||||||
|
ButtonRemoveObject.Size = new Size(131, 33);
|
||||||
|
ButtonRemoveObject.TabIndex = 8;
|
||||||
|
ButtonRemoveObject.Text = "Удалить набор";
|
||||||
|
ButtonRemoveObject.UseVisualStyleBackColor = true;
|
||||||
|
ButtonRemoveObject.Click += ButtonRemoveObject_Click;
|
||||||
|
//
|
||||||
|
// Instruments
|
||||||
|
//
|
||||||
|
Instruments.Controls.Add(ButtonRefreshCollection);
|
||||||
|
Instruments.Controls.Add(groupBox1);
|
||||||
|
Instruments.Controls.Add(maskedTextBoxNumber);
|
||||||
|
Instruments.Controls.Add(ButtonAddTractor);
|
||||||
|
Instruments.Controls.Add(ButtonRemoveTractor);
|
||||||
|
Instruments.Location = new Point(697, 4);
|
||||||
|
Instruments.Name = "Instruments";
|
||||||
|
Instruments.Size = new Size(200, 541);
|
||||||
|
Instruments.TabIndex = 6;
|
||||||
|
Instruments.TabStop = false;
|
||||||
|
Instruments.Text = "Инструменты";
|
||||||
//
|
//
|
||||||
// FormTractorCollections
|
// FormTractorCollections
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(748, 478);
|
ClientSize = new Size(904, 543);
|
||||||
Controls.Add(pictureBoxCollections);
|
|
||||||
Controls.Add(Instruments);
|
Controls.Add(Instruments);
|
||||||
|
Controls.Add(pictureBoxCollections);
|
||||||
Margin = new Padding(3, 2, 3, 2);
|
Margin = new Padding(3, 2, 3, 2);
|
||||||
Name = "FormTractorCollections";
|
Name = "FormTractorCollections";
|
||||||
Text = "Набор трактороов";
|
Text = "Набор локомотивов";
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)bindingSource1).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)bindingSource2).EndInit();
|
||||||
|
groupBox1.ResumeLayout(false);
|
||||||
|
groupBox1.PerformLayout();
|
||||||
Instruments.ResumeLayout(false);
|
Instruments.ResumeLayout(false);
|
||||||
Instruments.PerformLayout();
|
Instruments.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).EndInit();
|
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
|
||||||
}
|
|
||||||
private void pictureBoxCollections_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
private Panel Instruments;
|
|
||||||
private Button ButtonRefreshCollection;
|
private Button ButtonRefreshCollection;
|
||||||
private Button ButtonRemoveTractor;
|
private Button ButtonRemoveTractor;
|
||||||
private Button ButtonAddTractor;
|
private Button ButtonAddTractor;
|
||||||
private PictureBox pictureBoxCollections;
|
private PictureBox pictureBoxCollections;
|
||||||
private MaskedTextBox maskedTextBoxNumber;
|
private MaskedTextBox maskedTextBoxNumber;
|
||||||
|
private GroupBox groupBox1;
|
||||||
|
private TextBox textBoxStorageName;
|
||||||
|
private BindingSource bindingSource1;
|
||||||
|
private BindingSource bindingSource2;
|
||||||
|
private ListBox listBoxStorage;
|
||||||
|
private Button ButtonAddObject;
|
||||||
|
private Button ButtonRemoveObject;
|
||||||
|
private GroupBox Instruments;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,29 +1,79 @@
|
|||||||
using Bulldozer;
|
using Bulldozer;
|
||||||
using ProjectBulldozer.Drawning;
|
|
||||||
using ProjectBulldozer.Generics;
|
using ProjectBulldozer.Generics;
|
||||||
using ProjectBulldozer.MovementStrategy;
|
|
||||||
namespace ProjectBulldozer
|
namespace ProjectBulldozer
|
||||||
{
|
{
|
||||||
public partial class FormTractorCollections : Form
|
public partial class FormTractorCollections : Form
|
||||||
{
|
{
|
||||||
private readonly TractorGenericCollection<DrawingTractor, DrawingObjectTractor> _Tractors;
|
private readonly TractorGenericStorage _storage;
|
||||||
|
//private readonly TractorGenericCollection<DrawingTractor, DrawingObjectTractor> _Tractors;
|
||||||
public FormTractorCollections()
|
public FormTractorCollections()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
_Tractors = new TractorGenericCollection<DrawingTractor, DrawingObjectTractor>(pictureBoxCollections.Width,
|
_storage = new TractorGenericStorage(pictureBoxCollections.Width, pictureBoxCollections.Height);
|
||||||
pictureBoxCollections.Height);
|
}
|
||||||
|
private void ReloadObjects()
|
||||||
|
{
|
||||||
|
int index = listBoxStorage.SelectedIndex;
|
||||||
|
|
||||||
|
listBoxStorage.Items.Clear();
|
||||||
|
for (int i = 0; i < _storage.Keys.Count; i++)
|
||||||
|
{
|
||||||
|
listBoxStorage.Items.Add(_storage.Keys[i]);
|
||||||
|
}
|
||||||
|
if (listBoxStorage.Items.Count > 0 && (index == -1 || index >= listBoxStorage.Items.Count))
|
||||||
|
{
|
||||||
|
listBoxStorage.SelectedIndex = 0;
|
||||||
|
}
|
||||||
|
else if (listBoxStorage.Items.Count > 0 && index > -1 && index < listBoxStorage.Items.Count)
|
||||||
|
{
|
||||||
|
listBoxStorage.SelectedIndex = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ButtonAddObject_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(textBoxStorageName.Text))
|
||||||
|
{
|
||||||
|
MessageBox.Show("Не всё заполнено", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_storage.AddSet(textBoxStorageName.Text);
|
||||||
|
ReloadObjects();
|
||||||
|
}
|
||||||
|
private void listBoxStorage_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
pictureBoxCollections.Image = _storage[listBoxStorage.SelectedItem?.ToString() ?? string.Empty]?.ShowTractors();
|
||||||
|
}
|
||||||
|
private void ButtonRemoveObject_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (listBoxStorage.SelectedIndex == -1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (MessageBox.Show($"Удалить объект {listBoxStorage.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo,
|
||||||
|
MessageBoxIcon.Question) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
_storage.DelSet(listBoxStorage.SelectedItem.ToString() ?? string.Empty);
|
||||||
|
ReloadObjects();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private void ButtonAddTractor_Click(object sender, EventArgs e)
|
private void ButtonAddTractor_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (_Tractors == null) return;
|
|
||||||
|
if (listBoxStorage.SelectedIndex == -1) return;
|
||||||
|
|
||||||
|
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
FormBulldozer form = new();
|
FormBulldozer form = new();
|
||||||
if (form.ShowDialog() == DialogResult.OK)
|
if (form.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
//проверяем, удалось ли нам загрузить объект
|
//проверяем, удалось ли нам загрузить объект
|
||||||
if (_Tractors + form.SelectedTractor != -1)
|
if (obj + form.SelectedTractor > -1)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект добавлен");
|
MessageBox.Show("Объект добавлен");
|
||||||
pictureBoxCollections.Image = _Tractors.ShowTractors();
|
pictureBoxCollections.Image = obj.ShowTractors();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -33,15 +83,22 @@ namespace ProjectBulldozer
|
|||||||
}
|
}
|
||||||
private void ButtonRemoveTractor_Click(object sender, EventArgs e)
|
private void ButtonRemoveTractor_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
if (listBoxStorage.SelectedIndex == -1) return;
|
||||||
|
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int pos = Convert.ToInt32(maskedTextBoxNumber.Text);
|
int pos = Convert.ToInt32(maskedTextBoxNumber.Text);
|
||||||
if (_Tractors - pos != null)
|
if (obj - pos != null)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект удален");
|
MessageBox.Show("Объект удален");
|
||||||
pictureBoxCollections.Image = _Tractors.ShowTractors();
|
pictureBoxCollections.Image = obj.ShowTractors();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -50,7 +107,17 @@ namespace ProjectBulldozer
|
|||||||
}
|
}
|
||||||
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
pictureBoxCollections.Image = _Tractors.ShowTractors();
|
if (listBoxStorage.SelectedIndex == -1) return;
|
||||||
|
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pictureBoxCollections.Image = obj.ShowTractors();
|
||||||
|
}
|
||||||
|
private void textBoxStorageName_TextChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user