Crossfire Server, Branch 1.12
R12190
|
00001 #include <QtGui> 00002 00003 extern "C" { 00004 #include "global.h" 00005 #include "artifact.h" 00006 } 00007 00008 #include "CREArtifactPanel.h" 00009 #include "CREUtils.h" 00010 00011 CREArtifactPanel::CREArtifactPanel() 00012 { 00013 myArtifact = NULL; 00014 00015 QGridLayout* layout = new QGridLayout(this); 00016 00017 QLabel* label = new QLabel(this); 00018 label->setText("Name:"); 00019 layout->addWidget(label, 1, 1); 00020 myName = new QLineEdit(this); 00021 layout->addWidget(myName, 1, 2); 00022 00023 label = new QLabel(this); 00024 label->setText("Chance:"); 00025 layout->addWidget(label, 2, 1); 00026 myChance = new QLineEdit(this); 00027 layout->addWidget(myChance, 2, 2); 00028 00029 label = new QLabel(this); 00030 label->setText("Type:"); 00031 layout->addWidget(label, 3, 1); 00032 myType = new QLineEdit(this); 00033 layout->addWidget(myType, 3, 2); 00034 00035 myArchetypes = new QTreeWidget(this); 00036 layout->addWidget(myArchetypes, 4, 1, 1, 2); 00037 myArchetypes->setHeaderLabel("Allowed/forbidden archetypes"); 00038 myArchetypes->setIconSize(QSize(32, 32)); 00039 myArchetypes->setRootIsDecorated(false); 00040 } 00041 00042 void CREArtifactPanel::setArtifact(const artifact* artifact) 00043 { 00044 Q_ASSERT(artifact); 00045 myArtifact = artifact; 00046 00047 myName->setText(artifact->item->name); 00048 myChance->setText(QString::number(artifact->chance)); 00049 myType->setText(QString::number(artifact->item->type)); 00050 00051 const archt* arch; 00052 const char* name; 00053 QTreeWidgetItem* item; 00054 bool check; 00055 00056 myArchetypes->clear(); 00057 00058 for (const linked_char* allowed = artifact->allowed; allowed; allowed = allowed->next) 00059 { 00060 name = allowed->name; 00061 if (name[0] == '!') 00062 { 00063 name = name + 1; 00064 check = false; 00065 } 00066 else 00067 check = true; 00068 00069 arch = try_find_archetype(name); 00070 if (!arch) 00071 arch = find_archetype_by_object_name(name); 00072 00073 if (arch) 00074 { 00075 item = CREUtils::archetypeNode(arch, NULL); 00076 item->setCheckState(0, check ? Qt::Checked : Qt::Unchecked); 00077 myArchetypes->addTopLevelItem(item); 00078 } 00079 } 00080 }