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); |