-
Notifications
You must be signed in to change notification settings - Fork 0
/
editTags.cs
130 lines (119 loc) · 4.87 KB
/
editTags.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
namespace Manga_Library_Manager
{
public partial class editTags : Form
{
private AutoCompleteStringCollection tagSearchAutocompleteStrings = new AutoCompleteStringCollection();
public editTags()
{
InitializeComponent();
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
}
private void editTags_Load(object sender, EventArgs e)
{
if (mainMenu.currentlySelectedBook.ContentRating != String.Empty)
ratingsDropdown.SelectedItem = mainMenu.currentlySelectedBook.ContentRating;
else
ratingsDropdown.SelectedIndex = 0;
tagsList.BeginUpdate();
tagsList.ItemCheck -= tagsList_ItemCheck;
foreach (string tag in mainMenu.uniqueTags)
tagsList.Items.Add(tag, mainMenu.currentlySelectedBook.Tags.Contains(tag));
tagsList.ItemCheck += tagsList_ItemCheck;
tagsList.EndUpdate();
tagSearchAutocompleteStrings.AddRange(mainMenu.uniqueTags.ToArray());
tagTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
tagTextBox.AutoCompleteCustomSource = tagSearchAutocompleteStrings;
}
private void tagsList_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
mainMenu.currentlySelectedBook.Tags.Add(tagsList.SelectedItem.ToString());
mainMenu.tagsUsage[tagsList.SelectedItem.ToString()]++;
}
else
{
mainMenu.currentlySelectedBook.Tags.Remove(tagsList.SelectedItem.ToString());
mainMenu.tagsUsage[tagsList.SelectedItem.ToString()]--;
}
}
private void tagTextBox_Leave(object sender, EventArgs e)
{
if (tagTextBox.Text == String.Empty)
return;
bool found = false;
foreach (string tag in tagsList.Items)
if (tagTextBox.Text.ToLower() == tag.ToLower())
{
tagsList.SelectedItem = tag;
found = true;
tagTextBox.Text = String.Empty;
break;
}
if (found == false)
tagsList.SelectedIndex = -1;
}
private void tagTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
this.ActiveControl = null;
}
private void newTagButton_Click(object sender, EventArgs e)
{
if (tagTextBox.Text == String.Empty)
return;
bool found = false;
foreach (string tag in tagsList.Items)
if (tagTextBox.Text.ToLower() == tag.ToLower())
{
found = true;
tagTextBox.Text = String.Empty;
break;
}
if (found == true)
return;
string newTag = tagTextBox.Text.Substring(0, 1).ToUpper() + tagTextBox.Text.Substring(1);
tagsList.ItemCheck -= tagsList_ItemCheck;
tagsList.Items.Add(newTag, true);
tagsList.ItemCheck += tagsList_ItemCheck;
tagSearchAutocompleteStrings.Add(newTag);
mainMenu.uniqueTags.Add(newTag);
mainMenu.tagsUsage[newTag] = 1;
mainMenu.currentlySelectedBook.Tags.Add(newTag);
tagTextBox.Text = String.Empty;
tagsList.SelectedIndex = tagsList.Items.Count - 1;
}
private void ratingsDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
mainMenu.currentlySelectedBook.ContentRating = ratingsDropdown.SelectedItem.ToString();
}
private void doneButton_Click(object sender, EventArgs e)
{
this.Close();
}
private void editTags_FormClosing(object sender, FormClosingEventArgs e)
{
List<string> tempTags = mainMenu.uniqueTags.ToList();
foreach (string tag in tempTags)
if (mainMenu.tagsUsage[tag] == 0)
{
mainMenu.uniqueTags.Remove(tag);
mainMenu.tagsUsage.Remove(tag);
}
}
private void tagsList_MouseDown(object sender, MouseEventArgs e)
{
tagsList.SelectedIndex = tagsList.IndexFromPoint(e.Location);
}
private void resetButton_Click(object sender, EventArgs e)
{
if (MessageBox.Show("This will resync the tags from the API.\nAre you sure?", "Resync tags", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
return;
mainMenu.resetTags = true;
this.Close();
}
}
}