Subversion Repositories spk

Rev

Rev 222 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
88 cycrow 1
//#include "stdafx.h"
2
#include "EditWares.h"
3
 
4
#include "../../common/spknet.h"
5
#include "EditPrice.h"
6
 
7
namespace PluginManager {
8
 
9
	void EditWares::loadWares()
10
	{
11
		this->listView1->Items->Clear();
12
		this->listView1->Groups->Clear();
13
 
14
		for (CBaseFile *package = _pPackages->FirstPackage(); package; package = _pPackages->NextPackage()) {
15
			if ( !package->IsEnabled() ) continue;
16
 
17
			CLinkList<SWareEntry> list;
18
			if ( package->readWares(_pPackages->GetLanguage(), list, _pPackages->empWaresForGame()) ) {
19
 
170 cycrow 20
				ListViewGroup ^group = gcnew ListViewGroup(_US(package->getFullPackageName(_pPackages->GetLanguage())), HorizontalAlignment::Left);
88 cycrow 21
				this->listView1->Groups->Add(group);
22
 
23
				for(CListNode<SWareEntry> *node = list.Front(); node; node = node->next()) {
24
					ListViewItem ^item = gcnew ListViewItem(_US(node->Data()->name));
25
					item->UseItemStyleForSubItems = false;
26
 
27
					int price = 0;
28
					bool notoOverride = false;
29
					int noto = 0;
30
 
31
					switch(node->Data()->type) {
32
						case Ware_EMP:
33
							price = _pPackages->empOveridePrice(node->Data()->position);
34
							notoOverride = _pPackages->empOverideNoto(node->Data()->position, &noto);
35
							item->SubItems->Add("EMP");
36
							break;
37
 
38
						case Ware_BuiltIn:
39
							item->SubItems->Add("Built-In");
40
							price = _pPackages->builtInWareOveridePrice(node->Data()->position);
41
							notoOverride = _pPackages->builtInWareOverideNoto(node->Data()->position, &noto);
42
							break;
43
 
44
						case Ware_Custom:
45
							price = _pPackages->customWareOveridePrice(node->Data()->id);
46
							notoOverride = _pPackages->customWareOverideNoto(node->Data()->id, &noto);
47
							item->SubItems->Add("Custom");
48
							break;
49
 
50
						default:
51
							item->SubItems->Add("");
52
					}
53
 
54
					bool priceOverride = true;
55
					if ( !price ) {
56
						price = node->Data()->relval;
57
						priceOverride = false;
58
					}
59
					item->SubItems->Add(_price(price));
60
					item->SubItems->Add(_noto((notoOverride) ? noto :  node->Data()->notority));
61
					item->SubItems->Add(_US(node->Data()->description));
62
					item->SubItems->Add(_US(node->Data()->id));
63
					item->SubItems->Add(Convert::ToString(node->Data()->type));
64
					item->SubItems->Add(Convert::ToString(price));
65
					item->ImageIndex = 0;
66
					item->Group = group;
67
					item->Tag = node->Data()->position;
68
					this->listView1->Items->Add(item);
69
 
70
					item->SubItems[2]->ForeColor = (priceOverride) ? Color::Green : Color::Black;
71
					item->SubItems[3]->ForeColor = (notoOverride) ? Color::Green : Color::Black;
72
				}
73
			}
74
		}
75
 
76
		this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
77
		this->listView1->Columns[6]->Width = 0;
78
		this->listView1->Columns[7]->Width = 0;
79
	}
80
 
89 cycrow 81
	void EditWares::updateConflicts()
82
	{
83
		this->listView2->Items->Clear();
84
		this->listView2->Groups->Clear();
85
 
86
		CLinkList<SWareEntry> list;
87
 
88
		if ( _pPackages->readWares(0, list) ) {
89
			for(SWareEntry *ware = list.First(); ware; ware = list.Next()) {
90
				System::String ^group = _US(ware->id);
91
				switch(ware->type) {
92
					case Ware_EMP:
93
						group += " (EMP)";
94
						break;
95
					case Ware_BuiltIn:
96
						group += " (BuiltIn)";
97
						break;
98
					case Ware_Custom:
99
						group += " (Custom)";
100
						break;
101
				}
102
 
103
				// find if the group has already been added
104
				ListViewGroup ^g = nullptr;
105
				int c = this->listView2->Groups->Count;
106
				for(int i = 0; i < this->listView2->Groups->Count; i++) {
107
					if ( String::Compare(this->listView2->Groups[i]->ToString(), group) == 0 ) {
108
						g = this->listView2->Groups[i];
109
						for(int j = 0; j < g->Items->Count; j++) {
110
							g->Items[j]->ImageIndex = 3;
111
						}
112
						break;
113
					}
114
				}
115
 
116
				// conflicts!!
117
				bool bConflict = (g != nullptr);
118
				if ( !g ) {
119
					g = gcnew ListViewGroup(group);
120
					this->listView2->Groups->Add(g);
121
				}
122
 
170 cycrow 123
				ListViewItem ^item = gcnew ListViewItem(_US(ware->package->getFullPackageName(_pPackages->GetLanguage())));
89 cycrow 124
				item->SubItems->Add(_US(ware->name));
125
				item->SubItems->Add(_US(ware->description));
126
				item->ImageIndex = (bConflict) ? 3 : 2;
127
				item->Group = g;
128
				this->listView2->Items->Add(item);
129
			}
130
		}
131
 
132
		this->listView2->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
133
	}
134
 
88 cycrow 135
	String ^EditWares::_price(int iPrice)
136
	{
137
		return "€" + String::Format("{0:#,##0}", (iPrice * 28) * 1.00268550164);
138
	}
139
 
140
	String ^EditWares::_noto(int iNoto)
141
	{
142
		return String::Format("{0:#,##0}", iNoto);
143
	}
144
 
145
	void EditWares::editPrice()
146
	{
147
		if ( !this->listView1->SelectedItems->Count ) return;
148
 
149
		ListViewItem ^item = this->listView1->SelectedItems[0];
150
 
151
		EditPrice ^priceDlg = gcnew EditPrice(Convert::ToInt32(item->SubItems[7]->Text));
152
 
153
		if ( priceDlg->ShowDialog(this) == System::Windows::Forms::DialogResult::OK ) {
154
			enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
155
			int position = Convert::ToInt32(item->Tag);
156
 
157
			int price = priceDlg->price();
158
 
159
			switch(type) {
160
				case Ware_EMP:
161
					_pPackages->addEMPPriceOverride(position, price);
162
					break;
163
				case Ware_BuiltIn:
164
					_pPackages->addBuiltInWarePriceOverride(position, price);
165
					break;
166
				case Ware_Custom:
224 cycrow 167
					_pPackages->addCustomWarePriceOverride(_WS(item->SubItems[5]->Text), price);
88 cycrow 168
					break;
169
			}
170
 
171
			item->SubItems[2]->ForeColor = Color::Green;
172
			item->SubItems[2]->Text = _price(price);
173
		}
174
	}
175
 
176
	void EditWares::editNoto(int iNoto)
177
	{
178
		if ( !this->listView1->SelectedItems->Count ) return;
179
 
180
		ListViewItem ^item = this->listView1->SelectedItems[0];
181
 
182
		enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
183
		int position = Convert::ToInt32(item->Tag);
184
 
185
		switch(type) {
186
			case Ware_EMP:
187
				_pPackages->addEMPNotoOverride(position, iNoto);
188
				break;
189
			case Ware_BuiltIn:
190
				_pPackages->addBuiltInWareNotoOverride(position, iNoto);
191
				break;
192
			case Ware_Custom:
224 cycrow 193
				_pPackages->addCustomWareNotoOverride(_WS(item->SubItems[5]->Text), iNoto);
88 cycrow 194
				break;
195
		}
196
 
197
		item->SubItems[3]->ForeColor = Color::Green;
198
		item->SubItems[3]->Text = _noto(iNoto);
199
	}
200
 
201
	void EditWares::reset()
202
	{
203
		if ( !this->listView1->SelectedItems->Count ) return;
204
 
205
		ListViewItem ^item = this->listView1->SelectedItems[0];
206
 
207
		enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);
208
		int position = Convert::ToInt32(item->Tag);
209
 
210
		switch(type) {
211
			case Ware_EMP:
212
				_pPackages->removeEmpOverride(position);
213
				break;
214
			case Ware_BuiltIn:
215
				_pPackages->removeBuiltinWareOverride(position);
216
				break;
217
			case Ware_Custom:
224 cycrow 218
				_pPackages->removeCustomWareOverride(_WS(item->SubItems[5]->Text));
88 cycrow 219
				break;
220
		}
221
 
222
		this->loadWares();
223
	}
224
}