Rev 88 | Rev 222 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
//#include "stdafx.h"#include "EditWares.h"#include "Utils/StringList.h"#include "../../common/spknet.h"#include "EditPrice.h"namespace PluginManager {void EditWares::loadWares(){this->listView1->Items->Clear();this->listView1->Groups->Clear();for (CBaseFile *package = _pPackages->FirstPackage(); package; package = _pPackages->NextPackage()) {if ( !package->IsEnabled() ) continue;CLinkList<SWareEntry> list;if ( package->readWares(_pPackages->GetLanguage(), list, _pPackages->empWaresForGame()) ) {ListViewGroup ^group = gcnew ListViewGroup(_US(package->GetFullPackageName(_pPackages->GetLanguage()).ToString()), HorizontalAlignment::Left);this->listView1->Groups->Add(group);for(CListNode<SWareEntry> *node = list.Front(); node; node = node->next()) {ListViewItem ^item = gcnew ListViewItem(_US(node->Data()->name));item->UseItemStyleForSubItems = false;int price = 0;bool notoOverride = false;int noto = 0;switch(node->Data()->type) {case Ware_EMP:price = _pPackages->empOveridePrice(node->Data()->position);notoOverride = _pPackages->empOverideNoto(node->Data()->position, ¬o);item->SubItems->Add("EMP");break;case Ware_BuiltIn:item->SubItems->Add("Built-In");price = _pPackages->builtInWareOveridePrice(node->Data()->position);notoOverride = _pPackages->builtInWareOverideNoto(node->Data()->position, ¬o);break;case Ware_Custom:price = _pPackages->customWareOveridePrice(node->Data()->id);notoOverride = _pPackages->customWareOverideNoto(node->Data()->id, ¬o);item->SubItems->Add("Custom");break;default:item->SubItems->Add("");}bool priceOverride = true;if ( !price ) {price = node->Data()->relval;priceOverride = false;}item->SubItems->Add(_price(price));item->SubItems->Add(_noto((notoOverride) ? noto : node->Data()->notority));item->SubItems->Add(_US(node->Data()->description));item->SubItems->Add(_US(node->Data()->id));item->SubItems->Add(Convert::ToString(node->Data()->type));item->SubItems->Add(Convert::ToString(price));item->ImageIndex = 0;item->Group = group;item->Tag = node->Data()->position;this->listView1->Items->Add(item);item->SubItems[2]->ForeColor = (priceOverride) ? Color::Green : Color::Black;item->SubItems[3]->ForeColor = (notoOverride) ? Color::Green : Color::Black;}}}this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);this->listView1->Columns[6]->Width = 0;this->listView1->Columns[7]->Width = 0;}void EditWares::updateConflicts(){this->listView2->Items->Clear();this->listView2->Groups->Clear();CLinkList<SWareEntry> list;if ( _pPackages->readWares(0, list) ) {for(SWareEntry *ware = list.First(); ware; ware = list.Next()) {System::String ^group = _US(ware->id);switch(ware->type) {case Ware_EMP:group += " (EMP)";break;case Ware_BuiltIn:group += " (BuiltIn)";break;case Ware_Custom:group += " (Custom)";break;}// find if the group has already been addedListViewGroup ^g = nullptr;int c = this->listView2->Groups->Count;for(int i = 0; i < this->listView2->Groups->Count; i++) {if ( String::Compare(this->listView2->Groups[i]->ToString(), group) == 0 ) {g = this->listView2->Groups[i];for(int j = 0; j < g->Items->Count; j++) {g->Items[j]->ImageIndex = 3;}break;}}// conflicts!!bool bConflict = (g != nullptr);if ( !g ) {g = gcnew ListViewGroup(group);this->listView2->Groups->Add(g);}ListViewItem ^item = gcnew ListViewItem(_US(ware->package->GetFullPackageName(_pPackages->GetLanguage()).ToString()));item->SubItems->Add(_US(ware->name));item->SubItems->Add(_US(ware->description));item->ImageIndex = (bConflict) ? 3 : 2;item->Group = g;this->listView2->Items->Add(item);}}this->listView2->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);}String ^EditWares::_price(int iPrice){return "" + String::Format("{0:#,##0}", (iPrice * 28) * 1.00268550164);}String ^EditWares::_noto(int iNoto){return String::Format("{0:#,##0}", iNoto);}void EditWares::editPrice(){if ( !this->listView1->SelectedItems->Count ) return;ListViewItem ^item = this->listView1->SelectedItems[0];EditPrice ^priceDlg = gcnew EditPrice(Convert::ToInt32(item->SubItems[7]->Text));if ( priceDlg->ShowDialog(this) == System::Windows::Forms::DialogResult::OK ) {enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);int position = Convert::ToInt32(item->Tag);int price = priceDlg->price();switch(type) {case Ware_EMP:_pPackages->addEMPPriceOverride(position, price);break;case Ware_BuiltIn:_pPackages->addBuiltInWarePriceOverride(position, price);break;case Ware_Custom:_pPackages->addCustomWarePriceOverride(_S(item->SubItems[5]->Text), price);break;}item->SubItems[2]->ForeColor = Color::Green;item->SubItems[2]->Text = _price(price);}}void EditWares::editNoto(int iNoto){if ( !this->listView1->SelectedItems->Count ) return;ListViewItem ^item = this->listView1->SelectedItems[0];enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);int position = Convert::ToInt32(item->Tag);switch(type) {case Ware_EMP:_pPackages->addEMPNotoOverride(position, iNoto);break;case Ware_BuiltIn:_pPackages->addBuiltInWareNotoOverride(position, iNoto);break;case Ware_Custom:_pPackages->addCustomWareNotoOverride(_S(item->SubItems[5]->Text), iNoto);break;}item->SubItems[3]->ForeColor = Color::Green;item->SubItems[3]->Text = _noto(iNoto);}void EditWares::reset(){if ( !this->listView1->SelectedItems->Count ) return;ListViewItem ^item = this->listView1->SelectedItems[0];enum WareTypes type = (enum WareTypes)Convert::ToInt32(item->SubItems[6]->Text);int position = Convert::ToInt32(item->Tag);switch(type) {case Ware_EMP:_pPackages->removeEmpOverride(position);break;case Ware_BuiltIn:_pPackages->removeBuiltinWareOverride(position);break;case Ware_Custom:_pPackages->removeCustomWareOverride(_S(item->SubItems[5]->Text));break;}this->loadWares();}}