QTfrontend/ui/widget/selectWeapon.cpp
changeset 6616 f77bb02b669f
parent 6479 4f08821cbff5
child 6700 e04da46ee43c
equal deleted inserted replaced
6615:65602f1ef0f8 6616:f77bb02b669f
    79 {
    79 {
    80     item->setEnabled(value);
    80     item->setEnabled(value);
    81 }
    81 }
    82 
    82 
    83 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) :
    83 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) :
    84   QFrame(parent),
    84     QFrame(parent),
    85   m_numItems(numItems)
    85     m_numItems(numItems)
    86 {
    86 {
    87     wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this);
    87     wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this);
    88 
    88 
    89     for(int i = 0; i < cDefaultAmmos.size(); ++i)
    89     for(int i = 0; i < cDefaultAmmos.size(); ++i)
    90         wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
    90         wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
   125     pageLayout->addWidget(tbw);
   125     pageLayout->addWidget(tbw);
   126 
   126 
   127 
   127 
   128     int j = -1;
   128     int j = -1;
   129     int i = 0, k = 0;
   129     int i = 0, k = 0;
   130     for(; i < m_numItems; ++i) {
   130     for(; i < m_numItems; ++i)
       
   131     {
   131         if (i == 6) continue;
   132         if (i == 6) continue;
   132         if (k % 4 == 0) ++j;
   133         if (k % 4 == 0) ++j;
   133         SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this);
   134         SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), QImage(":/res/ammopicgrey.png"), this);
   134         weaponItems[i].append(swi);
   135         weaponItems[i].append(swi);
   135         p1Layout->addWidget(swi, j, k % 4);
   136         p1Layout->addWidget(swi, j, k % 4);
   156 
   157 
   157 void SelWeaponWidget::setWeapons(const QString& ammo)
   158 void SelWeaponWidget::setWeapons(const QString& ammo)
   158 {
   159 {
   159     bool enable = true;
   160     bool enable = true;
   160     for(int i = 0; i < cDefaultAmmos.size(); i++)
   161     for(int i = 0; i < cDefaultAmmos.size(); i++)
   161         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
   162         if (!cDefaultAmmos[i].first.compare(m_name->text()))
       
   163         {
   162             enable = false;
   164             enable = false;
   163         }
   165         }
   164     for(int i = 0; i < m_numItems; ++i) {
   166     for(int i = 0; i < m_numItems; ++i)
       
   167     {
   165         twi::iterator it = weaponItems.find(i);
   168         twi::iterator it = weaponItems.find(i);
   166         if (it == weaponItems.end()) continue;
   169         if (it == weaponItems.end()) continue;
   167         it.value()[0]->setItemsNum(ammo[i].digitValue());
   170         it.value()[0]->setItemsNum(ammo[i].digitValue());
   168         it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
   171         it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
   169         it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
   172         it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
   177 }
   180 }
   178 
   181 
   179 void SelWeaponWidget::setDefault()
   182 void SelWeaponWidget::setDefault()
   180 {
   183 {
   181     for(int i = 0; i < cDefaultAmmos.size(); i++)
   184     for(int i = 0; i < cDefaultAmmos.size(); i++)
   182         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
   185         if (!cDefaultAmmos[i].first.compare(m_name->text()))
       
   186         {
   183             return;
   187             return;
   184         }
   188         }
   185     setWeapons(*cDefaultAmmoStore);
   189     setWeapons(*cDefaultAmmoStore);
   186 }
   190 }
   187 
   191 
   188 void SelWeaponWidget::save()
   192 void SelWeaponWidget::save()
   189 {
   193 {
   190     for(int i = 0; i < cDefaultAmmos.size(); i++)
   194     for(int i = 0; i < cDefaultAmmos.size(); i++)
   191         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
   195         if (!cDefaultAmmos[i].first.compare(m_name->text()))
       
   196         {
   192             QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not overwrite default weapon set '%1'!").arg(cDefaultAmmos[i].first));
   197             QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not overwrite default weapon set '%1'!").arg(cDefaultAmmos[i].first));
   193             return;
   198             return;
   194         }
   199         }
   195 
   200 
   196     if (m_name->text() == "") return;
   201     if (m_name->text() == "") return;
   198     QString state1;
   203     QString state1;
   199     QString state2;
   204     QString state2;
   200     QString state3;
   205     QString state3;
   201     QString state4;
   206     QString state4;
   202 
   207 
   203     for(int i = 0; i < m_numItems; ++i) {
   208     for(int i = 0; i < m_numItems; ++i)
       
   209     {
   204         twi::const_iterator it = weaponItems.find(i);
   210         twi::const_iterator it = weaponItems.find(i);
   205         int num = it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum(); // 9 is for 'skip turn'
   211         int num = it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum(); // 9 is for 'skip turn'
   206         state1.append(QString::number(num));
   212         state1.append(QString::number(num));
   207         int prob = it == weaponItems.end() ? 0 : it.value()[1]->getItemsNum();
   213         int prob = it == weaponItems.end() ? 0 : it.value()[1]->getItemsNum();
   208         state2.append(QString::number(prob));
   214         state2.append(QString::number(prob));
   209         int del = it == weaponItems.end() ? 0 : it.value()[2]->getItemsNum();
   215         int del = it == weaponItems.end() ? 0 : it.value()[2]->getItemsNum();
   210         state3.append(QString::number(del));
   216         state3.append(QString::number(del));
   211         int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum();
   217         int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum();
   212         state4.append(QString::number(am));
   218         state4.append(QString::number(am));
   213     }
   219     }
   214     if (curWeaponsName != "") {
   220     if (curWeaponsName != "")
       
   221     {
   215         // remove old entry
   222         // remove old entry
   216         wconf->remove(curWeaponsName);
   223         wconf->remove(curWeaponsName);
   217     }
   224     }
   218     wconf->setValue(m_name->text(), state1 + state2 + state3 + state4);
   225     wconf->setValue(m_name->text(), state1 + state2 + state3 + state4);
   219     emit weaponsChanged();
   226     emit weaponsChanged();
   233 void SelWeaponWidget::deleteWeaponsName()
   240 void SelWeaponWidget::deleteWeaponsName()
   234 {
   241 {
   235     if (curWeaponsName == "") return;
   242     if (curWeaponsName == "") return;
   236 
   243 
   237     for(int i = 0; i < cDefaultAmmos.size(); i++)
   244     for(int i = 0; i < cDefaultAmmos.size(); i++)
   238         if (!cDefaultAmmos[i].first.compare(m_name->text())) {
   245         if (!cDefaultAmmos[i].first.compare(m_name->text()))
       
   246         {
   239             QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set '%1'!").arg(cDefaultAmmos[i].first));
   247             QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set '%1'!").arg(cDefaultAmmos[i].first));
   240             return;
   248             return;
   241         }
   249         }
   242 
   250 
   243     QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
   251     QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
   244 
   252 
   245     if (reallyDelete.exec() == QMessageBox::Ok) {
   253     if (reallyDelete.exec() == QMessageBox::Ok)
       
   254     {
   246         wconf->remove(curWeaponsName);
   255         wconf->remove(curWeaponsName);
   247         emit weaponsDeleted();
   256         emit weaponsDeleted();
   248     }
   257     }
   249 }
   258 }
   250 
   259 
   251 void SelWeaponWidget::newWeaponsName()
   260 void SelWeaponWidget::newWeaponsName()
   252 {
   261 {
   253     QString newName = tr("new");
   262     QString newName = tr("new");
   254     if(wconf->contains(newName)) {
   263     if(wconf->contains(newName))
       
   264     {
   255         //name already used -> look for an appropriate name:
   265         //name already used -> look for an appropriate name:
   256         int i=2;
   266         int i=2;
   257         while(wconf->contains(newName = tr("new")+QString::number(i++))) ;
   267         while(wconf->contains(newName = tr("new")+QString::number(i++))) ;
   258     }
   268     }
   259     setWeaponsName(newName);
   269     setWeaponsName(newName);
   263 {
   273 {
   264     m_name->setText(name);
   274     m_name->setText(name);
   265 
   275 
   266     curWeaponsName = name;
   276     curWeaponsName = name;
   267 
   277 
   268     if(name != "" && wconf->contains(name)) {
   278     if(name != "" && wconf->contains(name))
       
   279     {
   269         setWeapons(wconf->value(name).toString());
   280         setWeapons(wconf->value(name).toString());
   270     } else {
   281     }
       
   282     else
       
   283     {
   271         setWeapons(*cDefaultAmmoStore);
   284         setWeapons(*cDefaultAmmoStore);
   272     }
   285     }
   273 }
   286 }
   274 
   287 
   275 QStringList SelWeaponWidget::getWeaponNames() const
   288 QStringList SelWeaponWidget::getWeaponNames() const
   277     return wconf->allKeys();
   290     return wconf->allKeys();
   278 }
   291 }
   279 
   292 
   280 void SelWeaponWidget::copy()
   293 void SelWeaponWidget::copy()
   281 {
   294 {
   282     if(wconf->contains(curWeaponsName)) {
   295     if(wconf->contains(curWeaponsName))
       
   296     {
   283         QString ammo = getWeaponsString(curWeaponsName);
   297         QString ammo = getWeaponsString(curWeaponsName);
   284         QString newName = tr("copy of") + " " + curWeaponsName;
   298         QString newName = tr("copy of") + " " + curWeaponsName;
   285         if(wconf->contains(newName)) {
   299         if(wconf->contains(newName))
       
   300         {
   286             //name already used -> look for an appropriate name:
   301             //name already used -> look for an appropriate name:
   287             int i=2;
   302             int i=2;
   288             while(wconf->contains(newName = tr("copy of") + " " + curWeaponsName+QString::number(i++))) ;
   303             while(wconf->contains(newName = tr("copy of") + " " + curWeaponsName+QString::number(i++))) ;
   289         }
   304         }
   290         setWeaponsName(newName);
   305         setWeaponsName(newName);