Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
//#include "stdafx.h"#include "CommandSlots.h"#include "../../common/spknet.h"namespace PluginManager {void CommandSlots::updateCommands(){this->listView1->Items->Clear();this->listView1->Groups->Clear();CLinkList<SCommandSlot> list;if ( _pPackages->readCommands(0, list) ) {_updateCommands(list, this->listView1);_updateCommandConflicts(list, false);}list.clear(true);if ( _pPackages->readWingCommands(0, list) ) {_updateCommands(list, this->listView2);_updateCommandConflicts(list, true);}this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);this->listView2->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);this->listView3->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);}void CommandSlots::_updateCommands(CLinkList<SCommandSlot> &list, ListView ^listView){for(SCommandSlot *slot = list.First(); slot; slot = list.Next()) {System::String ^group = _commandType(slot->slot);ListViewGroup ^g = nullptr;for(int i = 0; i < listView->Groups->Count; i++) {if ( String::Compare(listView->Groups[i]->ToString(), group) == 0 ) {g = listView->Groups[i];break;}}if ( !g ) {g = gcnew ListViewGroup(group);}listView->Groups->Add(g);ListViewItem ^item = gcnew ListViewItem(Convert::ToString(slot->slot));item->SubItems->Add(_US(slot->name));item->SubItems->Add(_US(slot->package->GetFullPackageName(_pPackages->GetLanguage()).ToString()));item->SubItems->Add(_US(slot->shortName));item->SubItems->Add(_US(slot->info));item->SubItems->Add(_US(slot->id));item->Group = g;item->ImageIndex = _commandIcon(slot->slot);listView->Items->Add(item);}}void CommandSlots::_updateCommandConflicts(CLinkList<SCommandSlot> &list, bool bWing){for(SCommandSlot *slot = list.First(); slot; slot = list.Next()) {System::String ^group = _commandSlot(slot->slot, bWing);ListViewGroup ^g = nullptr;int c = this->listView3->Groups->Count;for(int i = 0; i < this->listView3->Groups->Count; i++) {if ( String::Compare(this->listView3->Groups[i]->ToString(), group) == 0 ) {g = this->listView3->Groups[i];for(int j = 0; j < g->Items->Count; j++) {g->Items[j]->ImageIndex = 14;}break;}}bool bConflict = (g != nullptr);if ( !g ) {g = gcnew ListViewGroup(group);this->listView3->Groups->Add(g);}ListViewItem ^item = gcnew ListViewItem(_US(slot->package->GetFullPackageName(_pPackages->GetLanguage()).ToString()));item->SubItems->Add(_US(slot->name));item->SubItems->Add(_US(slot->info));item->ImageIndex = (bConflict) ? 14 : 13;item->Group = g;this->listView3->Items->Add(item);}}System::String ^CommandSlots::_commandSlot(int id, bool bWing){int type = id / 100;int s = id % 100;System::String ^slot = "COMMAND_";if ( bWing ) slot += "WING_";slot += _commandType(id)->ToUpper();slot += "_";if ( id >= 1400 )slot += Convert::ToString(id - 1400);elseslot += Convert::ToString(s);return slot;}System::String ^CommandSlots::_commandType(int id){int type = id / 100;switch(type) {case 2: return "Navigation";case 3: return "Fight";case 4: return "Trade";case 5: return "Special";case 6: return "Priacy";case 7: return "Custom";case 8: return "General";case 9: return "Turret";case 11: return "Station";case 12: return "Ship";case 13: return "Fleet";}return "Additional";}int CommandSlots::_commandIcon(int id){int type = id / 100;if ( type <= 13 ) return type - 2;return 12;}}