QTfrontend/selectWeapon.cpp
changeset 4412 c9a78ba03679
parent 3697 d5b30d6373fc
child 4416 29d2d1548387
equal deleted inserted replaced
4411:79fbc444584c 4412:c9a78ba03679
    38     int y = (num-((ammo.height()/32)*x))*32;
    38     int y = (num-((ammo.height()/32)*x))*32;
    39     x*=32;
    39     x*=32;
    40     return ammo.copy(x, y, 32, 32);
    40     return ammo.copy(x, y, 32, 32);
    41 }
    41 }
    42 
    42 
    43 SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent) :
    43 SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QImage imagegrey, QWidget* parent) :
    44     QWidget(parent)
    44     QWidget(parent)
    45 {
    45 {
    46     QHBoxLayout* hbLayout = new QHBoxLayout(this);
    46     QHBoxLayout* hbLayout = new QHBoxLayout(this);
    47     hbLayout->setSpacing(1);
    47     hbLayout->setSpacing(1);
    48     hbLayout->setMargin(1);
    48     hbLayout->setMargin(1);
    51     lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum)));
    51     lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum)));
    52     lbl->setMaximumWidth(30);
    52     lbl->setMaximumWidth(30);
    53     lbl->setGeometry(0, 0, 30, 30);
    53     lbl->setGeometry(0, 0, 30, 30);
    54     hbLayout->addWidget(lbl);
    54     hbLayout->addWidget(lbl);
    55 
    55 
    56     item = new WeaponItem(image, this);
    56     item = new WeaponItem(image, imagegrey, this);
    57     item->setItemsNum(wNum);
    57     item->setItemsNum(wNum);
    58     item->setInfinityState(allowInfinite);
    58     item->setInfinityState(allowInfinite);
    59     hbLayout->addWidget(item);
    59     hbLayout->addWidget(item);
    60 
    60 
    61     hbLayout->setStretchFactor(lbl, 1);
    61     hbLayout->setStretchFactor(lbl, 1);
    70 }
    70 }
    71 
    71 
    72 unsigned char SelWeaponItem::getItemsNum() const
    72 unsigned char SelWeaponItem::getItemsNum() const
    73 {
    73 {
    74     return item->getItemsNum();
    74     return item->getItemsNum();
       
    75 }
       
    76 
       
    77 void SelWeaponItem::setEnabled(bool value)
       
    78 {
       
    79     item->setEnabled(value);
    75 }
    80 }
    76 
    81 
    77 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) :
    82 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) :
    78   QFrame(parent),
    83   QFrame(parent),
    79   m_numItems(numItems)
    84   m_numItems(numItems)
   122     int j = -1;
   127     int j = -1;
   123     int i = 0, k = 0;
   128     int i = 0, k = 0;
   124     for(; i < m_numItems; ++i) {
   129     for(; i < m_numItems; ++i) {
   125         if (i == 6) continue;
   130         if (i == 6) continue;
   126         if (k % 4 == 0) ++j;
   131         if (k % 4 == 0) ++j;
   127         SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), this);
   132         SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this);
   128         weaponItems[i].append(swi);
   133         weaponItems[i].append(swi);
   129         p1Layout->addWidget(swi, j, k % 4);
   134         p1Layout->addWidget(swi, j, k % 4);
   130 
   135 
   131         SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), this);
   136         SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), QImage(":/res/ammopicboxgrey.png"), this);
   132         weaponItems[i].append(pwi);
   137         weaponItems[i].append(pwi);
   133         p2Layout->addWidget(pwi, j, k % 4);
   138         p2Layout->addWidget(pwi, j, k % 4);
   134 
   139 
   135         SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), this);
   140         SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), QImage(":/res/ammopicdelaygrey.png"), this);
   136         weaponItems[i].append(dwi);
   141         weaponItems[i].append(dwi);
   137         p3Layout->addWidget(dwi, j, k % 4);
   142         p3Layout->addWidget(dwi, j, k % 4);
   138 
   143 
   139         SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), this);
   144         SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this);
   140         weaponItems[i].append(awi);
   145         weaponItems[i].append(awi);
   141         p4Layout->addWidget(awi, j, k % 4);
   146         p4Layout->addWidget(awi, j, k % 4);
   142 
   147 
   143         ++k;
   148         ++k;
   144     }
   149     }
   148     pageLayout->addWidget(m_name, i, 0, 1, 5);
   153     pageLayout->addWidget(m_name, i, 0, 1, 5);
   149 }
   154 }
   150 
   155 
   151 void SelWeaponWidget::setWeapons(const QString& ammo)
   156 void SelWeaponWidget::setWeapons(const QString& ammo)
   152 {
   157 {
       
   158     bool enable = true;
       
   159     for(int i = 0; i < cDefaultAmmos.size(); i++)
       
   160         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
       
   161             enable = false;
       
   162         }
   153     for(int i = 0; i < m_numItems; ++i) {
   163     for(int i = 0; i < m_numItems; ++i) {
   154         twi::iterator it = weaponItems.find(i);
   164         twi::iterator it = weaponItems.find(i);
   155         if (it == weaponItems.end()) continue;
   165         if (it == weaponItems.end()) continue;
   156         it.value()[0]->setItemsNum(ammo[i].digitValue());
   166         it.value()[0]->setItemsNum(ammo[i].digitValue());
   157         it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
   167         it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
   158         it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
   168         it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
   159         it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue());
   169         it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue());
   160     }
   170         it.value()[0]->setEnabled(enable);
   161     update();
   171         it.value()[1]->setEnabled(enable);
       
   172         it.value()[2]->setEnabled(enable);
       
   173         it.value()[3]->setEnabled(enable);
       
   174     }
       
   175     m_name->setEnabled(enable);
   162 }
   176 }
   163 
   177 
   164 void SelWeaponWidget::setDefault()
   178 void SelWeaponWidget::setDefault()
   165 {
   179 {
       
   180     for(int i = 0; i < cDefaultAmmos.size(); i++)
       
   181         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
       
   182             return;
       
   183         }
   166     setWeapons(*cDefaultAmmoStore);
   184     setWeapons(*cDefaultAmmoStore);
   167 }
   185 }
   168 
   186 
   169 void SelWeaponWidget::save()
   187 void SelWeaponWidget::save()
   170 {
   188 {
   213 
   231 
   214 void SelWeaponWidget::deleteWeaponsName()
   232 void SelWeaponWidget::deleteWeaponsName()
   215 {
   233 {
   216     if (curWeaponsName == "") return;
   234     if (curWeaponsName == "") return;
   217 
   235 
   218     if (curWeaponsName == "Default") {
   236     for(int i = 0; i < cDefaultAmmos.size(); i++)
   219         QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set"));
   237         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
   220         impossible.exec();
   238             QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set '%1'!").arg(cDefaultAmmos[i].first));
   221         return;
   239             return;
   222     }
   240         }
   223 
   241 
   224     QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
   242     QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
   225 
   243 
   226     if (reallyDelete.exec() == QMessageBox::Ok) {
   244     if (reallyDelete.exec() == QMessageBox::Ok) {
   227         wconf->remove(curWeaponsName);
   245         wconf->remove(curWeaponsName);
   229     }
   247     }
   230 }
   248 }
   231 
   249 
   232 void SelWeaponWidget::setWeaponsName(const QString& name)
   250 void SelWeaponWidget::setWeaponsName(const QString& name)
   233 {
   251 {
       
   252     m_name->setText(name);
       
   253 
       
   254     curWeaponsName = name;
       
   255 
   234     if(name != "" && wconf->contains(name)) {
   256     if(name != "" && wconf->contains(name)) {
   235         setWeapons(wconf->value(name).toString());
   257         setWeapons(wconf->value(name).toString());
   236     }
   258     }
   237 
       
   238     curWeaponsName = name;
       
   239 
       
   240     m_name->setText(name);
       
   241 }
   259 }
   242 
   260 
   243 QStringList SelWeaponWidget::getWeaponNames() const
   261 QStringList SelWeaponWidget::getWeaponNames() const
   244 {
   262 {
   245     return wconf->allKeys();
   263     return wconf->allKeys();